PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > Cơ bản về vi điều khiển và PIC

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Bài Trong Ngày Vi điều khiển

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

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 02-01-2010, 12:38 PM   #1
huancao_8x
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.
huancao_8x vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 02-01-2010, 12:55 PM   #2
tdm
Đệ tử 7 túi
 
Tham gia ngày: May 2005
Bài gửi: 258
:
Trích:
Nguyên văn bởi huancao_8x View Post
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.
ACALL HIC(thay lenh nay bang cau lenh )
JMP HIC
__________________
viết chương trình cho vdk chạy ổn định là cả một vấn đề.
tdm vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 02-01-2010, 01:13 PM   #3
huancao_8x
Nhập môn đệ tử
 
Tham gia ngày: Nov 2008
Bài gửi: 3
:
Thanks bạn TDM! Rất tiếc là lệnh JMP và lệnh ACALL không làm ảnh hưởng tới chương tình tỏng tình huống này, ACALL là lệnh gọi tuyết đối về nhãn ban đầu(mình quen dùng lệnh này cho chắc, khỏi phải tính số bit thỏa mãn như lệnh nhảy JMP). MÌnh cũng đã text thử trên proteus và vận thấy kết quả không thay đổi. Thực sự điều mình quan tâm lúc này là mã delay cho led có phải là gần 20s như mình tính toán không trong khi test proteus lại chỉ khoảng 2,3s. Mong các bạn có thể tính toán chính xác thời gian delay bật tắt led theo lý thuyết ở đoạn mã đó.
huancao_8x vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 02-01-2010, 03:16 PM   #4
tdm
Đệ tử 7 túi
 
Tham gia ngày: May 2005
Bài gửi: 258
:
Trích:
Nguyên văn bởi huancao_8x View Post
Thanks bạn TDM! Rất tiếc là lệnh JMP và lệnh ACALL không làm ảnh hưởng tới chương tình tỏng tình huống này, ACALL là lệnh gọi tuyết đối về nhãn ban đầu(mình quen dùng lệnh này cho chắc, khỏi phải tính số bit thỏa mãn như lệnh nhảy JMP). MÌnh cũng đã text thử trên proteus và vận thấy kết quả không thay đổi. Thực sự điều mình quan tâm lúc này là mã delay cho led có phải là gần 20s như mình tính toán không trong khi test proteus lại chỉ khoảng 2,3s. Mong các bạn có thể tính toán chính xác thời gian delay bật tắt led theo lý thuyết ở đoạn mã đó.
bạn thiếu phần khời tạo time_0 ờ chế độ 16bit.(thanh ghi TMOD{M0;M1}
__________________
viết chương trình cho vdk chạy ổn định là cả một vấn đề.
tdm vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 02-01-2010, 02:13 PM   #5
baothetu22
Nhập môn đệ tử
 
Tham gia ngày: Mar 2009
Bài gửi: 10
:
em đang làm đồ án về từ điển tra cứu chân IC số,bác nào biết phần cứng gồm các khối nào thì chỉ giáo dùm.thanks nhiều nha.
baothetu22 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lời


Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt

Chuyển đến


Múi giờ GMT. Hiện tại là 02:10 AM.


Được sáng lập bởi Đoàn Hiệp
Powered by vBulletin®
Page copy protected against web site content infringement by Copyscape
Copyright © PIC Vietnam