微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 串口通信的单片机程序

串口通信的单片机程序

时间:12-04 来源:互联网 点击:

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

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top