#include <pic.h>
CONFIG(0x3f72);
#define lcd PORTB
#define rs RE0
#define rw RE1
#define en RE2
unsigned int adc_data, an, inttemp;
float val, analog, temp;
unsigned char arr1[] = "Analog I/P:";
unsigned char arr2[] = "Room Temp:";
void delay
(unsigned int
count){
int i,j;
for(j=0;j<1275;j++);
}
void lcd_cmd(unsigned char value)
{
rs = 0;
rw = 0;
lcd = value;
en = 1;
delay(20);
en = 0;
}
void lcd_data(unsigned char item)
{
rs = 1;
rw = 0;
lcd = item;
en = 1;
delay(20);
en = 0;
}
void lcd_data_string(unsigned char *str)
{
int i = 0;
while(str[i] != '\0')
{
lcd_data(str[i]);
i++;
delay(10);
}
}
void main()
{
TRISB = 0X00;
TRISE = 0X00;
TRISA = 0XFF;
ADCON0 = 0xC1;
ADCON1 = 0xC2;
lcd_cmd(0x38);
lcd_cmd(0x0f);
lcd_cmd(0x01);
lcd_cmd(0x06);
lcd_cmd(0x80);
lcd_data_string(arr1);
lcd_cmd(0xC0);
lcd_data_string(arr2);
while(1)
{
ADCON0 = 0xC1;
GODONE = 1;
while(GODONE);
adc_data = ((ADRESH << 8) + ADRESL);
val = adc_data;
temp = adc_data;
inttemp = temp * 0.48; // your original logic
analog = (5.0 * val / 1023.0) * 1000; // fixed integer division
an = analog;
lcd_cmd(0x8B);
lcd_data((an/1000)+0x30);
lcd_data('.');
lcd_data(((an%1000)/100)+0x30);
lcd_data((((an%1000)%100)/10)+0x30);
lcd_data((((an%1000)%100)%10)+0x30);
lcd_data('V');
lcd_cmd(0xCC);
lcd_data((inttemp/1000)+0x30);
lcd_data(((inttemp%1000)/100)+0x30);
lcd_data((((inttemp%1000)%100)/10)+0x30);
lcd_data((((inttemp%1000)%100)%10)+0x30);
}
}
I2luY2x1ZGUgPHBpYy5oPgpDT05GSUcoMHgzZjcyKTsKCiNkZWZpbmUgbGNkIFBPUlRCCiNkZWZpbmUgcnMgUkUwCiNkZWZpbmUgcncgUkUxCiNkZWZpbmUgZW4gUkUyCgp1bnNpZ25lZCBpbnQgYWRjX2RhdGEsIGFuLCBpbnR0ZW1wOwpmbG9hdCB2YWwsIGFuYWxvZywgdGVtcDsKCnVuc2lnbmVkIGNoYXIgYXJyMVtdID0gIkFuYWxvZyBJL1A6IjsKdW5zaWduZWQgY2hhciBhcnIyW10gPSAiUm9vbSBUZW1wOiI7Cgp2b2lkIGRlbGF5KHVuc2lnbmVkIGludCBjb3VudCkKewogICAgaW50IGksajsKICAgIGZvcihpPTA7aTxjb3VudDtpKyspCiAgICAgICAgZm9yKGo9MDtqPDEyNzU7aisrKTsKfQoKdm9pZCBsY2RfY21kKHVuc2lnbmVkIGNoYXIgdmFsdWUpCnsKICAgIHJzID0gMDsKICAgIHJ3ID0gMDsKICAgIGxjZCA9IHZhbHVlOwogICAgZW4gPSAxOwogICAgZGVsYXkoMjApOwogICAgZW4gPSAwOwp9Cgp2b2lkIGxjZF9kYXRhKHVuc2lnbmVkIGNoYXIgaXRlbSkKewogICAgcnMgPSAxOwogICAgcncgPSAwOwogICAgbGNkID0gaXRlbTsKICAgIGVuID0gMTsKICAgIGRlbGF5KDIwKTsKICAgIGVuID0gMDsKfQoKdm9pZCBsY2RfZGF0YV9zdHJpbmcodW5zaWduZWQgY2hhciAqc3RyKQp7CiAgICBpbnQgaSA9IDA7CiAgICB3aGlsZShzdHJbaV0gIT0gJ1wwJykKICAgIHsKICAgICAgICBsY2RfZGF0YShzdHJbaV0pOwogICAgICAgIGkrKzsKICAgICAgICBkZWxheSgxMCk7CiAgICB9Cn0KCnZvaWQgbWFpbigpCnsKICAgIFRSSVNCID0gMFgwMDsKICAgIFRSSVNFID0gMFgwMDsKICAgIFRSSVNBID0gMFhGRjsKCiAgICBBRENPTjAgPSAweEMxOwogICAgQURDT04xID0gMHhDMjsKCiAgICBsY2RfY21kKDB4MzgpOwogICAgbGNkX2NtZCgweDBmKTsKICAgIGxjZF9jbWQoMHgwMSk7CiAgICBsY2RfY21kKDB4MDYpOwoKICAgIGxjZF9jbWQoMHg4MCk7CiAgICBsY2RfZGF0YV9zdHJpbmcoYXJyMSk7CgogICAgbGNkX2NtZCgweEMwKTsKICAgIGxjZF9kYXRhX3N0cmluZyhhcnIyKTsKCiAgICB3aGlsZSgxKQogICAgewogICAgICAgIEFEQ09OMCA9IDB4QzE7CiAgICAgICAgR09ET05FID0gMTsKICAgICAgICB3aGlsZShHT0RPTkUpOwoKICAgICAgICBhZGNfZGF0YSA9ICgoQURSRVNIIDw8IDgpICsgQURSRVNMKTsKCiAgICAgICAgdmFsID0gYWRjX2RhdGE7CiAgICAgICAgdGVtcCA9IGFkY19kYXRhOwoKICAgICAgICBpbnR0ZW1wID0gdGVtcCAqIDAuNDg7IC8vIHlvdXIgb3JpZ2luYWwgbG9naWMKCiAgICAgICAgYW5hbG9nID0gKDUuMCAqIHZhbCAvIDEwMjMuMCkgKiAxMDAwOyAvLyBmaXhlZCBpbnRlZ2VyIGRpdmlzaW9uCiAgICAgICAgYW4gPSBhbmFsb2c7CgogICAgICAgIGxjZF9jbWQoMHg4Qik7CiAgICAgICAgbGNkX2RhdGEoKGFuLzEwMDApKzB4MzApOwogICAgICAgIGxjZF9kYXRhKCcuJyk7CiAgICAgICAgbGNkX2RhdGEoKChhbiUxMDAwKS8xMDApKzB4MzApOwogICAgICAgIGxjZF9kYXRhKCgoKGFuJTEwMDApJTEwMCkvMTApKzB4MzApOwogICAgICAgIGxjZF9kYXRhKCgoKGFuJTEwMDApJTEwMCklMTApKzB4MzApOwogICAgICAgIGxjZF9kYXRhKCdWJyk7CgogICAgICAgIGxjZF9jbWQoMHhDQyk7CiAgICAgICAgbGNkX2RhdGEoKGludHRlbXAvMTAwMCkrMHgzMCk7CiAgICAgICAgbGNkX2RhdGEoKChpbnR0ZW1wJTEwMDApLzEwMCkrMHgzMCk7CiAgICAgICAgbGNkX2RhdGEoKCgoaW50dGVtcCUxMDAwKSUxMDApLzEwKSsweDMwKTsKICAgICAgICBsY2RfZGF0YSgoKChpbnR0ZW1wJTEwMDApJTEwMCklMTApKzB4MzApOwogICAgfQp9Cg==