|
Tài trợ cho PIC Vietnam |
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 |
26-07-2008, 04:53 PM | #1 |
Đệ 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 ! |
26-07-2008, 05:58 PM | #2 |
Trưởng lão PIC bang
|
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 |
27-07-2008, 06:07 PM | #3 | |
Đệ tử 2 túi
Tham gia ngày: Feb 2008
Bài gửi: 27
: |
Trích:
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. |
|
|
|