Re: 為什麼EEPROM寫不進去??
|
||||
---|---|---|---|---|
資深會員
|
你好:
先用SIM模擬,須先將EEPROM視窗打開, 在程式中的寫完EEPROM後設斷點, 看EEPROM是否有寫入. Thanks.
發表於: 2008/9/19 10:31
|
|||
|
Re: 為什麼EEPROM寫不進去??
|
||||
---|---|---|---|---|
資深會員
|
你好:
原 int DATA_EE_ADDR=0x20; int DATA_EE_DATA=0x41; 改 char DATA_EE_ADDR=0x20; char DATA_EE_DATA=0x41; 用我給的code試試. Thanks.
發表於: 2008/9/19 10:26
|
|||
|
Re: 請問C18高低中斷,Compiler為何會更改暫存器(ACCESS)!
|
||||
---|---|---|---|---|
資深會員
|
大家好:
問題已解決: #pragma interruptlow InterruptHandlerLow nosave=section(".tmpdata") Thanks.
發表於: 2008/9/18 9:57
|
|||
|
Re: 請問C18高低中斷,Compiler為何會更改暫存器(ACCESS)!
|
||||
---|---|---|---|---|
資深會員
|
大家好:
我該如何正確的使用C18的中斷? #pragma interrupt InterruptHandlerLow nosave=section(".tmpdata") void InterruptHandlerLow (void) { w_temp1=WREG; bsr_temp1=BSR; st_temp1=STATUS; if(TMR0IF) { TMR0IF=0; ... } if(ADIF) { ... ADIF=0; } STATUS=st_temp1; BSR=bsr_temp1; WREG=w_temp1; } // void InterruptHandlerHigh(void) { w_temp0=WREG; bsr_temp0=BSR; st_temp0=STATUS; ... STATUS=st_temp0; BSR=bsr_temp0; WREG=w_temp0; } 有使用AD就不行! 為何C18這麼難用呢? 煩請高手解說,Thanks.
發表於: 2008/9/17 17:11
|
|||
|
Re: 請問C18高低中斷,Compiler為何會更改暫存器(ACCESS)!
|
||||
---|---|---|---|---|
資深會員
|
大家好:
我想我的問題應是stack overflow, 所以應是C18使用軟體stack的關係. 那麼我該如何不使用軟體stack呢? 於Build option...內有一設定如下: Default storage class : Auto Static Overlay 請問上面三個差別為何? 煩請各位先進解說,Thanks.
發表於: 2008/9/17 11:11
|
|||
|
請問C18高低中斷,Compiler為何會更改暫存器(ACCESS)!
|
||||
---|---|---|---|---|
資深會員
|
大家好:
1. TMR0IE=1; //低中斷 TMR1IE=1; //高中斷 使用C18高低中斷,為何會將:如INTCON2的值改變掉? 將INTCON2的TMR0IE=0; 2. 而且PC會亂跑,不知為何? 程式長度為0x179F,卻會跑到0x2C5E或0x3478... 我該怎麼處理較好? 煩請各位先進解說. Thanks.
發表於: 2008/9/16 14:00
|
|||
|
Re: 不知為何ICD2會停止!!!
|
||||
---|---|---|---|---|
資深會員
|
大家好:
void main(void) { init(); //裡面有GIE=1,PEIE=1; wr_ee(3,0); ... } void wr_ee(uns8 data,uns8 addr) { EEADR = addr; EEDATA = data; EECON1bits.EEPGD = 0; EECON1bits.CFGS = 0; EECON1bits.WREN = 1; INTCONbits.GIE = 0; EECON2 = 0x55; //因GIE=0後ICD2會停止在這裡! EECON2 = 0xAA; EECON1bits.WR = 1; INTCONbits.GIE = 1; EECON1bits.WREN = 0; while(EECON1bits.WR); } 正常來講ICD2會一直RUN才對, 為何會停止!搞不懂?煩請幫忙解說. Thanks.
發表於: 2008/9/3 13:49
|
|||
|
Re: C30 旋轉指令
|
||||
---|---|---|---|---|
資深會員
|
你好:
我只會用這樣的方式,不知對你有沒有幫助? //C左旋1bit(1BYTE) example:A=0xAA; B=A&0x80; A<<=1; if(B!=0)A|=0x01; // //C右旋1bit(1BYTE) example:A=0x55; B=A&0x01; A>>=1; if(B!=0)A|=0x80;
發表於: 2008/9/2 11:45
|
|||
|
不知為何ICD2會停止!!!
|
||||
---|---|---|---|---|
資深會員
|
大家好:
我使用環境為MPLAB V8.10及C18, IC為P18F4423(8KX16b),tool為ICD2, 程式容量為0x15BF(下載燒錄時顯示), 因為程式一邊修整(有設一斷點); 一邊下載執行(RUN),可是有時候會停止在程式某處而不執行, 也不知為何會如此,不知各位先進是否有遇過相同經驗? 不知該如何處置較好! 煩請幫忙解說釋疑. Thanks.
發表於: 2008/9/2 11:14
|
|||
|