|
以前没有弄过红外发射,这两天恶补了一下,写了一个程序调试中出现了问题,先把程序贴出来:
/*&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
//==== 红外遥控器发射程序 ====//
At89s52, 晶振12,
38KHz, 1/38=26.3μS
方波高低各50%,也就是:中断2次: 26.3/2=13.15μS =13μS
几个时序需要的中断次数的计算:
9ms/13μS = 692(次实现)
4.5ms/13 = 346
0.56ms/13 = 43
1.69ms/13 = 130
定时器初值计算:
初值 = 65536 - (f(晶振) * (y)需定时数)/ 12(分频)
本例:f=12 y=13μS
计算:初值 = 65536-13 = 65523 = fff3
红外传输发射协议:
引导码+16位用户数据码+8位设备码+8位识别反码
引导码: 9ms高电平 + 4.5ms低电平
用户码和设备码中:
“1”: 0.56ms高电平 + 1.69ms低电平
“0”: 0.56ms低电平 + 0.56ms低电平
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& */
问题是:
红外发射专用计时器(定时器1)出现如下情况,看图:
=================================
==================================
===============================
上图的定时器值是FF,FA;再一个单步就是下图的00 04 了,再一单步就重装初值。
这个定时器初值是TH1=0XFF, TL1=0XF3, 定时13μs,重装初值时TH1是不应该变的,
由于这一变,定时值变为了22μs,多出了9μs,
实际定时值是通过上图所示的sec算出的,定时器1工作方式1,换成工作方式0也不行,
弄一天 了,找不出原因了,望高手们出手相帮,先谢谢了!!
|
|