hctl 2032 for pic30 問題 |
缺席
|
p886222
一般會員 發表:4 回覆:10 積分:2 註冊:2010-10-21 發送簡訊給我 |
基本上我在pic18f4520寫,結果讀值非常正確,然後把它移值到16bit pic30f6015上,code 也沒改多少,如下
#include #include #define FCY 20000000/4 #define OE1 LATDbits.LATD9 #define SEL LATDbits.LATD8 #define RST LATDbits.LATD10 #define X_Y LATDbits.LATD11 _FOSC(CSW_FSCM_OFF & ECIO); // XT with 8xPLL oscillator, Failsafe clock off _FWDT(WDT_OFF); // Watchdog timer disabled _FBORPOR(PBOR_OFF & MCLR_EN); // Brown-out reset disabled, MCLR reset enabled _FGS(CODE_PROT_OFF); // Code protect disabled unsigned int i=0,high_byte=0,low_byte=0,count=0,P[600]={0},I=0; void Init_Timer1(void) ; void __attribute__((interrupt, no_auto_psv)) _T1Interrupt(void) { Nop(); OE1=0; SEL=0; high_byte=(PORTE); Nop(); SEL=1; Nop(); low_byte=(PORTE); OE1=1; count=((high_byte<<8)|low_byte); P[I ]=count; IFS0bits.T1IF = 0 ; } int main (void) { Init_Timer1() ; LATE=0X0000; PORTE=0x0000; TRISE=0xFFFF; //PORTE設為輸入 TRISDbits.TRISD8=0; //SEL TRISDbits.TRISD9=0; //OE TRISDbits.TRISD10=0; //RESET TRISDbits.TRISD11=0; //X/Y OE1=1; SEL=1; X_Y=0; RST=0; Nop(); Nop(); RST=1; //把RST拉高 while(1) { } } void Init_Timer1(void) //每50ms中斷一次 { ConfigIntTimer1( T1_INT_PRIOR_7 & T1_INT_ON ) ; // Timer1 的中斷優先等級設 7 (最高) // Timer1 的中斷 ON OpenTimer1( T1_ON & T1_IDLE_STOP & T1_GATE_OFF & // Timer1 的 Period 設為每 500 ms T1_PS_1_64 & T1_SYNC_EXT_OFF & T1_SOURCE_INT , (long)((FCY)/1000)*50/64 ) ; } 已上的code只有在中斷的地方寫法比較不同以外,我在pic18f4520上是沒問題的但移值過來,就是讀不正確,是用在16bit上要注意什麼嗎? |
p886222
一般會員 發表:4 回覆:10 積分:2 註冊:2010-10-21 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |