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 Bài Trong Ngày 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 ...

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 26-07-2008, 04:53 PM   #1
bachelor
Đệ tử 2 túi
 
Tham gia ngày: Jun 2006
Bài gửi: 27
:
Delay thời gian lớn với MASM ?

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 !
bachelor vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 26-07-2008, 05:58 PM   #2
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
Bạn cho biết thêm: PIC chỉ làm mỗi việc tạo thời gian trễ này hay còn phải làm những công việc khác?

Nếu PIC chỉ làm mỗi việc tạo thời gian trễ, bạn có thể dùng các vòng lặp lồng nhau để làm trễ chính xác đến từng chu kỳ máy (phần này đã có tại luồng http://www.picvietnam.com/forum/showthread.php?t=238).

Nếu PIC cần làm những công việc khác trong khi chờ hết thời gian trễ này, bạn có thể tham khảo các kỹ thuật được giới thiệu tại piclist: http://www.piclist.com/techref/microchip/timenint.htm.

Thân,
__________________
Biển học mênh mông, sức người có hạn.

Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau:
http://www.picvietnam.com/forum/showthread.php?t=1263
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
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
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à 12:18 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