View Full Version : Code trên có gì sai không? Giúp với...
myanco2003
10-09-2012, 03:44 PM
Đoạn chương trình trên mình viết trên Batronix để tạo giá trị ngõ ra P1.0 là 0 và 1 sau khoảng gian khoảng 1s. Tuy nhiên gắn qua led thì thấy led vẫn sáng hoài.#-o Có bác nào biết lỗi sai chỗ nào không #-o ? Giúp mình với , mình xin cảm ơn.:D
INCLUDE 89C51.MC
ORG 0000H
CLR p1.0;
CLR p1.1;
CLR p1.2;
CLR p1.3;
CLR p1.4;
CLR p1.5;
CLR p1.6;
CLR p1.7;
BATDAU:
SETB P1.0;
call delay1s;
CLR p1.0;
call delay1s;
JMP batdau;
delay1s:
MOV R7,#2;
loop:
MOV R6,#250;
DJNZ R6,$;
DJNZ R7,loop;
RET
END
myanco2003
10-09-2012, 03:44 PM
chào nnvkct!
theo mình chương trình của bạn ko sai.
Nhưng có lẽ khoảng thời gian trong ctc delay1s là quá ngắn nên ko nhìn thấy nó tắt. Bạn thử tính cụ thể khoảng thời gian đó là bao nhiêu (cái này chắc ko khó, xem thời gian thực hiện các lệnh trong tài liệu ấy).
Hoặc cách nhanh hơn bạn sửa giá trị lớn hơn đưa vào R6,R7 rồi thử lại.
Cũng với ct trên nếu bạn đảo thứ tự của lệnh SETB P1.0 và CLR p1.0 thì có lẽ bạn chỉ thấy nó tối mà ko sáng.
Đây là ctc trễ 1s mà mình đã tính toán chính xác
DELAY01S: MOV R2, #96
AGAIN: MOV R3, #96
HERE: NOP
NOP
NOP
NOP
NOP
NOP
NOP
DJNZ R3, HERE
DJNZ R2, AGAIN
RET
Chúc thành công.
Đầu chương trình hãy đặt Stack pointer > 07h
ví dụ:
mov 81h,#0e0h
đây là 1 lỗi mà đại đa số những người tự học lập trình VXL với họ 8051 mắc phải.
Chúc vui
thanhhai
10-09-2012, 03:44 PM
Ý quên
ct delay thời gian đều phụ thuộc vào tần số dao đông thạch anh.
Cái ct delay1s chỉ trễ đúng với thạch anh 11.0592 thôi, với tần số khác phải tính lại
kim-ef
10-09-2012, 03:44 PM
Quên gì mà quên, cứ lắp cái thạch anh 4MHz vào nó cũng không sáng mãi đâu
vBulletin v3.6.1, Copyright ©2000-2025, Jelsoft Enterprises Ltd.