标签:
EXTI15_10_IRQHandler()
begin
pulse_time = 0
leader_code_flag = 0 /* 引导码标志位,当引导码出现时,表示一帧数据开始 */
irda_data = 0 /* 数据暂存位 */
while 1
if 红外接收头数据引脚的电平 == 高电平
//获取高电平时间
pulse_time = Get_Pulse_Time()
//0.56ms:低电平0
if pulse_time > 0.2ms and pulse_time < 1ms
irda_data = 0
//1.68ms:高电平1
else if pulse_time > 1ms and pulse_time < 2ms
irda_data = 1
//4.5ms:前导位
else if pulse_time > 4ms and pulse_time < 4.5ms
leader_code_flag = 1
//在第一次中断中完成
if leader_code_flag == 1
frame_data <<= 1
frame_data += irda_data
frame_cnt = 0
清除中断标志
end
标签:
原文地址:http://www.cnblogs.com/cposture/p/4321293.html