CC5X -> XC8 PICプログラム書き換え(1)

お仕事です。

内容は、CC5Xコンパイラを使用しているPICプログラムをXC8コンパイラ用のプログラムに書き換えることです。
使用するPICはPIC18F14K50です。
プログラムは、CQ出版の雑誌に寄稿された、石神芳郎さんものです。一行ずつ頑張って変換していきます。
プログラム処理内容としては、太陽光発電で充電池を充電する際のMPPTを記述したものになります。

オリジナルプログラム

関数1 : int_server ( void )  割り込み処理をする関数。
内容 :
interrupt int_server ( void ) {
int_save_registers
if( INTCON & 0x01 )  {
INTCON &= ~0x09 ;
IOC &= ~0x08 ;
}
if( PIR1 & 0x01 ) {
PIR1 &= ~0x01 ;
sec_cnt ++ ;
}
exitproc:
FSR = sv_FSR ;
int_restore_registers
return ;
}

 

変換プログラム

関数名 : int_server ( void )
前提  : 割り込み設定など
*Timer0 割り込み
T1CON = 0b10100001;
bit 7  [RD16] : 1で1回の16bit動作によるTimer1のレジスタ読み書きを有効にする
bit 6 [T1RUN] : 0でメインシステムクロックをTimer1以外のソースから供給する
bit 5-4 [T1CKPS<1:0>] : Timer1入力クロックのプリスケール値を10で1:4に設定
bit 3 [T1OSCEN] : 0でTimer1オシレータ無効
bit 2 [T1SYNC] : 0でこのビットを無視しする。(bit 1に依存)
bit 1 [TMR1CS] : クロック選択ビット 0 で内部OSC
bit 0 [TMR1ON] : 1でTimer1を有効にす

PIR1bits.TMR1IF = 0      ///Timer1割り込みフラグをクリア
PIE1bits.TMR1IE = 1     ///Timer1からの割り込みを許可
*GPIO割り込みINT2を使用
INTCON3bits.INT2IE = 1  //INT2割り込み許可INTCON3bits.INT2IF = 0     //INT2割り込みフラグをクリア

*割り込み一般設定
RCON.IPEN = 0      ///割り込みに優先度を設けないINTCONbits.GIE = 1     ///ずべての割り込みを許可

内容 :
void interrupt intr(void){
//GPIO
//Timer1割り込み
if(PIR1bits.TMR1IF){
PIR1bits.TMR1IF = 0;     ///Timer割り込みフラグをクリアsec_cnt++;     ///秒数カウンタ
}
if(INTCON3bits.INT2IF){
INTCON3bits.INT2IF = 0;     ///割り込みクリアINTCON3bits.INT2IE = 1;     ///割り込み
}
}

今日はここまで。

コメントを残す

メールアドレスが公開されることはありません。