找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3839|回复: 0
打印 上一主题 下一主题
收起左侧

C51单片机双工通信T1工作2方式 汇编程序

[复制链接]
跳转到指定楼层
楼主
ID:72519 发表于 2015-1-23 16:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
MAIN:MOV TMOD,#20H    ;将定时器T1设为工作方式2(TMOD的M1=1,M0=0
     MOV TL1,#0F4H    ;设T1的初值为224
     MOV TH1,#0F4H    ;设T1的重装值为224
     SETB TR1         ;将寄存器TCON的TR1位置1,启动T1开始计数
     MOV SCON,#50H    ;将串行通信口设为工作方式1,并允许接收(SM0=0,SM01=1,数据接收控制位REN=1
     MOV R0,#20H      ;将数据20H送入寄存器R0
     MOV R1,#40H      ;将数据40H送入寄存器R1
     SETB ES          ;将寄存器IE的ES位置1(串行通信口中断允许位,=1允许通过
     SETB EA          ;将寄存器IE的EA位置1(总中断允许位,=1开关闭合,即开启总中断
     ACALL SOUT       ;跳
LOOP:SJMP LOOP
    ;以下为中断子程序
     ORG 0023H        ;下一指令地址为0023H(串行通信口控制寄存器SCON的位TI发送中断标志RI接收中断标志入口=1时有中断
     AJMP SRR1        ;有中断请求跳
SRR1:JNB RI,SEND      ;接收中断标志位RI=0证明是TI有中断,跳转并将TI清0,否则下一步
     ACALL SIN        ;跳转将RI清0
     SJMP NEXT        ;跳
SEND:ACALL SOUT       ;RI=0时跳到此,并跳到将TI清0处
NEXT:RETI             ;返回LOOP处
    ;发下为发送子程序
SOUT:CLR TI           ;将TI清0
     MOV A,@R0        ;将R0中的地址所指的单元中的数据送A
     INC R0           ;将R0加1
     MOV SBUF,A       ;将A中的值送入缓冲器SUBF,同时发送SBUF中的数据
     RET              ;子程序返回(即LOOP:SJMP LOOP处
     ;以下为接收子程序
SIN:CLR RI            ;将SCON的RI位清0
    MOV A,SBUF        ;将接收SUBF中的数据送入A中
    MOV @R1,A         ;将A中数据送R1中的地址所指的单元中
    INC R1            ;将R1加1
    RET               ;子程序返回(即SJMP NEXT处
    END

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表