![]() |
|
Tài trợ cho PIC Vietnam |
Cơ bản về vi điều khiển và PIC Những bài hướng dẫn cơ bản nhất để làm quen với vi điều khiển PIC |
|
Ðiều Chỉnh | Xếp Bài |
![]() |
#1 |
Nhập môn đệ tử
Tham gia ngày: Nov 2008
Bài gửi: 3
: |
Mong các pro chỉ giáo
Các bạn cho mình hỏi đoạn code mình viết bằng Assembler điều khiển led sáng tắt dùng cờ delay thời gian:
ORG 0000H MOV R1,#0 HIC: SETB P1.0 HERE: ; Bat dau cho led sang MOV TL0,#000H MOV TH0,#000H DELAYBOMAY: SETB TR0 ; KHOI DONG BO DINH THOI TIMER 0 AGAIN3: JNB TF0,AGAIN3 ; HIEN THI CO TF DEN KHI NO VUOT QUA FFFFH....4 CLR TR0 ; DUNG BO TIMER CLR TF0 ; XOA CO BO DINH THOI DELAYPHAI: ; TAO 255 VONG LAP INC R1 ; Tang them 1 CJNE R1,#255,HERE CLR P1.0 ; Bat dau cho led tat HERE5: MOV TL0,#000H MOV TH0,#000H DELAYBOMAY5: SETB TR0 ; KHOI DONG BO DINH THOI TIMER 0 AGAIN5: JNB TF0,AGAIN5 ; HIEN THI CO TF DEN KHI NO VUOT QUA FFFFH....4 CLR TR0 ; DUNG BO TIMER CLR TF0 ; XOA CO BO DINH THOI DELAY5: ; TAO 255 VONG LAP INC R1 ; Tang them 1 CJNE R1,#255,HERE5 ACALL HIC END Theo tính toán lý thuyết của mình thì với cờ TF cho chạy từ 0000H tới FFFFH đã mất khoảng 1.085 microgiay * 2^16 = 0.077s. Sau đó mình tạo một vòng lặp khoảng 255 lần . Như vậy tổng thời gian ít nhất cho việc delay tắt và bật là 0.077*255= 19,67s( chưa kể thêm vài xung nhịp thời gian dùng cho các lệnh khác trong nhãn ). Nhưng thực tế khi chạy thử trên proteus nó chỉ delay trong khoảng 2s. Không biết mình sai lập trình hay sai ở chương trình proteus. Mong các bạn chỉ giúp vì mình rất cần sự chính xác trong delay tắt bật của led. |
![]() |
![]() |
Ðiều Chỉnh | |
Xếp Bài | |
|
|