红外光通信装置-电赛报告 联系客服

发布时间 : 星期二 文章红外光通信装置-电赛报告更新完毕开始阅读37859a241fd9ad51f01dc281e53a580216fc50a4

----------------------------*/ voidIapEraseSector(WORD addr) {

IAP_CONTR = ENABLE_IAP; //Open IAP function, and set wait time

IAP_CMD = CMD_ERASE; //Set ISP/IAP/EEPROM ERASE command

IAP_ADDRL = addr; //Set ISP/IAP/EEPROM address low

IAP_ADDRH = addr>> 8; //Set ISP/IAP/EEPROM address high

IAP_TRIG = 0x5a; //Send trigger command1 (0x5a)

IAP_TRIG = 0xa5; //Send trigger command2 (0xa5)

_nop_(); //MCU will hold here until ISP/IAP/EEPROM operation complete

IapIdle(); }

void Delay100us() //@30.000MHz {

unsigned char i, j;

i = 3; j = 232; do {

while (--j); } while (--i); }

/*---------------------------- 擦除eeprom

----------------------------*/ voidEraseeeprom() {

uinti;

double a; a=0;

for(i = 0; i<90; i++) {

a = 512+a;

IapEraseSector(a); //Erase current sector }

21

}

/***********************************************sendmess**************************************/

/**********************************************************************************************/

/***************************************发送红外数据**************************/

void send(uchar date) {

uchari;

/*************发送验证信息*************/ TR0=0;

TH0 = 0xF1;

TL0 = 0x5A; //装入初值设置波延时为1.5ms D1 = 1; //发送1.5ms的高电平 TR0 = 1; //启动定时器0 while(!TF0); //等待 TF0 = 0;

TH0 = 0xEC; TL0 = 0x78;

D1 = 0; //发送2ms的低电平 while(!TF0); //等待 TF0 = 0;

/**************发送数据****************/ for(i=0;i<8;i++) {

TL0 = 0x1E; //设置定时初值 0.5MS TH0 = 0xFB; //设置定时初值 TR0=1; D1=1;

while(!TF0); TF0=0;

if(date&0x01) {

22

TL0 = 0x3C; //设置定时初值 1MS 发1 TH0 = 0xF6; //设置定时初值 } else {

TL0 = 0x24; //设置定时初值 0.6MS 发0

TH0 = 0xFA; //设置定时初值 TH0 = 0xFD; //0为窄的低电平,持续时间 0.6ms

}

D1=0;

while(!TF0); //等待 TF0 = 0; date=date>>1; }

TL0 = 0x1E; //设置定时初值 0.5MS TH0 = 0xFB; //设置定时初值 TR0=1; D1=1;

while(!TF0); TF0=0; D1=0;

/************************************结尾**************************/

TH0 = 0x0EC; //延时2ms TL0 = 0x078; TR0=1;

while(!TF0); TF0=0; TR0=0; }

voidsendtem(uchar date) {

uchari;

/*************发送验证信息*************/ TR0=0;

TH0 = 0xF1;

TL0 = 0x5A; //装入初值设置波延时为1.5ms D1 = 1; //发送1.5ms的高电平 TR0 = 1; //启动定时器0 while(!TF0); //等待 TF0 = 0;

TH0 = 0xE2; TL0 = 0xB4;

D1 = 0; //发送3ms的低电平

23

while(!TF0); //等待 TF0 = 0;

/**************发送数据****************/ for(i=0;i<8;i++) {

TL0 = 0x1E; //设置定时初值 0.5MS TH0 = 0xFB; //设置定时初值 TR0=1; D1=1;

while(!TF0); TF0=0;

if(date&0x01) {

TL0 = 0x3C; //设置定时初值 1MS 发1 TH0 = 0xF6; //设置定时初值 } else {

TL0 = 0x24; //设置定时初值 0.6MS 发0

TH0 = 0xFA; //设置定时初值 TH0 = 0xFD; 为窄的低电平,持续时间 0.6ms

}

D1=0;

while(!TF0); //等待 TF0 = 0; date=date>>1; }

TL0 = 0x1E; //设置定时初值 0.5MS TH0 = 0xFB; //设置定时初值 TR0=1; D1=1;

while(!TF0); TF0=0; D1=0;

/************************************结尾**************************/

TH0 = 0x0EC; //延时2ms TL0 = 0x078; TR0=1;

while(!TF0);

24

//0