原创 我还没有金刚钻,但也敢挑战瓷器活!

2008-5-29 14:42 1508 3 3 分类: 工程师职场
个人头像

xiajunniat


论坛等级: WebResource.axd?d=zPbGsC2GahdFXzTKhcEAmL7kxNkaM5WPbLpHnwh2cS6Mgfgkr5HvHprWTVfYmxGiOvlNgTObHMoEocoS4T8PQkzD15uLtAsjqKmfXHdRp5abnBkZh8TO995liEKOM9MMBdz6c7pCayTavvt1lX8NHw2&t=633471328959907500   E币:97  (E币换礼)   访问E空间


#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;


不要鄙视了,怎么也得让我找个地方拿出来晒晒吧?


这就是生活!!

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
3
关闭 站长推荐上一条 /1 下一条