#include <reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit output = P1^0;
sbit output2= P2^0; // P1.0模拟输出红外信号
sbit key1=P1^1; // 2个键盘按键
sbit key2=P1^2;
sbit key3=P1^3;
sbit key4=P1^4;
uint user_code = 0xff00; // 用户码自定义为FF00
uchar key_code[] = {0x16,0x17, 0X0C,0X12}; // 分别对应4个键码
//--------------------------------------------------------------------------------
// delay: 延迟"z"ms
//--------------------------------------------------------------------------------
void delay(uint z) {
uint y;
for (; z > 0; z--)
for (y = 110; y > 0; y--);
}
//--------------------------------------------------------------------------------
// send0: 发送0的波形
//--------------------------------------------------------------------------------
void send0(void)
{
uint i; // 表示载波个数,同时用于延时
/* 22个载波构成0码的发光区,约0.56ms */
for (i = 22; i > 0; i--)
{
output = 0; // 载波高8us左右
_nop_();_nop_();_nop_();_nop_(); // _nop_:空操作,消耗一个机器周期 = 1us
_nop_();_nop_();_nop_();
output = 1; // 载波低17us左右(需考虑循环的影响)
_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();
}
output = 1; // 0.565ms不发光,占空比约:1/2
for(i = 59; i > 0; i--);
}
//--------------------------------------------------------------------------------
// send1: 发送1的波形
//--------------------------------------------------------------------------------
void send1(void)
{
uint i; // 表示载波个数,同时用于延时
/* 同0码一样,22个载波构成发光区,约0.56ms */
for(i = 22; i > 0; i--)
{
output = 0;
_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();
output = 1;
_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();
}
output = 1; // 2.24ms不发光?
for(i = 190; i > 0; i--);
}
//--------------------------------------------------------------------------------