单片微型计算机及应用x(张毅坤) 第5章 输入.pptVIP

  • 30
  • 0
  • 约3.11万字
  • 约 152页
  • 2016-11-29 发布于湖南
  • 举报

单片微型计算机及应用x(张毅坤) 第5章 输入.ppt

单片微型计算机及应用x(张毅坤) 第5章 输入

表5―6 常用波特率和定时器T1初值 5.5.3 串行通信应用举例 串行口方式1和方式3都是异步通信方式,方式1为8位数据位,方式3为9位数据位,两种方式的波特率都是受定时器T1的溢出率控制。在用方式1或方式3实现串行异步通信时,初始化程序要设定串行口的工作方式,并对定时器T1实现初始化,即设定定时器方式和定时器初值。此外,还要编写发送子程序和接收子程序。 例1:串行口按双工方式收发ASCII码字符,最高1位用来作奇偶校验位,采用奇校验方式,要求传送的波特率为1200波特。假设发送缓冲区首址为20H,接收缓冲区首址为40H,时钟频率fosc=6MHz,试编写有关的通信程序。 解:7位ASCII码加1位奇校验共8位数据,故可采用串行口工作方式1。MCS-51单片机的奇偶校验位P是当累加器A中“1”的个数为奇数时P=1;为偶数时P=0。如果直接把P的值放入ASCII码的最高位(奇偶校验位),恰好成了偶校验,与要求不符。因此要把P值取反后再放入ASCII码的最高位,才是要求的奇校验。 定时器T1采用工作方式2,可以避免计数溢出后用软件重装定时初值。    先计算定时器T1的初值,取SMOD=0,按式(5―4)可算出: 定时器T1的溢出率=波特率×32/2SMOD =1200×32/20 =38400 然后,根据式(5―5)可求出其对应的计数初值为 X=2n-(fosc/T1的溢出率×12) =28-(6×106/38400×12) =243=F3H 另一种方法是通过查表5―6确定X=F4H 最后确定特殊功能寄存器的初值: 对于SCON: SM0、SM1=01时为方式1,在SM2=0和REN=1条件下,允许接收数据,其余各位均取0。则 SCON=50H 对于PCON: 由于SMOD=0,所以PCON=00H(同系统复位以后的状态,可不赋值)。 对于TMOD: 由于只用T1,且为定时方式2,所以 TMOD=20H 主程序: MOV TMOD,#20H ;定时器T1设为方式2 MOV TL1,#F3H ;装入定时器初值 MOV TH1,#F3H ;8位重装值 SETB TR1 ;启动定时器T1 MOV SCON,#50H ;串行口设为方式1 MOV R0,#20H ;发送缓冲区首址 MOV R1,#40H ;接收缓冲区首址 SETB EA ;开中断 SETB ES ;允许串行口中断 LCALL SOUT ;先输出1个字符 SJMP $ ;等待中断 中断服务程序: ORG 0023H ;串行中断入口 LJMP SBR1 ;转至中断服务程序 SBR1:JNB R1,SEND ;不是接收则转 LCALL SIN ;是接收,则调用接收子程序 SJMP NEXT ;转至统一出口 SEND:LC

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档