˜Ëî}:
¼tÍâʹÓÃ†ÎÆ¬™CÍⲿÖДà+¶¨•rÆ÷½â´a
[´òÓ¡±¾í“]
×÷Õß:
Á_ÎĽÜ
•rég:
2018-8-5 21:36
˜Ëî}:
¼tÍâʹÓÃ†ÎÆ¬™CÍⲿÖДà+¶¨•rÆ÷½â´a
°üº¬Á˼tÍâ½â´a£¬×Ô„Ó¸ù“þ²¨ÌØÂÊÔOÖö¨•rÆ÷Òç³öÂÊÒÔ¼°Ê¹Óö¨•rÆ÷ÑÓ•r
´®¿Ú²¿·Ö£º
void UART1_Init(u32 Boud)
{
u16 Temp = (65536 - FOSC/Boud/4);
SCON = 0x50;
T2L = Temp;
T2H = Temp >> 8;
AUXR |= 0x15; //†¢„Ó¶¨•rÆ÷
ES = 1; //ʹÄÜ´®¿ÚÖДà
}
char putchar(u8 c)
{
SBUF = c;
while(!TI);
TI = 0;
return c;
}
void UART1_ISR() interrupt 4 using 1
{
if(RI)
{
RI = 0; //ÇåÖДà˜ËÖ¾
}
// if(TI)
// {
// TI = 0; //ÇåÖДà˜ËÖ¾
// }
}
//¶¨•rÆ÷ÑÓ•r²¿·Ö
#include "delay.h"
#define TICK_US (FOSC/1000000/12)
volatile u16 told = 0; //Ó‹”µÆ÷ÅfÖµ
volatile u16 tnow = 0; //Ó‹”µÆ÷ÐÂÖµ
volatile u16 tick = 0; //Ó‹”µÖµ
volatile u16 delay_tick = 0; //ÑÓ•rÓ‹”µÖµ
void delay_init(void)
{
T4L = 0;
T4H = 0;
T4T3M &= 0x0F;
T4T3M |= B1000_0000; //†¢„Ó¶¨•rÆ÷ 12T
told = 0;
tnow = 0;
tick = 0;
delay_tick = 0;
}
void delay(u16 us)
{
told = T4H << 8 | T4L;
tnow = 0;tick = 0;
delay_tick = us * TICK_US;
while(1)
{
tnow = T4H << 8 | T4L;
if(tnow != told)
{
if(tnow > told)
{
tick += tnow - told;
}
else //¶¨•rÆ÷Òç³ö
{
tick += 65535 + tnow - told;
}
told = tnow;
if(tick >= delay_tick)
break;
}
}
}
//¼tÍâ½â´a
#include "INT.h"
#include "USART.h"
u8 IR_Cnt = 0;
#define T51 (FOSC/1000000/12)
#define REMOTE_ID 0
//ßb¿ØÆ÷½ÓÊÕ î‘B(t¨¤i)
//[7]:ÊÕµ½ÁËÒýŒ§´a˜ËÖ¾
//[6]:µÃµ½ÁËÒ»‚€°´æIµÄËùÓÐÐÅÏ¢
//[5]:±£Áô
//[4]:˜ËÓ›ÉÏÉýÑØÊÇ·ñÒѽ›±»²¶«@
//[3:0]:Òç³öÓ‹•rÆ÷
u8 IR_sta = 0;
u32 IR_Rec = 0;
sbit INT0 = P3^2;
void IR_Init(void)
{
IT0 = 0; //ʹÄÜINT0ÉÏÉýÑØºÍϽµÑØÖДà
EX0 = 1; //ʹÄÜINT0ÖДà
AUXR &= 0x7F; //¶¨•rÆ÷•rçŠ12Tģʽ
TMOD &= 0xF0; //ÔOÖö¨•rÆ÷ģʽ
TMOD |= 0x01; //ÔOÖö¨•rÆ÷ģʽ
TF0 = 0; //Çå³ýTF0˜ËÖ¾
TL0 = 0; //ÔOÖö¨•r³õÖµ
TH0 = 0; //ÔOÖö¨•r³õÖµ
TR0 = 0; //¶¨•rÆ÷0é_ʼӋ•r
ET0 = 1;
}
//ÌŽÀí¼tÍâæI±P
//·µ»ØÖµ:
// 0,›]ÓÐÈκΰ´æI°´ÏÂ
//ÆäËû,°´Ïµİ´æIæIÖµ.
u8 IR_Scan(void)
{
u8 Key = 0;
if(IR_sta & (1<<6))//µÃµ½Ò»‚€°´æIµÄËùÓÐÐÅÏ¢ÁË
{
u8 TEMP[2];
TEMP[0] = IR_Rec>>24; //µÃµ½µØÖ·´a
TEMP[1] = (IR_Rec>>16)&0xff; //µÃµ½µØÖ··´´a
if((TEMP[0] == (u8)~TEMP[1]) && TEMP[0] == REMOTE_ID)//™zòžßb¿Ø×R„e´a(ID)¼°µØÖ·
{
TEMP[0] = IR_Rec>>8;
TEMP[1] = IR_Rec;
if(TEMP[0] == (u8)~TEMP[1])
Key = TEMP[0];//æIÖµÕý´_
}
if(Key == 0||(IR_sta&0X80) == 0)//°´æI”µ“þåeÕ`/ßb¿ØÒѽ››]Óа´ÏÂÁË
{
IR_sta&=~(1<<6);//Çå³ý½ÓÊÕµ½ÓÐЧ°´æI˜Ë×R
IR_Cnt = 0; //Çå³ý°´æI´Î”µÓ‹”µÆ÷
}
}
return Key;
}
void INT0_ISR(void) interrupt 0 using 1
{
if(INT0)//ÉÏÉýÑØ²¶«@
{
TL0 = 0; //ÔOÖö¨•r³õÖµ
TH0 = 0; //ÔOÖö¨•r³õÖµ
TR0 = 1; //¶¨•rÆ÷0é_ʼӋ•r
IR_sta |= 0X10; //˜ËÓ›ÉÏÉýÑØÒѽ›±»²¶«@
}
else //ϽµÑز¶«@
{
u16 Count_Time = 0;
Count_Time = TH0 << 8|TL0;
TL0 = 0; //ÔOÖö¨•r³õÖµ
TH0 = 0; //ÔOÖö¨•r³õÖµ
if(IR_sta & 0X10) //Íê³ÉÒ»´Î¸ßëŠÆ½²¶«@
{
if(IR_sta & 0X80)//½ÓÊÕµ½ÁËÒýŒ§´a
{
if(Count_Time > (300 * T51) && Count_Time < (800 * T51)) //560žé˜ËœÊÖµ,560us
{
IR_Rec <<= 1; //×óÒÆÒ»Î».
IR_Rec |= 0; //½ÓÊÕµ½0
}
else if(Count_Time > (1400 * T51) && Count_Time < (1800 * T51)) //1680žé˜ËœÊÖµ,1680us
{
IR_Rec <<= 1; //×óÒÆÒ»Î».
IR_Rec |= 1; //½ÓÊÕµ½1
}
else if(Count_Time > (2200 * T51) && Count_Time < (2600 * T51)) //µÃµ½°´æIæIÖµÔö¼ÓµÄÐÅÏ¢ 2500žé˜ËœÊÖµ2.5ms
{
IR_Cnt++; //°´æI´Î”µÔö¼Ó1´Î
IR_sta&=0XF0; //Çå¿ÕÓ‹•rÆ÷
}
}
else if(Count_Time > (4200 * T51) && Count_Time < (4700 * T51)) //4500žé˜ËœÊÖµ4.5ms
{
IR_sta|=1<<7; //˜ËÓ›³É¹¦½ÓÊÕµ½ÁËÒýŒ§´a
IR_Cnt=0; //Çå³ý°´æI´Î”µÓ‹”µÆ÷
}
}
IR_sta &=~(1<<4);
}
}
void TIME0_ISR(void) interrupt 1 using 1
{
TL0 = 0; //ÔOÖö¨•r³õÖµ
TH0 = 0; //ÔOÖö¨•r³õÖµ
if(IR_sta&0x80)//ÉÏ´ÎÓДµ“þ±»½ÓÊÕµ½ÁË
{
IR_sta &= ~0X10; //È¡ÏûÉÏÉýÑØÒѽ›±»²¶«@˜ËÓ›
if((IR_sta&0X0F) == 0X00)
IR_sta|=1<<6;//˜ËÓ›Òѽ›Íê³ÉÒ»´Î°´æIµÄæIÖµÐÅÏ¢²É¼¯
if((IR_sta&0X0F) < 14)
IR_sta++;
else
{
TR0 = 0; //¶¨•rÆ÷0é_ʼӋ•r
IR_sta&=~(1<<7);//Çå¿ÕÒýŒ§˜Ë×R
IR_sta&=0XF0; //Çå¿ÕÓ‹”µÆ÷
}
}
}
STC8.rar
2018-8-5 21:31 ÉÏ‚÷
üc“ôÎļþÃûÏÂÝd¸½¼þ
ÏÂÝd·e·Ö: ºÚŽÅ -5
288.26 KB, ÏÂÝd´Î”µ: 28, ÏÂÝd·e·Ö: ºÚŽÅ -5
×÷Õß:
wuyuwangluo
•rég:
2018-8-22 00:22
˜ËӛϠ¸ÐÖx˜ÇÖ÷
×÷Õß:
HongZQ2007
•rég:
2018-10-21 23:22
¸ÐÖxÄúµÄŸo˽·ÖÏí£¬ÖxÖxÄ㣡£¡£¡
×÷Õß:
lindeijun1
•rég:
2018-10-22 15:39
ÖxÖx˜ÇÖ÷·ÖÏí
×÷Õß:
wxbdcmh
•rég:
2020-6-24 20:10
ÖxÖx˜ÇÖ÷·ÖÏí
šgÓ¹âÅR (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1