许多数据采集系统都需要用到串口,串口的特点是:占用的硬件投资少,只需要很少的信号线,可以同步传输,也可以异步传送。传输数据的格式、速率可以变化。但是抗干扰性能不好,传输距离不够。本例程主要通过实验,演示串口通信的各种设置,上位机及其 单片机 的软件编程方法,数据的采集与处理等。也可以作为串口调试软件用。是一个非常实用的实验。能够方便地进行代码移植。
org 00h
jmp main
org 23h ;串行中断入口地址
jmp com_int ;串行中断服务程序
;*********** 主程序开始 *******************
org 30h
main:mov sp,#30h ;设置堆栈
lcall rest ;初始化
lcall comm ;串口初始化
jmp $ ;原地等待
; ************* 初始化 *********************
rest:mov p0,#00h ;禁止数码管显示
mov p2,#255
mov p1,#255 ;禁止LED显示
RET ;返回
;************** 串口初始化 *****************
;设置串行口工作方式1,定时器1作为波特率发生器
;波特率设置为 2400 ;
comm:mov tmod,#20h ;设置定时器T1工作方式2
mov tl1,#0f2h ;定时器计数初值,波特率 2400
mov th1,#0f2h ;定时器重装值
setb ea ;允许总的中断
setb es ;允许串行中断
mov pcon,#00h ;波特率不倍增
mov scon,#50h ;设置串口工作方式1,REN = 1 允许接收
setb tr1 ;定时器开始工作
ret ;返回
;*************** 串口中断服务程序 ***********
; 如果接收 0FF 表示上位机需要联机信号, 单片机 发送 0FFH作为
; 应答信号,如果接收到 数字 1~ n,表示相应的功能;
; 这里,如果收到 1 ,则 单片机 向计算机发送字符 'm';
; 如果收到 2 ,则 单片机 向计算机发送字符 'c';
; 如果收到其他的数据,则发送 'u';
com_int:clr es ;禁止串行中断
clr ri ;清除接收标志位
mov a,sbuf ;从缓冲区取出数据
cjne a,#0ffh,in_1 ;检查数据
mov sbuf,#255 ;收到联机信号,发送联机信号
jnb ti,$ ;等待发送完毕
clr ti ;清除发送标志
setb es ;允许串行中断
reti ;中断返回
in_1:cjne a,#01,in_2 ;如果收到1
mov sbuf,'m' ;发送 'm'
jnb ti,$ ;等待发送完毕
clr ti ;清除发送中断标志
setb es ;允许串行中断
reti ;中断返回
in_2:cjne a,#02,in_3 ;接收到 2
mov sbuf,'c' ;发送 'c'
jnb ti,$ ;等待发送完毕
clr ti ;清除发送中断
setb es ;允许串行中断
reti ;中断返回
in_3:mov sbuf,'u' ;收到其他数据,发送'u'
jnb ti,$ ;等待发送完毕
clr ti ;清除发送中断标志
setb es ;允许串行中断
reti ;返回
end
上一篇:单片机计数器功能实验程序
下一篇:RS232通信程序
推荐阅读最新更新时间:2024-03-16 15:52