先日作ったUBW基板にMikroCでプログラミングしてみました。
基板をブレッドボードに挿し、cdsから読み取ったアナログ値をLCDに表示させるというものです。
Swordfish添付のサンプルプログラムADIn.basと同じ機能をC言語で書いてみたのが以下のコードです。
void main() {
unsigned int temp;
char dsp[7];PORTC = 0;
TRISC = 0;
TRISB = 0;
TRISA = 0xFF;
ADCON0 = 1;
ADCON1 = 0x7;// Lcd_Init(&PORTB);
Lcd_Config(&PORTB, 3, 2, 1, 7, 6, 5, 4);
Lcd_Cmd(Lcd_CLEAR);
Lcd_Cmd(Lcd_CURSOR_OFF);while(1) {
PORTC.F0 = ~PORTC.F0;
PORTC.F1 = ~PORTC.F0;
temp = (Adc_Read(0) + 1) * 500 / 1024;
Delay_ms(500);
IntToStr(temp, dsp);
Lcd_Out(1, 1, "DC Volts");
Lcd_Out(2, 1, dsp);}
}
// Lcd_Init(&PORTB);
の部分はLCDの配線をSFC用にしているため、
Lcd_Config(&PORTB, 3, 2, 1, 7, 6, 5, 4);
に置き換えています。
PORTC.F0 = ~PORTC.F0;
PORTC.F1 = ~PORTC.F0;
はLEDの赤と緑を交互に点滅させるオマケです。
コードの行数はSFCと遜色ないですが、18PICともなるとレジスタ設定が多岐にわたり、ちょっと大変でした。