VD: tao xung 10kHz tren P1.1, biet thach anh 12MHz
trương trình:
#include<reg52.h>
sbit F=P1^1;
void main (void)
{
TMOD = 0x02; // time 0 mode 2
TH0 = -50; //He so chia la 100
TR0=1;
while(1)
{
while(!TF0); // cho co tran
TF0=0; // xoa co tran
F=~F; //dao muc
}
}
bài trên đây em lấy từ sách VĐK cấu trúc- lap trình - ứng dụng của kiều xuân thực chủ biên.
Các anh giải thick hộ em thắc mắc sau:
Em hiểu vì sao lại là chia 100 nhưng không hiểu tại sao lại nạp giá trị là -50 cho TH0. Trong khi sách giáo trình nói là TL0 chứa giá trị đếm TH0 giá trị nạp lại và nó đếm đến 255 thì tràn. Nhưng khi nhìn code này thì e ko hiểu. E nghĩ nó phải nạp TH0 từ 205 để đếm đến 255 để xảy ra tràn nhưng ở đây có vẻ như là đếm từ -50 về 0;
trương trình:
#include<reg52.h>
sbit F=P1^1;
void main (void)
{
TMOD = 0x02; // time 0 mode 2
TH0 = -50; //He so chia la 100
TR0=1;
while(1)
{
while(!TF0); // cho co tran
TF0=0; // xoa co tran
F=~F; //dao muc
}
}
bài trên đây em lấy từ sách VĐK cấu trúc- lap trình - ứng dụng của kiều xuân thực chủ biên.
Các anh giải thick hộ em thắc mắc sau:
Em hiểu vì sao lại là chia 100 nhưng không hiểu tại sao lại nạp giá trị là -50 cho TH0. Trong khi sách giáo trình nói là TL0 chứa giá trị đếm TH0 giá trị nạp lại và nó đếm đến 255 thì tràn. Nhưng khi nhìn code này thì e ko hiểu. E nghĩ nó phải nạp TH0 từ 205 để đếm đến 255 để xảy ra tràn nhưng ở đây có vẻ như là đếm từ -50 về 0;
Comment