Thấy các pác làm việc với xung vuông thích quá hôm nay em post lên một bài làm thử mọi người tham khảo nhé
// chương trình tạo xung vuông 1kHz qua chân P2.0, sử dụng thạch anh 12 MHz
// Biên dịch và lập trình bằng chương trình 8501:
#include<reg52.h> // Thư viện chuẩn
sbit F=P2^0; // gán địa chỉ port 2 vào biến F (tần số)
void main (void) // Chương trình chính
{ TMOD=0x10; // sử dụng bộ định thời TIMER 1 chế độ 0
while(1) // lặp vô hạn
{
TH1=65035/256; // sẽ giải thích ở cuối chương trình
TL1=65035%256;
while (TF1==0);
TR1=0;
TF1=0;
F=~F; // đảo xung
}
}
// giải thích thêm:
Thạch anh của VDK khi qua bộ chia tần trong VDK thì tần số là 1MHz =>> chu kì T=1/f =10^-6 (s)
xung cần tạp là F=1KHz=1000Hz =>> T=10^-3 (s) =>> T/2=5.10^-4 (s)
Vậy để tạo được xung là 1KHZ thì ta phải đếm 500 lần rồi đảo chiều xung.
Ta nạp vào thanh ghi :65035
by:nguyensiluan@gmail.com
// chương trình tạo xung vuông 1kHz qua chân P2.0, sử dụng thạch anh 12 MHz
// Biên dịch và lập trình bằng chương trình 8501:
#include<reg52.h> // Thư viện chuẩn
sbit F=P2^0; // gán địa chỉ port 2 vào biến F (tần số)
void main (void) // Chương trình chính
{ TMOD=0x10; // sử dụng bộ định thời TIMER 1 chế độ 0
while(1) // lặp vô hạn
{
TH1=65035/256; // sẽ giải thích ở cuối chương trình
TL1=65035%256;
while (TF1==0);
TR1=0;
TF1=0;
F=~F; // đảo xung
}
}
// giải thích thêm:
Thạch anh của VDK khi qua bộ chia tần trong VDK thì tần số là 1MHz =>> chu kì T=1/f =10^-6 (s)
xung cần tạp là F=1KHz=1000Hz =>> T=10^-3 (s) =>> T/2=5.10^-4 (s)
Vậy để tạo được xung là 1KHZ thì ta phải đếm 500 lần rồi đảo chiều xung.
Ta nạp vào thanh ghi :65035
by:nguyensiluan@gmail.com
Comment