Initialization
Code:
void Init() {
int i;
// buttons = 0;
OSCCON = 0b01110010; // Select 8 MHz internal oscillator
LCDSE0 = 0b11111111; // Enable LCD segments 07-00
LCDSE1 = 0b11111111; // Enable LCD segments 15-08
LCDSE2 = 0b11111111; // Enable LCD segments 23-16
LCDSE3 = 0b00000000; // Disable LCD segments 31-24
LCDCON = 0b10001000; // Enab LC controller. Static mode. INTRC clock
LCDPS = 0b00110110; // 37 Hz frame frequency
ADCON1 = 0b00111111; // Make all ADC/IO pins digital
TRISA = 0b00000011; // RA0 and RA1 pbutton
TRISB = 0b00100001; // RB0 and RB5 pbutton
TRISC = 0b00011000; // RC3 and RC4 do the I2C bus
TRISG = 0b11111111; // RG0, RG1 & RG3 pbutton
PORTA = 0;
PORTB = 0;
PORTC = 0;
INTCONbits.TMR0IF = 0; // Clear timer flag
T0CON = 0b00000011; // Prescale by 16
T0CON = 0b00001000; // No prescale
TMR0H = 0; // Clear timer count
TMR0L = 0;
T0CONbits.TMR0ON = 1; // Start timer
OpenI2C( MASTER, SLEW_OFF);
SSPADD = 0x3F;
// vi = 8;
}
Code:
void digwrt(int num1, int num2, int num3)
{
switch (num1){
case 0: LCDDATA0 = 0b00111111;
LCDDATA2 = 0b01000000;break;
case 1: LCDDATA0 = 0b00000110; LCDDATA2 = 0b01000000;break;
case 2: LCDDATA0 = 0b01011011; LCDDATA2 = 0b01000000;break;
case 3: LCDDATA0 = 0b01001111; LCDDATA2 = 0b01000000;break;
case 4: LCDDATA0 = 0b01100110; LCDDATA2 = 0b01000000;break;
case 5: LCDDATA0 = 0b01101101; LCDDATA2 = 0b01000000;break;
case 6: LCDDATA0 = 0b01111101; LCDDATA2 = 0b01000000;break;
case 7: LCDDATA0 = 0b00000111; LCDDATA2 = 0b01000000;break;
case 8: LCDDATA0 = 0b01111111; LCDDATA2 = 0b01000000;break;
case 9: LCDDATA0 = 0b01101111; LCDDATA2 = 0b01000000;break;
}
switch (num2){
case 0: LCDDATA1 = 0b00011111;
` LCDDATA0 = LCDDATA0 ^= 0b10000000;
LCDDATA2 = 0b01000000; break;
case 1: LCDDATA1 = 0b00000011; LCDDATA2 = 0b01000000;break;
case 2: LCDDATA1 = 0b00101101;
LCDDATA0 = LCDDATA0 ^= 0b10000000; LCDDATA2 = 0b01000000;break;
case 3: LCDDATA1 = 0b00100111;
LCDDATA0 = LCDDATA0 ^= 0b10000000; LCDDATA2 = 0b01000000;break;
case 4: LCDDATA1 = 0b00110011;
LCDDATA2 = 0b01000000;break;
case 5: LCDDATA1 = 0b00110110;
LCDDATA0 = LCDDATA0 ^= 0b10000000; LCDDATA2 = 0b01000000;break;
case 6: LCDDATA1 = 0b00111110;
LCDDATA0 = LCDDATA0 ^= 0b10000000; LCDDATA2 = 0b01000000;break;
case 7: LCDDATA1 = 0b00000011;
LCDDATA0 = LCDDATA0 ^= 0b10000000; LCDDATA2 = 0b01000000;break;
case 8: LCDDATA1 = 0b00111111;
LCDDATA0 = LCDDATA0 ^= 0b10000000; LCDDATA2 = 0b01000000;break;
case 9: LCDDATA1 = 0b00110111;
LCDDATA0 = LCDDATA0 ^= 0b10000000; LCDDATA2 = 0b01000000;break;
}
switch (num3){
case 0: LCDDATA0 = LCDDATA0 ^= 0b10000000;
LCDDATA2 = 0b01001111;
LCDDATA1 = LCDDATA1 ^= 0b11000000; break;
case 1: LCDDATA2 = 0b01000001;
LCDDATA1 = LCDDATA1 ^= 0b10000000; break;
case 2:
LCDDATA2 = 0b01010110;
LCDDATA1 = LCDDATA1 ^= 0b11000000; break;
case 3:
LCDDATA2 = 0b01010011;
LCDDATA1 = LCDDATA1 ^= 0b11000000; break;
case 4: LCDDATA2 = 0b01011001;
LCDDATA1 = LCDDATA1 ^= 0b10000000; break;
case 5: LCDDATA2 = 0b01011011;
LCDDATA1 = LCDDATA1 ^= 0b01000000; break;
case 6: LCDDATA2 = 0b01011111;
LCDDATA1 = LCDDATA1 ^= 0b01000000; break;
case 7: LCDDATA2 = 0b01000001;
LCDDATA1 = LCDDATA1 ^= 0b11000000; break;
case 8: LCDDATA2 = 0b01011111;
LCDDATA1 = LCDDATA1 ^= 0b11000000; break;
case 9: LCDDATA2 = 0b01011011;
LCDDATA1 = LCDDATA1 ^= 0b11000000; break;
case 10:
LCDDATA2 = 0b01101111;
LCDDATA1 = LCDDATA1 ^= 0b11000000; break;
}
}
Code:
void main(void) {
unsigned char in=0,m=0,n=0;
int c, gerr, x, y, z;
int f;
dly(20);
Init();
FMinit();
x=5;
y=8;
z=8;
digwrt(x,y,z);
for (;;) {
dly(200);
if (!PORTAbits.RA0){
x++;
if((x==1)&&(y==8)&&(z==10)){
x=5;
y=7;
z=8;
digwrt(x,y,z);
}
else if(x==10){
x=0;
y++;
if(y==10){
y=0;
z++;
if(z==10){
z=10;
}
}
digwrt(x,y,z);
}
else{
digwrt(x,y,z);
dly(100);
}
f = (x+(10*y)+(100*z))+690;
FMfrequenc(f);
}
else if(!PORTAbits.RA1){
x--;
if((x==4)&&(y==7)&&(z==8)){
x=0;
y=8;
z=10;
digwrt(0,8,10);
}
else if(x==-1){
x=9;
y--;
if(y==-1){
y=9;
z--;
}
digwrt(x,y,z);
}
else{
digwrt(x,y,z);
dly(100);
}
f = (x+(10*y)+(100*z))+690;
FMfrequenc(f);
}
Any help is very much appreciated
I could also supply the whole code if it is necessary to help you guys analyze the program.

