#1 楼主:AT89C52串口通信 
贴子发表于:2008-5-27 20:41:45
我现在要实现的功能是微机与89C52的串行通信。
先说明一下,键盘有4个独立按键,通过中断0的中断程序判断是哪个按键。
当按下某个按键时,要给微机发送一数据,按下另一个按键时,接收微机发给单片机的数据。
问下中断0的程序和串口中断程序该如何处理?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
今天中午看到这个帖子,就赶忙编程序,没想到用了半个多小时只把从单片机向pc传输数据的部分完成了,再回过头看帖子的其他回复,才发现已经有强人把程序写完了,并且楼主已经试验过了,我晕。。。。
并且人家用的还是c语言,再看看我这用汇编语言编出的拙劣程序,只能用两个字来形容我现在的感受————汗颜。
我是不想冒着丢人的风险把程序回复到论坛中了,只能把它写在自己的博客里了,仅供各位看客消遣一下。
org 0000 //p1的0、1、2、3口用来监测键盘;
mov ie,#81h;
mov ip,#01h;
mov tcon,#00h;
mov sp,#70h;
scan:mov p1,#0ch; //扫描键盘;
mov r0,p1;
cjne r0,#0ch,lie;
ajmp scan;
lie:mov a,p3;
1:cjne a,#08h,2;
push a; //中断入口;
push psw;
setb rs0;
clr rs1;
jmp topc; //跳到向pc传输的程序;
2:cjne a,#04h,scan;
jmp to51; //跳到向单片机传输的程序;
hang1: mov scon,#40h; //开始向pc发送信息;
mov pcon,#80h;
mov tmod,#20h;
mov th1,#0fah;
setb tr1;
mov dptr,#table;
loop:clr a;
movc a,@a+dptr;
cjne a,#01h,loop1;
pop psw;
pop a;
reti;
loop1:mov sbuf,a;
jnb ti,$;
clr ti;
inc dptr;
ajmp loop;
table:db "abcdefg",01h
end;
不要鄙视了,怎么也得让我找个地方拿出来晒晒吧?
这就是生活!!
文章评论(0条评论)
登录后参与讨论