|   站点首页   |   基础教程   |   好书推荐  设计实例   |  软件下载   |   电子基础  |   常用芯片  |  联系方式  |

您现在位于: → 源码下载

 

串口通讯实验

-------------------------------------------------------------------------------------------------------------------------------------

 

[实验要求]

由串口调试助手向单片机发送0FF,表示上位机需要联机信号,单片机发送 0FFH作为应答信号,如果接收到 数字 1~ n,表示相应的功能; 这里,如果收到 1 ,则单片机向计算机发送字符  'H'; 如果收到 2 ,则单片机向计算机发送字符  'e';如果收到其他的数据,则发送'J';

[实验目的]

学会用单片机与计算机之间通过串口通讯。

注意RS-232 是美国电子工业协会正式公布的串行总线标准,也是目前最常用的串行接口标准,用来实现计算机与计算机之间、计算机与外设之间的数据通讯。RS-232 串行接口总线适用于:设备之间的通讯距离不大于15m,传输速率最大为20kBpsRS-232 协议以-5V-15V 表示逻辑1;以+5V+15V 表示逻辑0。我们是用MAX232 芯片将RS232 电平转换为TTL 电平的。一个完整的RS-232 接口有22根线,采用标准的25 芯插头座。我们在这里使用的是简化的9 芯插头座。

注意我们在这里使用的晶振是11.0592M 的,而不是12M。因为波特率的设置需要11.0592M 的。

“串口调试助手V2.1.exe” 软件的使用很简单,只要将串口选择对,波特率设置正确,数据位为8 位。打开串口(如果关闭的话)。然后在发送区里输入要发送的数据,单击手动发送就将数据发送出去了。注意,如果选中‘十六进制发送’那么发送的数据是十六进制的,必须输入两位数据。如果没有选中,则发送的是ASCLL 码。

[硬件电路]

[源代码]

;联接好串口线

;然后打开串口调试软件,选择您连接的串口,设置好串口波特率

;然后发送数据给下面的机器,并接受下面发送上来的数据!

      org 00h

      jmp main

      org 23h                       ;串行中断入口地址

      jmp com_int                     ;串行中断服务程序

;***********  主程序开始    *******************

        org 30h

  main:  mov sp,#30h            ;设置堆栈

         lcall rest             ;初始化

         lcall comm             ;串口初始化

         jmp $                  ;原地等待

 

;  *************   初始化   *********************

   rest:      nop;

 

; **************  串口初始化   *****************

;设置串行口工作方式1,定时器1作为波特率发生器

;波特率设置为   2400  ;

 

comm:         mov tmod,#20h       ;设置定时器T1工作方式2

              mov tl1,#0f4h      ;定时器计数初值,波特率 2400

              mov th1,#0f4h          ;定时器重装值

              setb ea                ;允许总的中断

              setb es                ;允许串行中断

              mov pcon,#00h          ;波特率不倍增

              mov scon,#50h        ;设置串口工作方式1,REN =

;1 允许接收

              setb tr1               ;定时器开始工作

              ret                    ;返回

;***************  串口中断服务程序   ***********

;如果接收  0FF  表示上位机需要联机信号,单片机发送 0FFH

;作为应答信号,如果接收到 数字 1~ n,表示相应的功能;

这里,如果收到 1 ,则单片机向计算机发送字符  'H';

如果收到 2 ,则单片机向计算机发送字符  'e';

如果收到其他的数据,则发送    'J';

com_int:  clr es                        ;禁止串行中断

                clr ri                  ;清除接收标志位

                mov a,sbuf              ;从缓冲区取出数据

                mov p1,a

                mov dptr,#tab

                cjne a,#0ffh,in_1   ;检查数据

                mov sbuf,#255     ;收到联机信号,发送联机信号

                jnb ti,$                ;等待发送完毕

                clr ti                  ;清除发送标志

                setb es                 ;允许串行中断

                reti                    ;中断返回

      in_1: cjne a,#1H, in_2            ;如果收到1

                movc a,@a+dptr

                mov sbuf,a              ;发送 'h'

                jnb ti,$                ;等待发送完毕

                clr  ti                 ;清除发送中断标志

                setb es                 ;允许串行中断

                reti                    ;中断返回

      in_2: cjne a,#2,in_3              ;接收到  2

                movc a,@a+dptr

                mov sbuf,a              ;发送 'e'

                jnb ti,$                ;等待发送完毕

                clr  ti                 ;清除发送中断

                setb es                 ;允许串行中断

                reti                    ;中断返回

      in_3:     mov a,#03h

                movc a,@a+dptr

                mov sbuf,a              ;发送 'j'

                jnb ti,$                ;等待发送完毕

                clr ti                  ;清除发送中断标志

                setb es                 ;允许串行中断

                reti                    ;返回

tab:    db '2','h','e','j'

end

 

 

至此,本实验板例程讲解完毕,欢迎用户提出宝贵的意见,我争取把产品做得更好。

用户在使用的过程有技术疑问请与我联系。

 

本站部分软件资料来源于网络,如有涉及版权问题,请及时联系站长删除
594983616@qq.com  594983616