多费率电能表中基于单片机串行口红外通信的设计
T0模式控制器TMOD中C/T=0和M1M0=10时,SSU7301的定时器/计数器T0设置成模式2方式。此时,TL0和TH0预置成1个可以自动重装的8位的定时器/计数器。用软件将TL0和TH0预置相同的初值后,当TL0计数值增1溢出时,一方面使TF0置1,申请中断;另一方面产生的溢出脉冲将TH0的数据值自动打入到TL0中去,不需要用软件对TL0重新置初值。系统的晶振f1为11.0592MHz,则TL0和TH0的初值计算如下:
f2=38.4kHz得T=1/f2=1/38.4k≈26×10-6=26μs
所以高频调制反转的周期TC=T/2=26/2=13μs
即定时器/计数器T0的初值TL0=TH0=28-(TC×f1)/12=256-(13×10-6×11.0592×106)/12=256-11.9808≈244=0F4H
在定时器/计数器T0的中断服务程序中只用两条指令即可实现高频调制,即CPLP3.4和RETI。
3.2串行口和定时器/计数器T1波特率发生器设置
串行口采用模式3为9位异步通信方式,波特率为1200bps。由串行口控制寄存器SCON的操作模式选择位SM0、SM1都置1设置为模式3,当定时器/计数器T1模式控制器TMOD中C/T=0和M1M0=10时,SSU7301的定时器/计数器T1设置成模式2方式作为波特率发生器,其波特率表示为:
波特率=(T1的溢出率)/n
当SMOD=0时,n=32;当SMOD=1时,n=16,(本设计中SMOD=0)则
波特率=(T1的溢出率)×2SMOD/32
T1的溢出率=(f1/12)/(28-T1初值)
得:波特率=(T1的溢出率)×2SMOD/32
=[(f1/12)/(28-T1初值)]×2SMOD/32
得:定时器/计数器T1初值
TL1=TH1=28-(f1×2SMOD)/(12×32×波特率)
=256-(11.0592×106)/(12×32×1200)
;=256-24=232=0E8H
3.3程序设计
根据以上两点参数的设置,51系列单片机SSU7301的汇编语言程序设计如下:
;以下为参数设置程序
MOVTMOD,#22H;定时器/计数器T0方式2自动重装模式用于PWM38.4KHZ调
;制用,定时器/计数器T1方式2自动重装模式用于串行口通讯波特率发生器
MOVTH1,#0E8H;波特率1200时,定时器/计数器T1自动重装初值
MOVTL1,#0E8H
MOVTH0,#0F4H;38.4KHz高频频调制时,定时器/计数器T0自动重装初值
MOVTL0,#0F4H
SETBET0;定时器/计数器T0溢出中断允许位
SETBTR1;定时器/计数器T1开始定时控制位
SETBTR0;定时器/计数器T0开始定时控制位
MOVPCON,#00H;SMOD为0不倍增模式
MOVSCON,#0D0H;串行口设置为模式3,允许接收
SETBES;串行口允许中断
SETBEA;开总中断允许位
;以下为定时器/计数器T0中断溢出服务程序
《多费率电能表中基于单片机串行口红外通信的设计(第2页)》
本文链接地址:http://www.oyaya.net/fanwen/view/170175.html
f2=38.4kHz得T=1/f2=1/38.4k≈26×10-6=26μs
所以高频调制反转的周期TC=T/2=26/2=13μs
即定时器/计数器T0的初值TL0=TH0=28-(TC×f1)/12=256-(13×10-6×11.0592×106)/12=256-11.9808≈244=0F4H
在定时器/计数器T0的中断服务程序中只用两条指令即可实现高频调制,即CPLP3.4和RETI。
3.2串行口和定时器/计数器T1波特率发生器设置
串行口采用模式3为9位异步通信方式,波特率为1200bps。由串行口控制寄存器SCON的操作模式选择位SM0、SM1都置1设置为模式3,当定时器/计数器T1模式控制器TMOD中C/T=0和M1M0=10时,SSU7301的定时器/计数器T1设置成模式2方式作为波特率发生器,其波特率表示为:
波特率=(T1的溢出率)/n
当SMOD=0时,n=32;当SMOD=1时,n=16,(本设计中SMOD=0)则
波特率=(T1的溢出率)×2SMOD/32
T1的溢出率=(f1/12)/(28-T1初值)
得:波特率=(T1的溢出率)×2SMOD/32
=[(f1/12)/(28-T1初值)]×2SMOD/32
得:定时器/计数器T1初值
TL1=TH1=28-(f1×2SMOD)/(12×32×波特率)
=256-(11.0592×106)/(12×32×1200)
;=256-24=232=0E8H
3.3程序设计
根据以上两点参数的设置,51系列单片机SSU7301的汇编语言程序设计如下:
;以下为参数设置程序
MOVTMOD,#22H;定时器/计数器T0方式2自动重装模式用于PWM38.4KHZ调
;制用,定时器/计数器T1方式2自动重装模式用于串行口通讯波特率发生器
MOVTH1,#0E8H;波特率1200时,定时器/计数器T1自动重装初值
MOVTL1,#0E8H
MOVTH0,#0F4H;38.4KHz高频频调制时,定时器/计数器T0自动重装初值
MOVTL0,#0F4H
SETBET0;定时器/计数器T0溢出中断允许位
SETBTR1;定时器/计数器T1开始定时控制位
SETBTR0;定时器/计数器T0开始定时控制位
MOVPCON,#00H;SMOD为0不倍增模式
MOVSCON,#0D0H;串行口设置为模式3,允许接收
SETBES;串行口允许中断
SETBEA;开总中断允许位
;以下为定时器/计数器T0中断溢出服务程序
《多费率电能表中基于单片机串行口红外通信的设计(第2页)》