![]() |
Không chạy được nhiều chương trình con được gọi từ chương trìng chính!
Code:
#include<16f877a.h> mình có cảm giác như là chương trình chỉ thực thi lệnh ở chương trình con ct_1(); rồi thôi! Có ai biết tại sao không vậy? |
Bạn xem lại đoạn code mà bạn đã post lên. Bạn khai báo void ct_1(); 3 lần, và bạn định nghĩa ct_1() 2 lần, không có định nghĩa cho ct_3(), trong khi gọi ct_3() trong main().
Trước khi post code lên diễn đàn, bạn nên kiểm tra kỹ hơn. Với đoạn code đó, bạn lẽ ra phải gặp lỗi biên dịch, làm sao có được mã chương trình để thử? Thân, |
Xin lổi mọi người mình "ẩu" quá!
Code:
#include<16f877a.h> |
Bạn chưa thiết lập đầy đủ cấu hình cho PIC. Có khả năng WDT đang hoạt động, dẫn đến PIC bị reset liên tục, do đó code của bạn không có cơ hội chạy đến những chương trình con khác.
Thân, |
Có phải mình phải thêm đoạn mã này vào phải không bạn?
#fuses HS,NOWDT,NOPROTECT,NOLVP Nếu đúng ,vậy sẳn cho mình hỏi là đoạn code trên có ý nghĩa là gì vậy? + fuses là gì? + HS là mạch dùng thạch anh ngoài 20Mhz, còn XT là thạch anh 4Mhz đúng không (cái này mình vừa được chỉ giáo ở luồng khác ) + NOWDT :NO là không , còn WDT là Watch Dog Timer phải không ?(mình cũng không biết Watch Dog Timer là gì luôn) + NO là không ,còn PROTECT là bảo vệ .Vậy là không bảo vệ cái gì vậy ta? + NOLVP là gì vậy bạn?(mình đoán LV là Low Voltag không biết có đúng không nữa, còn chữ P thì chắc là Programable quá!) Các câu hỏi hơi "chuối" bạn nào biết giải thích giúp mình nha! |
fuses: là khai báo Config cho pic
WDT: dùng để reset lại pic mỗi khi nó tràn bộ đệm (nếu sử dụng). NOPROTECT: không bảo vệ code (hay cho phép đọc code từ pic) NOLVP: cho phép ghi (nạp) code ở điện áp thấp (P là power) |
@lequocbao:
---Không phải cứ XT--4MHz,HS--20M.Nếu bạn dùng 16F877A thì hãy xem lại trang 147 để biết chi tiết,với các chip khác cũng nên xem(nếu dùng) --Vâng WDT giúp reset lại PIC mỗi khi có sự kiện tràn.Và việc làm cho nó không tràn khi hoạt động bình thường này được người lập trình kiểm soát khi lập trình .WDT nó dùng cho mục đích gí:WDT được đùng để đưa chip ra khỏi tình trạng hoạt động không chính xác:có thể là do lỗi người lập trình dẫn đến vòng lặp không thoát,có thể là do nhiễu tác động chíp bị treo... Các vidieukhien có thể cung cấp xung cho WDT chung hoặc riêng.Với PIC thì nó có bộ dao động dành riêng cho WD,và PIC có config cứng (không thay đổi được trong quá trình chạy) còn nhiều cái... |
Trích:
Thân, |
To anh Namqn!
Đúng là khi mình khai báo là NOWDT thì các chương trình con chạy bình thường.Cảm ơn anh nhiều! Nhưng anh cho hỏi là làm sao mình có thể kiểm soát được WD (khi nào thì biết bộ đệm bị tràn),nhân tiện hỏi luôn để vài bữa nữa làm phần giao tiếp với máy tính khỏi phải hỏi lại hì hì.. |
Bạn nên mở luồng khác để hỏi. F khoá luồng, tránh đi lan man.
Chúc vui |
Múi giờ GMT. Hiện tại là 06:18 PM. |
Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam