fastback86
Member
Regarding this project, https://pic16f628a.blogspot.com/2010/09/pic16f628a-ds1820-4-digit-seven-segment.html I'm having trouble compiling and I don't know if I'm doing something wrong or there's something wrong with the code itself. I'm trying to compile this code in MPLAB with Hi-Tech C as the compiler. I get a bunch of errors when I build the file.
Here's the error message:
Could someone try to compile the code and let me know if it works on their end? Thanks
Code:
/* Project name:
Seven-segment display digital thermometer
* Copyright:
(c) Rajendra Bhatt, 2010.
MCU: PIC16F628A
Oscillator: XT, 4.0 MHz
*/
// Temperature digits
unsigned short i, DD0=0x3f, DD1=0x3f,DD2=0x3f, CF_Flag=0xff, CF=0x3f, N_Flag;
// CF_Flag = 0: F, 1: C
// Variable to store temperature register value
unsigned temp_value=0, temp_whole;
unsigned int temp_fraction=0;
float temp_F;
//-------------- Function to Return mask for common cathode 7-seg. display
unsigned short mask(unsigned short num) {
switch (num) {
case 0 : return 0x3F;
case 1 : return 0x06;
case 2 : return 0x5B;
case 3 : return 0x4F;
case 4 : return 0x66;
case 5 : return 0x6D;
case 6 : return 0x7D;
case 7 : return 0x07;
case 8 : return 0x7F;
case 9 : return 0x6F;
case 10 : return 0x40; // Symbol '-'
case 11 : return 0x39; // Symbol C
case 12 : return 0x71; // Symbol F
case 13 : return 0x00; // Blank
} //case end
}
void display_temp(short DD0, short DD1, short DD2, short CF) {
for (i = 0; i<=200; i++) {
PORTB = DD0;
RA0_bit = 1; // Select Ones Digit
RA1_bit = 0;
RA2_bit = 0;
RA3_bit = 0;
delay_ms(5);
PORTB = DD1;
RA0_bit = 0;
RA1_bit = 1; // Select Tens Digit
RA2_bit = 0;
RA3_bit = 0;
delay_ms(5);
PORTB = DD2;
RA0_bit = 0;
RA1_bit = 0;
RA2_bit = 1; // Select +/- Digit
RA3_bit = 0;
delay_ms(5);
PORTB = CF;
RA0_bit = 0;
RA1_bit = 0;
RA2_bit = 0 ;
RA3_bit = 1; // Select CF Digit
delay_ms(5);
}
return;
}
void main() {
CMCON |= 7; // Disable Comparators
TRISB = 0x00; // Set PORTB direction to be output
PORTB = 0x00; // Turn OFF LEDs on PORTB
TRISA0_bit = 0; // RA.0 to RA3 Output
TRISA1_bit = 0;
TRISA2_bit = 0;
TRISA3_bit = 0;
//--- main loop
do {
N_Flag = 0; // Reset Temp Flag
//--- perform temperature reading
Ow_Reset(&PORTA, 4); // Onewire reset signal
Ow_Write(&PORTA, 4, 0xCC); // Issue command SKIP_ROM
Ow_Write(&PORTA, 4, 0x44); // Issue command CONVERT_T
display_temp(DD0, DD1, DD2,CF) ;
Ow_Reset(&PORTA, 4);
Ow_Write(&PORTA, 4, 0xCC); // Issue command SKIP_ROM
Ow_Write(&PORTA, 4, 0xBE); // Issue command READ_SCRATCHPAD
// Next Read Temperature
// Read Byte 0 from Scratchpad
temp_value = Ow_Read(&PORTA, 4);
// Then read Byte 1 from Scratchpad and shift 8 bit left and add the Byte 0
temp_value = (Ow_Read(&PORTA, 4) << 8) + temp_value;
if (temp_value & 0x8000) {
temp_value = ~temp_value + 1;
N_Flag = 1; // Temp is -ive
}
if (temp_value & 0x0001) temp_value += 1; // 0.5 round to 1
temp_value = temp_value >> 1 ;
if (CF_Flag == 0) {
if (N_Flag ==1) {
temp_F = (32.0-9.0*temp_value/5.0)*10 + 6;
if (temp_F < 0){
N_Flag=1;
temp_value = abs(temp_value);
}
else N_Flag = 0;
}
else temp_F = (9.0*temp_value/5.0+32.0)*10 + 6; //If decimal is greater or equal
// to 0.5, add 0.5
temp_value = temp_F/10;
CF = 12;
}
if (CF_Flag == 0xff) CF = 11;
DD0 = temp_value%10; // Extract Ones Digit
DD0 = mask(DD0);
DD1 = (temp_value/10)%10; // Extract Tens Digit
DD1 = mask(DD1);
DD2 = temp_value/100; // Extract Hundred digit
CF = mask(CF);
if (N_Flag == 1) DD2=10;
else if (DD2 == 0) DD2 = 13 ;
DD2 = mask(DD2) ;
PORTB=0x00;
CF_Flag =~CF_Flag;
} while (1);
}
Here's the error message:
Code:
Build C:\PK2 Lessons\LPC Demo Board\Clock_Temp\Clock_temp for device 16F628A
Using driver C:\Program Files\HI-TECH Software\PICC\9.83\bin\picc.exe
Make: The target "C:\PK2 Lessons\LPC Demo Board\Clock_Temp\clock.p1" is out of date.
Executing: "C:\Program Files\HI-TECH Software\PICC\9.83\bin\picc.exe" --pass1 "C:\PK2 Lessons\LPC Demo Board\Clock_Temp\clock.c" -q --chip=16F628A -P --runtime=default,+clear,+init,-keep,+osccal,-download,-resetbits,-stackcall,+clib --opt=default,+asm,-debug,-speed,+space,9 --warn=0 -D__DEBUG=1 --debugger=icd2 -g --asmlist "--errformat=Error [%n] %f; %l.%c %s" "--msgformat=Advisory[%n] %s" "--warnformat=Warning [%n] %f; %l.%c %s"
Warning [343] C:\PK2 Lessons\LPC Demo Board\Clock_Temp\clock.c; 35.1 implicit return at end of non-void function
Error [192] C:\PK2 Lessons\LPC Demo Board\Clock_Temp\clock.c; 39.1 undefined identifier "PORTB"
Error [192] C:\PK2 Lessons\LPC Demo Board\Clock_Temp\clock.c; 40.1 undefined identifier "RA0_bit"
Error [192] C:\PK2 Lessons\LPC Demo Board\Clock_Temp\clock.c; 41.1 undefined identifier "RA1_bit"
Error [192] C:\PK2 Lessons\LPC Demo Board\Clock_Temp\clock.c; 42.1 undefined identifier "RA2_bit"
Error [192] C:\PK2 Lessons\LPC Demo Board\Clock_Temp\clock.c; 43.1 undefined identifier "RA3_bit"
Warning [361] C:\PK2 Lessons\LPC Demo Board\Clock_Temp\clock.c; 44.1 function declared implicit int
Error [192] C:\PK2 Lessons\LPC Demo Board\Clock_Temp\clock.c; 69.1 undefined identifier "CMCON"
Error [192] C:\PK2 Lessons\LPC Demo Board\Clock_Temp\clock.c; 70.1 undefined identifier "TRISB"
Error [192] C:\PK2 Lessons\LPC Demo Board\Clock_Temp\clock.c; 71.1 undefined identifier "PORTB"
Error [192] C:\PK2 Lessons\LPC Demo Board\Clock_Temp\clock.c; 72.1 undefined identifier "TRISA0_bit"
Error [192] C:\PK2 Lessons\LPC Demo Board\Clock_Temp\clock.c; 73.1 undefined identifier "TRISA1_bit"
Error [192] C:\PK2 Lessons\LPC Demo Board\Clock_Temp\clock.c; 74.1 undefined identifier "TRISA2_bit"
Error [192] C:\PK2 Lessons\LPC Demo Board\Clock_Temp\clock.c; 75.1 undefined identifier "TRISA3_bit"
Warning [361] C:\PK2 Lessons\LPC Demo Board\Clock_Temp\clock.c; 83.1 function declared implicit int
Error [192] C:\PK2 Lessons\LPC Demo Board\Clock_Temp\clock.c; 83.11 undefined identifier "PORTA"
Warning [361] C:\PK2 Lessons\LPC Demo Board\Clock_Temp\clock.c; 84.1 function declared implicit int
Warning [361] C:\PK2 Lessons\LPC Demo Board\Clock_Temp\clock.c; 93.14 function declared implicit int
Warning [361] C:\PK2 Lessons\LPC Demo Board\Clock_Temp\clock.c; 108.14 function declared implicit int
Warning [356] C:\PK2 Lessons\LPC Demo Board\Clock_Temp\clock.c; 114.23 implicit conversion of float to integer
********** Build failed! **********
Could someone try to compile the code and let me know if it works on their end? Thanks