Professional Documents
Culture Documents
NguyenLongNhat
NguyenLongNhat
MAIN:
SETB P1.0
ACALL DELAY300US
CLR P1.0
ACALL DELAY700US
SJMP MAIN
DELAY3000US:
SETB TR0
JNB TF0, $
CLR TR0
CLR TF0
RET
DELAY7000US:
SETB TR0
JNB TF0, $
CLR TR0
CLR TF0
RET
END
Câu 2
#include <8051.h>
// Định nghĩa các hằng số
#define XTAL_FREQ 12000000UL // Tần số thạch anh (12MHz)
#define PWM_FREQ 500 // Tần số sóng vuông (500Hz)
// Hàm trễ (delay) sử dụng để đảm bảo chu kỳ làm việc đúng
void delay(unsigned int count) {
while (count--);
}
void main() {
// Thiết lập chân P1.0 là ngõ ra
P1_0 = 0; // Xác định trạng thái ban đầu là 0
P1_0 = 1; // Xác định trạng thái ban đầu là 1
while (1) {
// Kiểm tra xem nếu giá trị Timer 0 lớn hơn hay bằng 128, thì đảo trạng thái
của ngõ ra P1.0
if (TF0) {
TF0 = 0; // Đặt lại cờ tràn
P1_0 = !P1_0; // Đảo trạng thái của ngõ ra
}
}
}