×
单片机 > 单片机程序设计 > 详情

51单片机 双机通信(汇编)

发布时间:2020-05-28 发布时间:
|

 

;用方式一双机通信:定时器采用定时器1(8位自动重装),波特率采用9600bit/s

;此程序实现双机同时发送(数码管0-9),并能同时接受,并显示出来,真正实现异步全双工

       org  0000h

       ljmp reset

       org  0003h

       reti

       org  000bh

       reti

       org  001bh

       reti

       org  0023h

       ljmp tans_int     ;串口中断入口

 

reset:       mov r0,#0  ;先进行系统准备(可以不要)

       djnz r0,$

 

init:  mov r1,#4   ;各个寄存器初始化

       mov tmod,#0020h

       mov th1,#0fdh

       mov tl1,#0fdh

       setb tr1          ;打开定时器中断

       mov pcon,#00h

      

       clr   sm0               ;设置工作方式1

       setb sm1

       setb ren    ;允许串行口接收数据

       clr   ti

       clr   ri

       setb es           ;打开串行中断

       setb ea           ;打开全局中断

 

main:      

       mov r0,#9

       mov a,#0

loop:             

       mov dptr,#table        ;主函数主要实现串行发送

       mov a,r0

       movc      a,@a+dptr

      

       mov sbuf,a

       jb     ti,$          ;判断发送中断标志是否在中断中清零

       lcall  delay       ;若清零,则延时

       inc   dptr

       dec         r0

       cjne r0,#255,loop ;减到0之后会变成255

       ljmp main

 

tans_int: 

       push       acc

       push       psw

       jnb   ti,recive_clr  ;判断是否为发送中断

       clr   ti

       sjmp       int_end

 

recive_clr:

       jnb   ri,int_end        ;判断是否为接收中断

       clr   ri    

       mov a,sbuf                   ;若是,则显示出来

       mov p2,a

 

int_end:  

       pop        psw

       pop  acc 

       reti

 

table:             ;共阳极数码管扫描码

       db   0c0h,0f9h,0a4h,0b0h,99h

       db   92h,82h,0f8h,80h,90h

 

delay:    

        mov    r3,#4              ;延时函数(延时大概5**255*255*2=500ms)

l0:     mov r4,#0      

l1:    mov r5,#0ffh

         djnz r5,$

         djnz r4,l1

         djnz r3,l0

      ret  

      

       end

关键字:51单片机  双机通信  汇编 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
单片机中高阻态的实质及意义