mình có đoạn code này sao không quét được led mà led cứ nhấp nháy. Có ai giúp mình sửa đôaạn code này lại cho hoàn chỉnh được không vậy?
#include <REGX51.H>
#define led1 P2_0
#define led2 P2_1
int k,dem;
unsigned char Font[]={0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90};
void delay(int t)
{ int m,n;
for(m=0;m<=100;m++)
for(n=0;n<=t;n++);
}
void hien_so(void) //quyet led 7doan
{
led1=1;
P1=Font[k/10];
delay(60);
led1=0;
led2=1;
P1=Font[k%10];
delay(60);
led2=0;
}
void ngat_timer1() interrupt 3
{
TR1=0;
TH1=-25000/256;
TL1=-25000%256;
TR1=1;
dem++;
if(dem>10) {dem=0;k++;};
if(k>59) k=0;
}
void main(void)
{
while (1)
{
TMOD=0x11;
ET1=1;
EA=1;
TF1=1;
TH1=-25000/256;
TL1=-25000%256;
hien_so();
}
}
#include <REGX51.H>
#define led1 P2_0
#define led2 P2_1
int k,dem;
unsigned char Font[]={0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90};
void delay(int t)
{ int m,n;
for(m=0;m<=100;m++)
for(n=0;n<=t;n++);
}
void hien_so(void) //quyet led 7doan
{
led1=1;
P1=Font[k/10];
delay(60);
led1=0;
led2=1;
P1=Font[k%10];
delay(60);
led2=0;
}
void ngat_timer1() interrupt 3
{
TR1=0;
TH1=-25000/256;
TL1=-25000%256;
TR1=1;
dem++;
if(dem>10) {dem=0;k++;};
if(k>59) k=0;
}
void main(void)
{
while (1)
{
TMOD=0x11;
ET1=1;
EA=1;
TF1=1;
TH1=-25000/256;
TL1=-25000%256;
hien_so();
}
}
được reset và thiết lập mới lại. Còn bạn để trong vòng while(1){} thì giá trị thanh ghi đó luôn luôn mang giá tri như vậy nên ngắt của bạn sẽ không được thực hiện. do vậy hiện thị của bạn sẽ không đúng. ( còn bạn bảo led bạn bị nháy nháy , bạn thử thay đổi giá trị delay cho phù hợp để chương trình quét led ok nhé hoặc có thể do tran PNP trong mô phỏng có vấn đê, minh cũng đã gặp lỗi này rồi, còn tran PNP hay gặp lỗi là khi có tín hiệu 0 hay 1 thì nó đều mở nên sảy ra hiện tượng nháy nháy và làm cho hiện thị không như mong muốn ) 
. Hãy để lúc nào thật thoải mái rồi xem lại code rồi sẽ dần nhận ra thui. Chúc bạn nhanh tìm được lỗi 
Comment