Code:
void TM1_INT() interrupt 3 using 0 {
TH1=0x3c;
TL1=0xb0;
TF1=0;
TR1=0;
dem++; //Lap 20 lan se duoc 1 s
if(dem==20) {giay++; dem=0;}
if(giay>=60) {
giay=0;
phut++;
}
if(phut>=60) {
phut=0;
gio++;
}
if(gio>=24) gio =0;
TR1=1;
}
Để tính 1 s thì mình làm như sau : Sử dùng timer1 để đếm 50000 xung(TH1=0x3c;TL1=0xb0);, mỗi lần đếm được như vậy thì tăng biến dem lên 1. Sau 20 lần ta được 1 triệu xung tức 1 s. Lý thuyết là thế nhưng khi nạp vào VĐK thì nó lại đếm 1 s rất nhanh . Có phải mình tính toán sai chỗ nào không???

Comment