每按一次单片机上的按键,把一个16进制的数据发送到串口利用串口调试助手接收显示出来(51单片机 汇编语言

请用中断

KEY EQU P1.0 ;自己按实际定义
DAT EQU 30H ;自己定义发送的数据
ORG 0000H
SJMP STA
ORG 0023H
LJMP SERINT
ORG 0030H
STA:
MOV SP,#6FH
SETB ES
SETB EA
LOOP:
JB KEY,LOOP
LCALL DELAY
JB KEY,LOOP
MOV SBUF,#DAT
LCALL SEND
SJMP LOOP
DELAY:
MOV R0,#10
D1:
MOV R1,#200
DJNZ R1,$
DJNZ R0,D1
RET
;-----串口中断程序------
SERINT:
JBC RI,R_DAT
JBC TI,SEREND
SJMP SEREND
R_DAT:
MOV A,SBUF
SEREND:
RETI
END追问

请用中断。谢谢

追答

现在用的就是中断呀,接受和发送都是中断方式。值得注意的是,发送中断并不是说在中断服务程序里发送,只是发送完成后,TI置位申请中断,而中断服务程序的任务只有一个,TI清零。

追问

有的指令没有学过啊,看不懂。。。

追答

没学过可以查书呀,我想书上应该是指令齐全的吧,另外,单片机的按键获取可能需要单独的键盘扫描程序,我这里只是示意性的给了个,与你的硬件环境肯定不一致的。

追问

是不是没有SEND子程序啊,还有LCALL SEND 这条是干什么用的?

追答

哦,忘记了,原来没有用中断时的发送程序,去掉就OK了。

温馨提示:答案为网友推荐,仅供参考
相似回答