|
- #define ALLOCATE_EXTERN
- #include "HC89F0541.h"
- #include "IR.h"
- #include "Timer0.h"
- unsigned int Count=0;
- bit Flag = 0;
- void IR_Send(void)//
- {
- P1M4 = 0xC2; //P14設(shè)置為推挽輸出
- P1_4 = 0;
- Delay_us(11); //大概為12.5us 即發(fā)射40Khz載波信號
- P1_4 = 1;
- Delay_us(10);
- }
- void main()
- {
- /************************************系統(tǒng)初始化****************************************/
- CLKSWR = 0x51; //選擇內(nèi)部高頻RC為系統(tǒng)時(shí)鐘,內(nèi)部高頻RC 2分頻,F(xiàn)osc=16MHz
- CLKDIV = 0x01; //Fosc 1分頻得到Fcpu,F(xiàn)cpu=16MHz
-
- Timer0_Init();
- P3M2 = 0x60;
- P0M7 = 0xC2;
- while(1)
- {
- if(Flag)
- {
- IR_Send(); //載波發(fā)射
- }
- else P1_4 = 1;
- if(P3_2 ==0) //P32為接收輸入引腳 當(dāng)感應(yīng)到人體時(shí)
- {
- P0_7 = 1; //LED點(diǎn)亮
- }
- }
- }
- /***************************************************************************************
- * @說明 T0中斷服務(wù)函數(shù)
- * @參數(shù) 無
- * @返回值 無
- * @注 無
- ***************************************************************************************/
- void Timer0_ISR()interrupt 1
- {
- TH0 = 0xFA;
- TL0 = 0xCB; //T0定時(shí)時(shí)間1ms
- Count++;
-
- if(Count==100)
- {
- Flag = !Flag;
- Count = 0;
- }
-
- }
復(fù)制代碼 |
|