打印

RS-232接口

[复制链接]
1331|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
在很多需要需要提高串口通信距离的应用场合,RS232,可以很好地满足要求。
RS232的一个典型应用就是实现单片机与PC的串行通信,二者的电气连接就是基于RS232接口标准,下面给出了PC基于MAX232与单片机的串行通信接口电路设计。

单片机通过UART扩展RS-232通信接口程序设计主要利用单片机UART的工作方式2,通过查询接收中断位R1和发送完毕中断位TI实现数据的可靠传输。通信流程图如下

程序
*****************************************************************************
主程序设置UART工作模式,串口中断服务程序用于收发数据,如果接收 0FF 表示上位机需要联机信号,单片机发送 0FFH作为应答信号,如果接收到 数字 1~ n,表示相应的功能;这里,如果收到 1 ,则单片机向计算机发送字符 'h',如果收到 2 ,则单片机向计算机发送字符 'e';如果收到其他的数据,则发送 'j
****************************************************************************
ORG 0000H
LJMP  MAIN
ORG  0023H           串行中断服务程序
LJMP  SINT           串行中断服务程序串行中断服务程序
ORG  0030H
MAIN:MOV  SP,#70H     ;设置堆栈
LCALL  COMRE     串口初始化
SJMP    $
//串口初始化,;设置串行口工作方式1,定时器1作为波特率发生器,波特率设置为 2400;
COMRE:MOV  TMOD,#20H   设置定时器T1工作方式2
         MOV  TH1,#0F3H           定时器重装值
         MOV  TL1,#0F3H      定时器计数初值,波特率 2400
         SETB  EA             允许总的中断
         SETB  ES           ;允许串行中断
         MOV  PCON,#00H        波特率不倍增
         MOV  SCON,#50H       设置串口工作方式1,REN = 1 允许接收
         SETB   TR1                 定时器开始工作
         RET
SINT:   CLR   ES            ;禁止串行中断
         CLR    RI                ;清除接收标志位
         MOV    A,SBUF         从缓冲区取出数据
         MOV  DPTR,#TABLE
         CJNE   A,#0FFH,IN1      检查数据
         MOV   SBUF,#0FFH          收到联机信号,发送联机信号
         JNB    TI,$                  等待发送完毕
         CLR    TI                       清除发送标志
         SETB   ES                    允许串行中断
         RETI
  IN1:  CJNE  A,#01H,IN2            如果收到1
         MOVC  A,@A+DPTR
         MOV   SBUF,A             ;发送 'h'
         JNB    TI,$                等待发送完毕
         CLR    TI                       清除发送标志
         SETB   ES                    允许串行中断
         RETI
IN2:  CJNE  A,#02H,IN3            如果收到2
         MOVC  A,@A+DPTR
         MOV   SBUF,A             ;发送 'e'
         JNB    TI,$                等待发送完毕
         CLR    TI                       清除发送标志
         SETB   ES                    允许串行中断
         RETI
IN3:    MOV   A,#03H
         MOVC  A,@A+DPTR
         MOV   SBUF,A             ;发送 'j'
         JNB    TI,$                等待发送完毕
         CLR    TI                       清除发送标志
         SETB   ES                    允许串行中断
         RETI
TABLE:DB  ‘2’ ‘h’ ‘e’ ‘j’         
END

相关帖子

沙发
ayb_ice| | 2012-5-9 13:23 | 只看该作者
扫肓?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:好好学习,天天向上!

519

主题

4195

帖子

31

粉丝