Theo tui nghĩ là nó không hiển thị luôn!!!!!!!!!!!. Khi chương trình chạy nó bị "rơi" vào vòng lặp vô tận của hàm While(1), portb thay đổi nhưng portd luôn bằng 0x00.
Thử sửa như bên dưới coi thử có chạy đúng không!!!?. Con led 7 đoạn không thể dùng hàm delay_ms(200); được, lý do là khi đang delay sẽ có 1 con led sáng thôi, k chạy đến 50, một vòng hien_thi() mất cỡ 4ms, tổng cộng cỡ 200ms!!!!!!!!!.
#include <16F877A.h>
#device *=16
#use delay(clock = 20M)
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT
#use fast_io(b)
#byte portb=0x6
#use fast_io(d)
#byte portd=0x8
Void hien_thi();
int8 font[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x9 0};
int8 ch,dv,tr,ng;
int16 i,k;
void main ()
{
set_tris_b(0);
set_tris_d(0);
portd=0x00;
while(1)
{
for(i=0;i<=9999;i++)
{
for(k=0;k<=50;k++)
{
hien_thi();
}
}
}
}
Void hien_thi()
{
ng= i/1000;
tr= (i%1000)/100;
ch= (i%100)/10;
dv= i%10 ;
portb=(font[dv]);
portd=(0x01);
delay_us(1000);
portd=(0x00);
portb=(font[ch]);
portd=(0X02);
delay_us(1000);
portd=(0x00);
portb=(font[tr]);
portd=(0x04);
delay_us(1000);
portd=(0x00);
portb=(font[ng]);
portd=(0X08);
delay_us(1000);
portd=(0x00);
}
|