Bạn nên khai báo biến Float a tại đoạn đầu chương trình và bỏ tất cả các khai báo biến float a Trong main và #INT RB như sau thi biên dịch không bị lỗi:
#include <16f877a.h>
#include <def_877a.h>
#FUSES NOWDT, XT, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT
#device *=16 adc=10
#use delay(clock=4000000)
#include <thao2.c>// LCD 4bit.c
#use rs232(baud=9600,parity=n,xmit=pin_C6,rcv=pin_C7)
float a;
#INT_RB
Void RB_Chuan_Zero ( )
{
// float a=0; ( bỏ dòng này)
a=(float)read_adc();
}
void main()
{
trisb=0xF0;
enable_interrupts ( INT_RB ) ;
enable_interrupts ( GLOBAL ) ;
{
float value=0 ;//a=0 (bỏ biến này)
trisa=0xFF;
trisd=0x00;
LCD_Init ( );
LCD_putcmd(0x84);
LCD_putchar("KHOI LUONG");
LCD_putcmd(0xCA);
LCD_putchar(" g");
start:
setup_adc_ports( ALL_ANALOG );
setup_adc(ADC_CLOCK_INTERNAL);
set_adc_channel(1);
delay_us(10);
value=(float)read_adc();
value=(value-a)*0.977;
LCD_putcmd(0xC5);
printf(LCD_putchar, "%f", value );
delay_ms( 500 );
goto start;
}
}
Còn ý đồ viết chương trình của bạn tôi chưa hiểu lắm.
Chúc vui!
|