Mình có đoạn chương trình tạo trễ 1s mình tham khảo được.Mạch đã chạy nhưng mình đọc lại code thì chưa hiểu rõ lắm.Mong các bạn chỉ giúp.
Theo ý hiểu của mình thì Thanh ghi TMOD=0x20 thì timer hoạt động ở chế độ 2 timer 1. Nhưng trong vòng lặp thì lại khởi tạo cho thanh ghi TL0 của timer 0.( đây là chỗ không hiểu thứ nhất). Và chế độ 2 là chế độ tự nạp lại vậy nghĩa là (giả sử cho thanh ghi Timer0) thì TH0=155. Vậy cơ chế để tạo ra 1s trễ của hàm trên là như nào.
Mong các bạn giải đáp giúp mình với
void delay_ms(char x)
{
int i;
TMOD = 0x20;
for(i=0;i<=10*x;i++)
{
TL0 = 155;
TR0 = 1;
while(!TF0);
TR0 = 0;
TF0 = 0;
}
}
{
int i;
TMOD = 0x20;
for(i=0;i<=10*x;i++)
{
TL0 = 155;
TR0 = 1;
while(!TF0);
TR0 = 0;
TF0 = 0;
}
}
Mong các bạn giải đáp giúp mình với
Comment