51单片机接收外来脉冲的问题

来源:百度知道 编辑:UC知道 时间:2024/06/03 08:36:42
用51单片机解码红外信号。。。1对应的是宽度为260us的频率为38KHZ的连续脉冲,0对应的是宽度为269us的低电平。用单片机怎样才能分辨连续脉冲的宽度和低电平的宽度?
请高人指点迷津

用外部中断入输,用定时器测脉冲的宽度。
将TMOD=0X08;//定时器0模式为1,且受外中断0控制;
ET0=1;//开定时器中断
EX0=1;//开外中断0
IT0=1;//外中断0下降沿触发;外中断触发后定时器开始定时,外中断脚低电平时,定时器0一直在定时,直到下次下降沿触发外中断0,这时候你就可以会定时器的值了,相信你应该明白了吧。
TR0=1;
EA=1; //开总中断;

用定时器的 捕获功能 可以做到

用51的中断引脚,检测外来的信号,过程如下:

1.设置单片机的中断触发方式为,下降铅触发方式IT0=1,开总中断SETB EA,开中断SETB ETO(用外中断0)

2.外来信号一触发中断引脚,进入中断同时用程序写检测中断引脚上的电平变化,看你的遥控器为那一类,一般遥控发出来的信号:先用检中断引脚方式检95ms低电平,再检45MS低电平,符合电平时间的,再进行检用户码,(8位码+8位反码),再读控键码8位+8位反码.

3.首先你要知道用户码,教你一个方法可以很简单的查出任何的遥控代码,1块钱的元件就可以做成,9147896

用定时器对外部脉冲宽度进行计数,看记录了多少个数,每个数代表1uS的话就是多少个uS了。

用定时器记时