您现在的位置: 主页 > MCU > 单片机综合应用 > 串口通信的单片机程序
本文所属标签:
为本文创立个标签吧:

串口通信的单片机程序

来源:网络整理 网络用户发布,如有版权联系网管删除 2018-07-01 

beepbitp3.7;蜂鸣器定义

org00h

jmpmain

org23h;串行中断入口地址

jmpcom_int;串行中断服务程序

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

org30h

main:movsp,#30h;设置堆栈

lcallrest;初始化

lcallcomm;串口初始化

jmp$;原地等待

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

rest:movp0,#00h;禁止数码管显示

movp2,#255

clrbeep;禁止蜂鸣器

movp1,#255;禁止LED显示

RET;返回

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

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

;波特率设置为2400;

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

movtl1,#0f3h;定时器计数初值,波特率2400

movth1,#0f3h;定时器重装值

setbea;允许总的中断

setbes;允许串行中断

movpcon,#00h;波特率不倍增

movscon,#50h;设置串口工作方式1,REN=1允许接收

setbtr1;定时器开始工作

ret;返回

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

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

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

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

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

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

com_int:clres;禁止串行中断

clrri;清除接收标志位

mova,sbuf;从缓冲区取出数据

movp1,a

movdptr,#tab

cjnea,#0ffh,in_1;检查数据

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

jnbti,$;等待发送完毕

clrti;清除发送标志

setbes;允许串行中断

reti;中断返回

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

movca,@a+dptr

movsbuf,a;发送'h'

jnbti,$;等待发送完毕

clrti;清除发送中断标志

setbes;允许串行中断

reti;中断返回

in_2:cjnea,#2,in_3;接收到2

movca,@a+dptr

movsbuf,a;发送'e'

jnbti,$;等待发送完毕

clrti;清除发送中断

setbes;允许串行中断

reti;中断返回

in_3:mova,#03h

movca,@a+dptr

movsbuf,a;发送'j'

jnbti,$;等待发送完毕

clrti;清除发送中断标志

setbes;允许串行中断

reti;返回

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

end



              查看评论 回复



嵌入式交流网主页 > MCU > 单片机综合应用 > 串口通信的单片机程序
 中断 发送 串行

"串口通信的单片机程序"的相关文章

网站地图

围观()