Re: APP09 Demo board circuit
|
||||
---|---|---|---|---|
中級會員
|
你要的東西在檔案下載區裡面的實驗版資料區有
可以去看看
發表於: 2007/3/9 17:10
|
|||
|
Re: IR remote control confused.....
|
||||
---|---|---|---|---|
中級會員
|
感謝各位大大的幫忙
我已經大致將這一個CODE寫出來了,只是還沒有考慮REPEAT的問題,我在其他論壇有看到可以利用輪詢的方式去讀取IR的資料,但是我所配合的電路他的IR電壓是1.3~-4.7V 所以似乎是沒有辦法讀取到正確的資料,我還是利用中斷的方式在配合上計時器,來判斷所收的資料是0或1。不知道這樣的做法對不對。
發表於: 2007/3/9 10:52
|
|||
|
Re: 請問大家位啥我的A值都不會遞增上去???
|
||||
---|---|---|---|---|
中級會員
|
理論上,A的值是有在變動的。
不了解你所謂滑鼠移上去的意義? 建議你可以設中斷點在A++那一行上面 如此便可以每執行A++一次便會有中斷產生 你就看的道A的變化了 應該是這樣啦 如果有錯還請高手指正
發表於: 2007/3/6 13:47
|
|||
|
Re: 讀取TIMER的疑問
|
||||
---|---|---|---|---|
中級會員
|
感謝
多謝大大的回覆
發表於: 2007/2/6 11:24
|
|||
|
讀取TIMER的疑問
|
||||
---|---|---|---|---|
中級會員
|
Hi 各位大大
我又有一個關於TIMER的疑問要請教了 我記得PIC TIMER0 是利用倒數的方式來產生中斷。 我想請教的是一下片段 WriteTimer0(0); while(!key); T=ReadTimer0(); 倘若我讀取間隔的時間越久,是不是T的值會越小啊 因為他是倒數的。
發表於: 2007/2/5 15:17
|
|||
|
Re: MCC18中斷語法疑問
|
||||
---|---|---|---|---|
中級會員
|
感謝版大的解惑
發表於: 2007/2/5 10:21
|
|||
|
MCC18中斷語法疑問
|
||||
---|---|---|---|---|
中級會員
|
Hi 請問各位大大一個笨問題
倘若我想開啟INT1 然後要EDGE改變就要中斷 我可以用這樣的語法嗎? OpenRB1INT( PORTB_CHANGE_INT_ON & FALLING_EDGE_INT & RISING_EDGE_INT & PORTB_PULLUPS_OFF); 很笨的問題,煩請有經驗的大大能告知。 感激不盡
發表於: 2007/2/2 17:46
|
|||
|
Re: IR remote control confused.....
|
||||
---|---|---|---|---|
中級會員
|
這個是我在測試跑一次TIMER0需要多少時間的東西
if(INTCONbits.TMR0IF==1) { INTCONbits.TMR0IF=1; } 我再真正測試程式時已經把TIMER0中斷關掉了 所以沒有跑那一個 = =" 抱歉沒有說清楚 我把他拿掉免得造成大大的困惑。 還有我發現我上面那一段程式的問題了,這樣的語法判斷太多。 而且會造成少判斷一個PULSE,這也是我資料不正確的原因。 正在改變寫法中....
發表於: 2007/2/2 17:31
|
|||
|
Re: IR remote control confused.....
|
||||
---|---|---|---|---|
中級會員
|
我所取IR資料的中斷如下
我利用TIMER0來讀取兩個PULSE的時間,現在的問題是最高位元讀取怪怪的,我不曉得是哪邊的錯誤,還有CODE的值會是對的但是ADDRESS的卻沒有反向,這讓我覺得很奇怪 不曉得是哪邊沒有考慮到,可以請有經驗的大大幫忙看一下嗎? 所使用的MCU 為18F452 16MHZ 利用 PORTB1來接收資料 #pragma interrupt isr_high //#pragma interrupt isr_high nosave=TBLPTR, TABLAT ,section(".tmpdata") #pragma interrupt isr_high nosave=section(".tmpdata") void isr_high(void) { if(INTCON3bits.INT1IF==1) { INTCON3bits.INT1IF=0; if(Myfg.IR_Data_get) { if(Myfg.IR_T_lo) { T_lo=ReadTimer0(); WriteTimer0(0); Myfg.IR_T_hi=1; Myfg.IR_T_lo=0; OpenRB1INT( PORTB_CHANGE_INT_ON & //FALLING_EDGE_INT & RISING_EDGE_INT & PORTB_PULLUPS_OFF); } else { if(Myfg.IR_T_hi) { T_hi=ReadTimer0(); WriteTimer0(0); Myfg.IR_T_hi=0; Myfg.IR_T_lo=1; IRTemp.Bits.IRbit7=1; if((T_lo-T_hi)>=5000) { IRTemp.Bits.IRbit7 |= 1; IRTemp.IRtemp >>= 1; } else { IRTemp.Bits.IRbit7 &= 0; IRTemp.IRtemp >>= 1; } /*if((T_hi-T_lo)>=4000) { IRTemp.Bits.IRbit7 |= 1; // IRTemp.IRtemp >>= 1; } else { IRTemp.Bits.IRbit7 &= 0; // IRTemp.IRtemp >>= 1; }*/ IRct++; if(IRct%8 ==0) { IRData.IRdata[IRDct] = IRTemp.IRtemp; IRTemp.IRtemp=0; IRDct++; } if(IRct>=33) { IRDct=0; IRct=0; IRTemp.IRtemp=0xff; Myfg.IR_Data_get=0; } OpenRB1INT( PORTB_CHANGE_INT_ON & FALLING_EDGE_INT & //RISING_EDGE_INT & PORTB_PULLUPS_OFF); } } } else { //Myfg.IR_Data_get=1; // if(!Myfg.IR_DeBounce) // { if(Myfg.IR_T_lo) { T_lo=ReadTimer0(); WriteTimer0(0); Myfg.IR_T_hi=1; Myfg.IR_T_lo=0; //Myfg.IR_DeBounce=1; OpenRB1INT( PORTB_CHANGE_INT_ON & //FALLING_EDGE_INT & RISING_EDGE_INT & PORTB_PULLUPS_OFF); } else { if(Myfg.IR_T_hi) { T_hi=ReadTimer0(); WriteTimer0(0); //T_sub=T_hi-T_lo; if(T_lo>T_hi) { Myfg.IR_Data_get=1; Myfg.IR_DeBounce=0; } Myfg.IR_T_hi=0; Myfg.IR_T_lo=1; OpenRB1INT( PORTB_CHANGE_INT_ON & FALLING_EDGE_INT & //RISING_EDGE_INT & PORTB_PULLUPS_OFF); } } //} } }//if(INTCON3bits.INT1IF==1)
發表於: 2007/2/2 9:54
|
|||
|