![]() |
|
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: Mar 2009
Bài gửi: 4
: |
lỗi chương trình
hi,
mình viết 1 đoạn để xuất ra GP1, GP2, GP5 theo xung nhu sau : GP5 __i----------------------------------------- GP1 __i--i____i--i____i--i____ GP2 _____i--i____i--i____i--i____ và lập lại như trên, code mình viết như sau, Code:
;**************************************************** list p=12F508 ; list directive to define processor #include <p12F508.inc> ; processor specific variable definitions __CONFIG _MCLRE_ON & _CP_ON & _WDT_OFF & _IntRC_OSC ;***** VARIABLE DEFINITIONS UDATA count1 res 1 ; delay loop counters count2 res 1 dc3 res 1 ;********************************************************************** RESET CODE 0x1FF ; processor reset vector res 1 ; holds movlw with factory RC cal value ; Internal RC calibration value is placed at location 0x1FF by Microchip ; as a movlw k, where the k is a literal value. MAIN code 0x000 movwf OSCCAL movlw b'011000' ; configure GP0,GP1,GP2,GP5 as output tris GPIO start movlw b'000111' movwf GPIO bsf GPIO,5 ;GP5 = 1 ;form1 wareform begin bcf GPIO,2 nop nop nop bsf GPIO,2 nop bcf GPIO,1 nop nop nop bsf GPIO,1 nop bcf GPIO,2 nop nop nop bsf GPIO,2 nop bcf GPIO,1 nop nop nop bsf GPIO,1 nop bcf GPIO,2 nop nop nop bsf GPIO,2 nop bcf GPIO,1 nop nop nop bsf GPIO,1 nop bcf GPIO,2 nop nop nop bsf GPIO,2 nop bcf GPIO,1 nop nop nop bsf GPIO,1 nop bcf GPIO,2 nop nop nop bsf GPIO,2 nop bcf GPIO,1 nop nop nop nop goto begin END ;***************************************** và sao nó không lập lại liên tục, chỉ xuất lập lại một số lần là dừng lại ? thanks, thay đổi nội dung bởi: namqn, 02-04-2009 lúc 04:29 PM. |
![]() |
![]() |
![]() |
#2 |
Trưởng lão PIC bang
|
Code của bạn là ví dụ kinh điển về hoạt động read-modify-write. Bạn nên dùng thanh ghi W như ảnh của GPIO, cập nhật W khi cần thiết và ghi W vào GPIO, tránh cập nhật trực tiếp GPIO như hiện giờ. Bạn có thể loại bỏ một số lệnh nop để thay vào đó là các lệnh cập nhật thanh ghi W.
Còn về việc chạy được vài lần rồi dừng lại thì tôi chưa nghĩ ra, vì hiện thời bạn không dùng WDT. 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 thay đổi nội dung bởi: namqn, 03-04-2009 lúc 05:12 PM. Lý do: thiếu một từ |
![]() |
![]() |
![]() |
#3 |
Nhập môn đệ tử
Tham gia ngày: Mar 2009
Bài gửi: 4
: |
![]() không ai trả lời giúp tại sao xuất được vài lần rồi ngưng nhỉ ?
khi ngưng là toàn bộ các ngõ out đều về 0 hết, và nếu tắt mở nguồn càng nhanh thì số lần xuất ra càng ít, thậm chí nếu tắt nguồn, mở lại ngay là Pic không chạy luôn (chả thấy xuất gì ra cả) để lâu lâu tí, mở nguồn nó mới có xung ra. các bác xem giúp với thanks, |
![]() |
![]() |
![]() |
#4 | |
Trưởng lão PIC bang
|
Trích:
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 |
|
![]() |
![]() |
![]() |
#5 |
Nhập môn đệ tử
Tham gia ngày: May 2010
Bài gửi: 1
: |
Question
không ai trả lời giúp tại sao xuất được vài lần rồi ngưng nhỉ ? khi ngưng là toàn bộ các ngõ out đều về 0 hết, và nếu tắt mở nguồn càng nhanh thì số lần xuất ra càng ít, thậm chí nếu tắt nguồn, mở lại ngay là Pic không chạy luôn (chả thấy xuất gì ra cả) để lâu lâu tí, mở nguồn nó mới có xung ra. các bác xem giúp với thanks, tôi cũng đang gặp vấn đề gần giống với của bạn, tôi đang dùng con 16f877A, khi tắt bật nguồn thì lúc chạy lúc không, lúc thì chương trình chạy một ít thì treo cứng, cũng không biết tại sao. |
![]() |
![]() |
![]() |
|
|