|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
請大家?guī)臀铱纯催b控接受處理程序哪里出問題了?謝謝! |
| 作者:sky134579 欄目:單片機(jī) |
/* State of the remote key DECODER */ /* #define IDLE 0 #define LEADER_ON 1 #define LEADER_OFF 2 #define CUSTOM 3 #define DATA1 4 #define DATA2 5 */ /******************************************************************** * Function NAME: IR_Falling_Edge_ISR * Input Parameters: None * Return VALUE: None * DESCRIPTION: interrupt 0 External Interrupt 0 (Remote CONTROL) * This interrupt service routine is triggered at the falling edge of IR signal ********************************************************************/ void IR_Falling_Edge_ISR(void) interrupt 0 { /* Disable externel interrupt 0. This action is important, otherwise the SYSTEM stack will overflow.*/ EX0 = 0; /* calculate the clock */ TR1=0; t0=(TH1<<8)|TL1; /* Get the time between the two interrupts */ TH1=0; TL1=0; TR1=1; // Jack 7/15 rewrite SWITCH(IR_State) { case IDLE: OK_Scan_LED = 1; IR_State = LEADER_ON; //LEAD PULSE received. break; case LEADER_ON: if ( (t0 > NORMAL_HEADER_L) && (t0 < NORMAL_HEADER_R) ) { IR_State = CUSTOM1; IR_Addr1 = 0; valid_repeat = 0; IR_Repeat = 0; bitcount = 0; break; } else if ( (t0 > REPEAT_HEADER_L) && (t0 < REPEAT_HEADER_R) ) { if (valid_repeat) IR_Repeat = 1; IR_State = IDLE; break; } else { IR_State = IDLE; break; } case CUSTOM1: if ( (t0 > BIT_0_L) && (t0 < BIT_0_R) ) IR_Addr1 <<= 1; & |
| 2樓: | >>參與討論 |
| 作者: zljzlj 于 2006/7/18 10:24:00 發(fā)布:
HEADER 看看HEADER的檢測是否進(jìn)入了 那個t0是否正常。 |
|
| 3樓: | >>參與討論 |
| 作者: sky134579 于 2006/7/18 10:38:00 發(fā)布:
heade的檢測進(jìn)入了. 我在HEADER檢測的地方放入了LED顯示程序,結(jié)果燈亮,證明進(jìn)入了. 就是到CUSTOM1處進(jìn)行不下去了,不知道為什么它不能辨別0和1,程序我找不出問題,真是郁悶. 問題可能是不能辨別0和1,但是就是不知道是怎么造成的. |
|
| 4樓: | >>參與討論 |
| 作者: zljzlj 于 2006/7/18 11:41:00 發(fā)布:
CUSTOM1和CUSTOM2在哪定義,頭上只有CUSTOM啊。 |
|
| 5樓: | >>參與討論 |
| 作者: sky134579 于 2006/7/18 13:06:00 發(fā)布:
抱歉,改過了,未注名 頭部分改為:#define CUSTOM1 3 #define CUSTOM2 4 以下部分依次加1 我不知道是不是KEIL不能處理t0=(TL1<<8)|TL1; |
|
| 6樓: | >>參與討論 |
| 作者: sky134579 于 2006/7/18 15:41:00 發(fā)布:
問題搞定了,謝謝zljzlj! 多謝zljzlj的熱心幫助 我的錯誤是在頭文件中,BIT_0及BIT_0的時間長度搞錯了點(diǎn),馬虎啊! 現(xiàn)在搞定了,有輸入也有輸出了. 以上程序沒問題. 可能就是把t0的計算方式變下:t0=TH1*256+TL1; |
|
|
|
| 免費(fèi)注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |