您的位置 首页 硬件

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

;用方式一双机通信:定时器采用定时器1(8位自动重装),波特率采用9600bit/s;此程序实现双机同时发送(数码管0-9),并能同时接受,并显示…

;用方法一双机通讯:定时器选用定时器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

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qianrushi/yingjian/266758.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部