A
armpicc2000
Guest
hi frenz
Aku hav disisipkan kode di bawah ini untuk menampilkan nilai dalam berbagai adc lcd .......tetapi saya tidak dapat menampilkan nilai-nilai plz help ......... untuk debug kode
# if defined (__PCM__)
# include <16F877A.H>
# sekering NOWDT, NOPROTECT, NOLVP
# menggunakan delay (jam = 6.144.000)
# menggunakan RS232 (baud = 9600, xmit = pin_c6, RCV = pin_c7)
# membangun (reset = 0x200, menyela = 0x204)
# org 0x004, 0x1ff
()
# endif
# define rs PIN_E0
# define en PIN_E1
# define b1 0,014662756598240469208211143695015
# define adc pin_a1
/ / int i;
void lcd_init ();
/ / void enable ();
float f1;
char str1 [20];
unsigned char * str;
/ / float f2 = 19,99;
/ / char bat1 [6];
/ / char b2 [6];
/ / void CNAME ();
void bvolt ();
void lcd_print (char * str1);
void lcd_write (unsigned char);
/ / void pvolt ();
adc_channel1 float ();
unsigned int hi1, lo1;
unsigned int16 fin1;
float volt1;
# byte ADCON1 = 0x9f
# byte ADCON0 = 0x1f
# byte ADRESL = 0x9e
# byte ADRESH = 0x1e
# BYTE PIR1 = 0X0c
# byte PIE1 = 0x8C
# bit ADIF = 0x0C.6
void main ()
(
/ / delay_ms (50);
lcd_init ();
str = 0x1A0;
/ / while (1)
(
/ / Lcd (); / / lcd config
/ / Output_high (RS); / / data mode
/ / CNAME ();
/ / delay_ms (250);
/ / Lcd ();
/ / Output_high (RS); / / data mode
/ / Pvolt ();
/ / delay_ms (250);
/ / adc_channel1 ();
/ / output_high (RS); / / data mode
bvolt ();
/ / delay_ms (250);
)
)/ * void lcd ()
(
output_low (RS); / / perintah pin_e0 diatur sebagai yang rendah adalah 0.
output_b (0x01); / / bersihkan layar
memungkinkan (); / / pin_e1 dinonaktifkan dan kemudian diaktifkan
output_b (0x02); / / kembali ke rumah
memungkinkan ();
output_b (0x06); / / increment kursor
memungkinkan ();
output_b (0x0E); / / kursor berkedip
memungkinkan ();
output_b (0x80); / / lcd's 1st line
memungkinkan ();
/ / output_b (0x3C); / / 4 baris lcd config
/ / Mengaktifkan ();
) * /
/ * void enable ()
(
output_low (E);
delay_ms (100);
output_high (E);
) * /
/ * void CNAME ()
(
char CNAME [] = "AMAN World";
for (i = 0; CNAME ! = '\ 0'; i )
(
delay_ms (500);
output_b (CNAME );
memungkinkan ();
)
) * /
void bvolt ()
(
strcpy (str, "Batt VOLT");
delay_ms (500);
lcd_print (str);
delay_ms (500);
f1 = adc_channel1 ();
sprintf (str, "\ f% f", f1);
delay_ms (500);
lcd_print (str);
delay_ms (500);
)
/ / char bvolt [] = "Batt VOLT =";
/ * For (i = 0; bvolt ! = '\ 0'; i )
(
delay_ms (500);
output_b (bvolt );
memungkinkan ();
)
/ / f1 = adc_channel1 ();
for (i = 0; bat1 ! = '\ 0'; i )
(
delay_ms (500);
sprintf (bat1, "% f", f1);
delay_ms (500);
output_b (bat1 );
memungkinkan ();
)
) * /
/ * void pvolt ()
(
char pvolt [] = "PAN VOLT =";
for (i = 0; pvolt ! = '\ 0'; i )
(
delay_ms (500);
output_b (pvolt );
memungkinkan ();
)
for (i = 0; b2 ! = '\ 0'; i )
(
sprintf (b2, "% f", f2);
delay_ms (500);
output_b (b2 );
memungkinkan ();
)
) * /adc_channel1 float ()
(
ADCON0 = 0xCD;
ADCON1 = 0xC0;
PIE1 = 0x40;
PIR1 = 0x40;
delay_ms (50);
while (ADIF! = 1);
(hi1 = ADRESH;
lo1 = ADRESL
ADIF = 0;/ / fin = (hi <<
<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Dingin" border="0" />
| Lo;
fin1 = make16 (hi1, lo1);
/ / printf ( "\ n \ N10 bit =% 2x", sirip);
/ / printf ( "\ n \ ndecimalvalue =% ld", sirip);
volt1 = (float) (fin1 * b1);
/ / v1 = volt/1000;
/ / v2 = volt% 1000;
printf ( "\ n \ n% f", volt1);
output_float (adc);
delay_ms (500);
kembali volt1;
)
void lcd_print (char * str1)
(
output_low (rs);
lcd_write (0x01);
output_high (rs);
while (* str1! = 0)
(
lcd_write (* str1);
str1 ;
)
)
void lcd_write (unsigned char a)
(
output_b (a);
output_high (id);
delay_ms (1);
output_low (id);
delay_ms (1);
)
lcd_init void (void)
(
output_low (rs);
/ / lcd_nibble_write (0x20);
lcd_write (0x01);
lcd_write (0x02);
lcd_write (0x06);
lcd_write (0x0e);
lcd_write (0x3c);
lcd_write (0x80);
output_high (rs);
)
Aku hav disisipkan kode di bawah ini untuk menampilkan nilai dalam berbagai adc lcd .......tetapi saya tidak dapat menampilkan nilai-nilai plz help ......... untuk debug kode
# if defined (__PCM__)
# include <16F877A.H>
# sekering NOWDT, NOPROTECT, NOLVP
# menggunakan delay (jam = 6.144.000)
# menggunakan RS232 (baud = 9600, xmit = pin_c6, RCV = pin_c7)
# membangun (reset = 0x200, menyela = 0x204)
# org 0x004, 0x1ff
()
# endif
# define rs PIN_E0
# define en PIN_E1
# define b1 0,014662756598240469208211143695015
# define adc pin_a1
/ / int i;
void lcd_init ();
/ / void enable ();
float f1;
char str1 [20];
unsigned char * str;
/ / float f2 = 19,99;
/ / char bat1 [6];
/ / char b2 [6];
/ / void CNAME ();
void bvolt ();
void lcd_print (char * str1);
void lcd_write (unsigned char);
/ / void pvolt ();
adc_channel1 float ();
unsigned int hi1, lo1;
unsigned int16 fin1;
float volt1;
# byte ADCON1 = 0x9f
# byte ADCON0 = 0x1f
# byte ADRESL = 0x9e
# byte ADRESH = 0x1e
# BYTE PIR1 = 0X0c
# byte PIE1 = 0x8C
# bit ADIF = 0x0C.6
void main ()
(
/ / delay_ms (50);
lcd_init ();
str = 0x1A0;
/ / while (1)
(
/ / Lcd (); / / lcd config
/ / Output_high (RS); / / data mode
/ / CNAME ();
/ / delay_ms (250);
/ / Lcd ();
/ / Output_high (RS); / / data mode
/ / Pvolt ();
/ / delay_ms (250);
/ / adc_channel1 ();
/ / output_high (RS); / / data mode
bvolt ();
/ / delay_ms (250);
)
)/ * void lcd ()
(
output_low (RS); / / perintah pin_e0 diatur sebagai yang rendah adalah 0.
output_b (0x01); / / bersihkan layar
memungkinkan (); / / pin_e1 dinonaktifkan dan kemudian diaktifkan
output_b (0x02); / / kembali ke rumah
memungkinkan ();
output_b (0x06); / / increment kursor
memungkinkan ();
output_b (0x0E); / / kursor berkedip
memungkinkan ();
output_b (0x80); / / lcd's 1st line
memungkinkan ();
/ / output_b (0x3C); / / 4 baris lcd config
/ / Mengaktifkan ();
) * /
/ * void enable ()
(
output_low (E);
delay_ms (100);
output_high (E);
) * /
/ * void CNAME ()
(
char CNAME [] = "AMAN World";
for (i = 0; CNAME ! = '\ 0'; i )
(
delay_ms (500);
output_b (CNAME );
memungkinkan ();
)
) * /
void bvolt ()
(
strcpy (str, "Batt VOLT");
delay_ms (500);
lcd_print (str);
delay_ms (500);
f1 = adc_channel1 ();
sprintf (str, "\ f% f", f1);
delay_ms (500);
lcd_print (str);
delay_ms (500);
)
/ / char bvolt [] = "Batt VOLT =";
/ * For (i = 0; bvolt ! = '\ 0'; i )
(
delay_ms (500);
output_b (bvolt );
memungkinkan ();
)
/ / f1 = adc_channel1 ();
for (i = 0; bat1 ! = '\ 0'; i )
(
delay_ms (500);
sprintf (bat1, "% f", f1);
delay_ms (500);
output_b (bat1 );
memungkinkan ();
)
) * /
/ * void pvolt ()
(
char pvolt [] = "PAN VOLT =";
for (i = 0; pvolt ! = '\ 0'; i )
(
delay_ms (500);
output_b (pvolt );
memungkinkan ();
)
for (i = 0; b2 ! = '\ 0'; i )
(
sprintf (b2, "% f", f2);
delay_ms (500);
output_b (b2 );
memungkinkan ();
)
) * /adc_channel1 float ()
(
ADCON0 = 0xCD;
ADCON1 = 0xC0;
PIE1 = 0x40;
PIR1 = 0x40;
delay_ms (50);
while (ADIF! = 1);
(hi1 = ADRESH;
lo1 = ADRESL
ADIF = 0;/ / fin = (hi <<
<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Dingin" border="0" />
| Lo;
fin1 = make16 (hi1, lo1);
/ / printf ( "\ n \ N10 bit =% 2x", sirip);
/ / printf ( "\ n \ ndecimalvalue =% ld", sirip);
volt1 = (float) (fin1 * b1);
/ / v1 = volt/1000;
/ / v2 = volt% 1000;
printf ( "\ n \ n% f", volt1);
output_float (adc);
delay_ms (500);
kembali volt1;
)
void lcd_print (char * str1)
(
output_low (rs);
lcd_write (0x01);
output_high (rs);
while (* str1! = 0)
(
lcd_write (* str1);
str1 ;
)
)
void lcd_write (unsigned char a)
(
output_b (a);
output_high (id);
delay_ms (1);
output_low (id);
delay_ms (1);
)
lcd_init void (void)
(
output_low (rs);
/ / lcd_nibble_write (0x20);
lcd_write (0x01);
lcd_write (0x02);
lcd_write (0x06);
lcd_write (0x0e);
lcd_write (0x3c);
lcd_write (0x80);
output_high (rs);
)