51单片机的应用——I/O口数据传送

一、题目要求

        利用单片机发送存放在内部20H~29H中的10个字符,晶振11.0592MHz,波特率为9600,由T1产生,请编写发送和接收程序

二、题目分析

        分析这是一道基础的题目,考察了I/O最基本的应用。要利用51单片机发送内部RAM的数据,要知道工作原理。发送所需的波特率由定时器T1产生(波特率是指每秒发送二进制代码的位数,单位是bit/s),T1受TMOD控制,T1应该工作在方式2(8位自动装填)。要发送的数据送到寄存器SBUF中,在每一次定时把SBUF中的内容逐位送到TxD中输出。串口工作模式受SCON控制,REN=1时允许接受,REN=0时禁止接受,在这里使用工作方式1发送,REN=0。PCON控制着波特率的倍乘,在这里SMOD=0。

 

 

 

定时器初值的计算:X=2 ^{N}-\frac{t_{d}}{T_{M}}=2^{N}-\frac{2^{SMOD}}{32\times B_{R}}\times \frac{f_{osc}}{12},算得X=0FDH

综上所述,

TMOD=0010 0000B =20H 

TH1=TL1=0FDH

 SCON=0100 0000=40H 

 PCON=00H

三、发送程序代码实现:

MOV TMOD,#20H;寄存器初始化
MOV TH1,#0FDH
MOV TL1,#0FDH
MOV SCON,#40H
MOV PCON,#00H
MOV R2,#20H   ;设置发送内容的指针和长度
MOV R0,#10H

SETB TR1      ;定时器启动

SENT:MOV A,@R2
        MOV SBUF,A    ;开始传送


DETC:JBC TI,GOON;等待一单元内容发送完毕
        SJMP DETC
GOON:INC R2     ;指针+1
        DJNZ R0,SENT ;发送完10个单元后退出
        RET     ;返回

 接受程序代码实现:REN=1, SCON=0101 0000=50H 

MOV TMOD,#20H;寄存器初始化
MOV TH1,#0FDH
MOV TL1,#0FDH
MOV SCON,#50H
MOV PCON,#00H
MOV R2,#20H   ;设置接受内容存储单元的指针和长度
MOV R0,#10H

SETB TR1      ;定时器启动

RECE:JBC RI,STORE;当SBUF接受满后,RI置1,跳转到存储子程序
        SJMP RECE
STORE: MOV A,SBUF
        MOV @R2,A
        INC R2     ;指针+1
        DJNZ R0,RECE
RET
        

四、总结

         根据题目要求,计算好要使用的寄存器的值和初值,接受和发送的逻辑很相似,发送时接受允许位REN=0,接受时REN=1,通过查询收发标志位来确认发送/接受完成。

五、图片来源

        《单片机原理及接口技术》 段晨东主编 第2版 P170-171

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值