藉著換了新版子及新的加速儀後,在修改PIC內的程式的小筆記心得,這邊跳過簡單的C語言
變數設定那些直接就重點部份做紀錄><
使用軟體為MPLab
@若PIC單晶片為18系列使用MCC18 compiler,且必須加入PIC18xxxx型號的 .lkr檔以及.h檔
16系列則不用.lkr檔
1.首先先寫個副程式來定義PIC腳位的I/O設定(Init_PIC)
EX:
TRISAbits.TRISA0=1; 代表將RA0為Input輸入專用腳位
反之 TRISCbits.TRISC4=0; 代表將RC4為ouput輸出專用腳位
NOTE: 1=input,0=output
若要直接對其腳位給値,則可使用
PORTCbits.RC5=1; 1為拉高電位或可視為ON,( LED燈亮)
NOTE:注意TRISAbits.TRISxx 以及 PORTbits.Rxx兩者的差別在於
TRISA為專門設定腳位的I/O使用,但若是要對其腳位做給値的動作則要使用PORT
2.對AD轉換做初始化 Init_ADC
以18f2523此PIC單晶片來說需設定ADCON0、ADCON1、ADCON2這三個,如何設定參考datasheet。
ADCON0式設定類比轉換的模式,這邊參考datasheet即可
ADCON1主要是設定十二組類比轉換的頻道(腳位),datasheet中會說明要如何給値,這邊主要是選擇哪幾根腳要設定為類比接收用,哪幾根要數位控制用,依照不同需求做設定
EX:
ADCON1=0b00010000; 這邊bits5-8為1000依照datasheet說明是代表12個頻道都為類比
若需要4組數位頻道來做控制及他則為頻道則可依照datasheet設定為0110及可
ADCON2同樣參考datasheet即可做簡單的設定
3. Timer 周期設定 Init_timer1
這邊主要用到timer1來做周期的計算設定,
T1CON=0b10110000; 主要需注意bits 4 5為設定倍率,在此11代表1:8下面會做詳細說明
TMR1H=TMR1L=0;
假如我們的石英震盪器選擇20MHz,而希望擷取頻率為20Hz(代表一秒鐘可收到20筆資料)
則計算式如下:
(1/20MHz)*4*8*(31250)=0.05 設定Hz主要參考Timer1的設定,1指令周期為4次機械周期因此乘上4將其轉為機械周期,而8就是因為T1con設定的倍數為1:8,因此要乘上8,等號右邊為我們想要的周期大小0.05也就是20Hz,括號內的數值就是我們需要計算出來的數)
EX:
Init_Interrupt();
Init_Timer1();
IPR1bits.TMR1IP=1; 設定 Timer1 中斷為最高優先
PIE1bits.TMR1IE=1; 啟動 Timer1 中斷功能
PIR1bits.TMR1IF=0; / 清除 Timer1 中斷旗標
TMR1H=(65536-31250)>>8; 計算到31250便中斷一次
TMR1L=(65536-31250)%256;
T1CONbits.TMR1ON=1;
沒有留言:
張貼留言