Re: PIC10F320電源切換LED
|
||||
---|---|---|---|---|
初級會員
|
您好,目前用ADC的方式已經可以用,但用HEF寫入和讀出資料都有問題,請問有無相關FLASH讀寫的教材或範例,謝謝
發表於: 2020/5/24 18:28
|
|||
|
Re: PIC10F320電源切換LED
|
||||
---|---|---|---|---|
初級會員
|
各位先進好,
請問我用ADC中斷的方式切換LED,但每次關掉再開,K的值有時不是按照順序,也就是LED有時會不按照順序亂閃,請問有什麼寫法可讓K的值有順序。 謝謝 void output() { switch(k) { case 1: PORTA0=1; PORTA1=0; break; case 2: PORTA1=1; PORTA0=0; break; case 3: PORTA0=1; Delay_ms(10); PORTA0=0; Delay_ms(10); PORTA1=0; break; case 4: PORTA1=1; Delay_ms(10); PORTA1=0; Delay_ms(10); PORTA0=0; break; } } void main() { init(); while(1) { output(); } } void interrupt ISR(void) { ADIF=0; //將ADC中斷FLAG清0 if(ADRES<0XC5 ) { if(ADRES<0XC0 ) { if(ADRES>0XB0 ) { k=k+1; if(k>4) { k=0; } } } } GO_nDONE=1; }
發表於: 2020/10/16 7:52
|
|||
|
Re: PIC10F320電源切換LED
|
||||
---|---|---|---|---|
版主
|
1. 變數 k 用在中斷函數裡。一定要用 volatile char k 的方式宣告,否則變數 k 在中斷函數是會被最佳化功能刪除造成 k 在主程式的值不會歸零。
發表於: 2020/10/16 11:01
|
|||
|
Re: PIC10F320電源切換LED
|
||||
---|---|---|---|---|
初級會員
|
您好,
改了也是一樣,關電再開,K值有時是3,再關電再開,K值有時是2,變成是亂數,不知還有沒有其它方法。 謝謝
發表於: 2020/10/18 15:53
|
|||
|
Re: PIC10F320電源切換LED
|
||||
---|---|---|---|---|
版主
|
volatile char k =0;
程式一開始有設定k的初始值=0嗎? 改一下中斷程式看看:
volatile char k=0;
發表於: 2020/10/20 9:07
Edited by Ryang on 2020年10月20日 11:10:05
|
|||
|
Re: PIC10F320電源切換LED
|
||||
---|---|---|---|---|
初級會員
|
您好,改了之後變成開電先執行k=0,再執行k=2,關電後再開也一樣先執行k=0,再執行k=2,k=1不會執行到。修改0XC5,0XC0,0XB0的值也一樣。會不會是關電再開,ADC也會像開關一樣會有彈跳,ADRES的值忽大忽小。
發表於: 2020/10/20 20:53
|
|||
|
Re: PIC10F320電源切換LED
|
||||
---|---|---|---|---|
版主
|
網站怪怪的,早上的回覆居然不見了。
程式裡的比較將 0xc0 與 0xc5 換一下,先比較最小的後再比較第二高的值...與此類推上去。 不過建議先設的寬一點的值從 0x40 --> 0x60 -->0x80 .... 先比較看看,switch case 的 k 值是從 1 開始判定,可以改從 0 開始嗎? 可以在 switch case 加入 default / break; 的判斷嗎?
發表於: 2020/10/21 13:57
|
|||
|