PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > MPASM

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

MPASM Lập trình bằng hợp ngữ là một việc làm vô cùng vất vả, tuy nhiên, để hiểu và làm việc với vi điều khiển, hợp ngữ trở thành một công cụ khá đắc lực ...

 
 
Ðiều Chỉnh Xếp Bài
Prev Previous Post   Next Post Next
Old 27-07-2008, 06:07 PM   #3
dark_electron
Đệ tử 2 túi
 
Tham gia ngày: Feb 2008
Bài gửi: 27
:
Trích:
Nguyên văn bởi bachelor View Post
Tôi đang phải giải quyết một bài toán như thế này:
Cần tạo một khoảng thời gian giữ chậm từ 0,8s đến 3s với sai số nhỏ hơn 5us
Giá trị được đặt bởi một chuyển mạch 8 bit. Step Time là 0,1 s
Vi xử lý: 16F84A
Thạch anh: 4 MHz
Dùng CCS thì sai số lớn quá ! Định dùng MASM nhưng với thời gian lớn thế này thì không biết phải giải quyết như thế nào ! Mong mọi người chỉ giúp !
Thanks !
Long_Delay
movlw d'4' ; delay 4times x 200ms = 800ms
movwf count2
d0
movlw d'200' ; delay 200times x 1ms = 200 ms
movwf count1
d1
movlw 0xC7 ; delay 1ms (with 4MHz crystal)
movwf counta
movlw 0x01
movwf countb
Delay_0
decfsz counta, f
goto $+2
decfsz countb, f
goto Delay_0

decfsz count1 ,f
goto d1

decfsz count2, f
goto d0

retlw 0x00

Trên là hàm delay 800ms = 0.8s theo yêu cầu của bạn. Bạn thay biến count2 bằng giá trị trong bộ đếm để có thời gian delay tăng/giảm theo ý muốn. Giá trị min của hàm delay trên là 200ms khi count2 = 0.
dark_electron vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
 

Ðiều Chỉnh
Xếp Bà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à 05:45 PM.


Đượ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