设为首页收藏本站

串口通信的单片机程序

2017-4-12 12:20| 发布者: 佚名| 查看: 159| 评论: 0

摘要: beepbitp3.7;蜂鸣器定义org00hjmpmainorg23h;串行中断入口地址jmpcom_int;串行中断服务程序;***********主程序开始*******************org30hmain:movsp,#30h;设置堆栈lcallrest;初始化lcallcomm;串口初始化jmp$;原 ...


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


鲜花

握手

雷人

路过

鸡蛋

最新评论



版权声明|小黑屋| 电子基础网     

GMT+8, 2018-1-19 13:16 , Processed in 0.084062 second(s), 17 queries .

© 2016-2017 电子基础网

欢迎投稿:dzjcgw@163.com
返回顶部