MOV TH0,#0F4H ;38.4KHz高频频调制时, 定时器/计数器T0自动重装初值
MOV TL0,#0F4H
SETB ET0 ; 定时器/计数器T0溢出中断允许位
SETB TR1 ; 定时器/计数器T1开始定时控制位
SETB TR0 ; 定时器/计数器T0 开始定时控制位
MOV PCON,#00H ;SMOD为0不倍增模式
MOV SCON,#0D0H ;串行口设置为模式3,允许接收
SETB ES ;串行口允许中断
SETB EA ;开总中断允许位;
以下为定时器/计数器T0中断溢出服务程序
ORG 000BH; 定时器/计数器T0中断入口地址
T0SERVE:CPL P3.4 ; 定时器/计数器T0定时取反P3.4口进行高频调制
RETI ;中断返回;
以下为串行口中断服务程序,以接收一个字节数据为例,多字节以此类推
ORG 0023H;串行口中断入口地址
SENDSERVE:NOP
NOP
MOV A,SBUF ;把接收缓冲器的数据送到A寄存器… ;
进行数据处理及其它功能操作
RETI ;中断返回;
以下为串行口发送程序,以发送一个字节数据为例, 多字节以此类推
COMSEND: MOV A,#DATAH ;把数据送到A寄存器
MOV C,P ;根据A中数据产生的偶校验位送到进位标志位
MOV TB8,C ;送偶校验位到发送的第9位数据
MOV SBUF,A ;送数据到发送缓冲器
JNB TI,$ ;以查询方式等待发送结束
CLR TI ;清发送中断标志位
… ;继续发送或其它功能操作
RET 子程序返回
4 结束语
本设计的最大特点在于省略了脉冲振荡器,而仅仅利用多费率电能表上所带单片机的串行口和2个定时器/计数器,这不仅使多费率电能表在硬件设计上更加简单、成本更加低廉,而且在软件上也更加方便、可靠。同时这种红外通信方式也可以应用在带串行口和定时器/计数器的单片机应用领域。
来源:百度文库