em đang làm lm35 với pic hiển thị led 7 thanh. nhưng chạy chương trình nó chỉ hiện toàn số 0000 trên led 7thanh. anh chị sửa giúp em với ạ. em dùng mplabX.thanks all!
#include <htc.h>
#include <pic16f887.h>
#include <stdio.h>
#include <stdlib.h>
#define _XTAL_FREQ 20000000
__CONFIG(FOSC_HS & WDTE_OFF & PWRTE_ON & MCLRE_ON & CP_OFF & CPD_OFF & BOREN_OFF & IESO_OFF & FCMEN_OFF & LVP_OFF);
__CONFIG(BOR4V_BOR21V & WRT_OFF);
const unsigned char ma_led[10]= {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
const unsigned maled[10]={0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90};
unsigned int i,nghin,tram,chuc,donvi;
unsigned int ADCvalue;
void port_init()
{
TRISA0=1;
TRISB=0;
TRISD=0;
PORTB=0xff;
PORTD=0xff;
}
void giatri()
{
nghin=i/1000;
tram=(i-nghin*1000)/100;
chuc=(i-nghin*1000-tram*100)/10;
donvi=i%10;
}
void hienthi()
{
PORTB = maled[donvi];
PORTD = 0b01111111;
__delay_ms(5);
PORTD=0xff;
PORTB= maled[chuc];
PORTD = 0b10111111;
__delay_ms(5);
PORTD=0xff;
PORTB= maled[tram];
PORTD = 0b11011111;
__delay_ms(5);
PORTD=0xff;
PORTB= maled[nghin];
PORTD = 0b11101111;
__delay_ms(5);
PORTD=0xff;
}
void ADCinit()
{
ADCS1 = 0;
ADCS0 = 1;
VCFG1 = 0;
VCFG0 = 0;
CHS3 = 0;
CHS2 = 0;
CHS1 = 1;
CHS0 = 1;
ADFM = 1;
ADON = 1;
__delay_ms (1);
}
void int_init()
{
GIE = 1; //Global Interrupt Enable
PEIE = 1; //Peripheral Interrupt Enable
ADIE = 1; //ADC Interrupt Enable
ADIF = 0; //Clear ADC Interrupt Flag
}
void main()
{
unsigned char TempValue;
unsigned int dien_ap;
port_init();
ADCinit();
int_init();
while(1)
{
dien_ap=5000/1023*ADCvalue;
TempValue=dien_ap/10;
hienthi(TempValue);
}
}