em viêt code đọc nhiệt độ từ LM35 the nay nhung khi mo phong thi không chạy?
các anh chị giúp em xem em thiếu những chỗ nào?
thanks anh chị
các anh chị giúp em xem em thiếu những chỗ nào?
thanks anh chị
HTML:
#include <htc.h>
#include <stdio.h>
#include "lcd.h"
__CONFIG(FOSC_INTRC_NOCLKOUT&MCLRE_ON*WDTE_OFF&LVP_OFF);
#define _XTAL_FREQ 4000000
//**************************CAC HAM TRONG CHUONG TRINH
void adc_init();
void lcd_init();
void adc_lcd();
void interrupt_init();
//--------------------------------
//KHOI TAP PORT
void port_init()
{
ANSEL|=1<<3;
ANSELH|=0; //RA3 LA INPUT
TRISA0=1;
TRISB=0X00; //PORTB LA OUTPUT
TRISE=0X00;
lcd_init();
lcd_puts("DO NHIET DO");
lcd_goto(1,1);
lcd_puts("LM35");
__delay_ms(1000);
}
//-------------------------------
void adc_init()
{
ADCS1=1; //CHON TAN SO LAY MAU
ADCS0=0; //suy ra toc do chuyen doi ADC la Fosc/32.
VCFG1=0; // chon dien ap lay mau la dien ap noi
VCFG0=0;
CHS3=0;
CHS2=0; //chon kenh AN3
CHS1=1;
CHS0=1;
ADFM=1; //CHON DINH DANG KET QUA ADC
ADON=1; //KET QUA DICH PHAI
}
//-------------------------
void interrupt_init()
{
ADIF=0;
ADIE=1;
GIE=1;
PEIE=1; //VI NGAT NGOAI VI NEN SET=1
}
//---------------------------
void interrupt isr()
{
int read_adc,val,temp;
if(ADIE&&ADIF)
{
ADIF=0;
read_adc=(ADRESH<<8|ADRESL);
read_adc=(read_adc*5000)/1024;
temp=read_adc/10;
}
}
void lcd_adc(int i)
{
char a,b,c,d;
a=i/1000;
b=(i-a*1000)/100;
c=(i-a*1000-b*100)/10;
d=i-a*1000-b*100-c*10;
lcd_putc(a+0x30);
lcd_putc(b+0x30);
lcd_putc(c+0x30);
lcd_putc(d+0x30);
lcd_puts("C");
}
void main()
{
port_init();
adc_init();
interrupt_init();
lcd_init();
while(1)
{
__delay_ms(100);
lcd_clear();
GO_nDONE;
}
}