void UART_Initial();
void DELAY_Us(unsigned int Us)
{
unsigned int x;
for(x = 0; x <= (Us/200-1); x++);
}
void DELAY_Ms(unsigned int Ms)
{
unsigned int x,y;
for(x = 0; x <= (Ms-1); x++)
{
for(y = 0; y <= 120; y++);
}
}
void main()
{
unsigned char i;
UART_Initial();
IR_Out = 1;
while(1)
{
START_Flag = START_Judge();
BOOT_REPEATING_CODE_Flag = BOOT_REPEATING_CODE_Judge();
if ( START_Flag && !BOOT_REPEATING_CODE_Flag )
{
for(i =0;i<4; i++)
{
B0 = H_L_LEVEL_Judge();
B1 = H_L_LEVEL_Judge();
B2 = H_L_LEVEL_Judge();
B3 = H_L_LEVEL_Judge();
B4 = H_L_LEVEL_Judge();
B5 = H_L_LEVEL_Judge();
B6 = H_L_LEVEL_Judge();
B7 = H_L_LEVEL_Judge();
DATA[i] = TEMP_BIT;
}
for(i =0;i<4; i++)
{
SBUF = DATA[i];
while( TI == 0 );
TI = 0;
}
}
}
}
void UART_Initial()
{
SCON = 0x50; // SCON: 模式 1, 8-bit UART, 使能接收
TMOD |= 0x20; // TMOD: timer 1, mode 2, 8-bit reload
TH1 = 0xFD; // TH1: reload value for 9600 baud @
// 11.0592MHz
TR1 = 1; // TR1: timer 1 run
EA = 0; // 关闭总中断
ES = 0; // 关闭串口中断
}
}
注
1、红外遥控的编码不只NEC,还有很多也有广泛应用如RC-5,RC-6等。
2、上面的代码所用指令是STC 89C52单片机,如需用其它芯片请另行更改。