PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > Các ngôn ngữ lập trình khác (CCS C, HT PIC,...)

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

Ðề tài đã khoá
 
Ðiều Chỉnh Xếp Bài
Old 17-11-2008, 12:06 PM   #1
lequocbao
Đệ tử 6 túi
 
lequocbao's Avatar
 
Tham gia ngày: Oct 2008
Nơi Cư Ngụ: HCM
Bài gửi: 137
:
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>
#use delay<clock=20000000>
void ct_1();
void ct_1();
void ct_1();
void main()
{
do{
       ct_1();
       delay_ms(200);
       ct_2();
       delay_ms(200);
       ct_3();
       delay_ms(200);
}while(true);
}
void ct_1()
{
       output_B(0xff);
       //có thử dùng lệnh return tại đây nhưng không có gì thay đổi
}
void ct_2()
{
       output_c(0xff);
       //có thử dùng lệnh return tại đây nhưng không có gì thay đổi
}
void ct_1()
{
       output_d(0xff);
       //có thử dùng lệnh return tại đây nhưng không có gì thay đổi
}
khi chạy chỉ có các led ở port b sáng .
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?

thay đổi nội dung bởi: namqn, 17-11-2008 lúc 03:21 PM.
lequocbao vẫn chưa có mặt trong diễn đàn  
Old 17-11-2008, 05:04 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 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,
__________________
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  
Old 20-11-2008, 01:51 PM   #3
lequocbao
Đệ tử 6 túi
 
lequocbao's Avatar
 
Tham gia ngày: Oct 2008
Nơi Cư Ngụ: HCM
Bài gửi: 137
:
Xin lổi mọi người mình "ẩu" quá!

Code:
#include<16f877a.h>
#use delay<clock=20000000>
void ct_1();
void ct_2();
void ct_3();
void main()
{
do{
       ct_1();
       delay_ms(200);
       ct_2();
       delay_ms(200);
       ct_3();
       delay_ms(200);
}while(true);
}
void ct_1()
{
       output_B(0xff);
       //có thử dùng lệnh return tại đây nhưng không có gì thay đổi
}
void ct_2()
{
       output_c(0xff);
       //có thử dùng lệnh return tại đây nhưng không có gì thay đổi
}
void ct_3()
{
       output_d(0xff);
       //có thử dùng lệnh return tại đây nhưng không có gì thay đổi
}
Cảm ơn anh namqn đã góp ý!

thay đổi nội dung bởi: namqn, 20-11-2008 lúc 04:48 PM.
lequocbao vẫn chưa có mặt trong diễn đàn  
Old 20-11-2008, 04:51 PM   #4
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 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,
__________________
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  
Old 21-11-2008, 11:54 AM   #5
lequocbao
Đệ tử 6 túi
 
lequocbao's Avatar
 
Tham gia ngày: Oct 2008
Nơi Cư Ngụ: HCM
Bài gửi: 137
:
Smile

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!
lequocbao vẫn chưa có mặt trong diễn đàn  
Old 22-11-2008, 11:06 AM   #6
tungtot_vl
Đệ tử 6 túi
 
tungtot_vl's Avatar
 
Tham gia ngày: Jul 2007
Bài gửi: 154
:
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)
tungtot_vl vẫn chưa có mặt trong diễn đàn  
Old 22-11-2008, 04:02 PM   #7
love_ac
Đệ tử 4 túi
 
Tham gia ngày: Apr 2008
Nơi Cư Ngụ: Hanoi
Bài gửi: 78
:
@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...
love_ac vẫn chưa có mặt trong diễn đàn  
Old 22-11-2008, 04:49 PM   #8
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
Trích:
Nguyên văn bởi tungtot_vl View Post
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)
LVP: Low Voltage Programming. NOLVP: không dùng chế độ nạp chương trình ở điện áp thấp.

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  
Old 24-11-2008, 12:01 PM   #9
lequocbao
Đệ tử 6 túi
 
lequocbao's Avatar
 
Tham gia ngày: Oct 2008
Nơi Cư Ngụ: HCM
Bài gửi: 137
:
Smile

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ì..
lequocbao vẫn chưa có mặt trong diễn đàn  
Old 24-11-2008, 01:21 PM   #10
falleaf
PIC Bang chủ
 
falleaf's Avatar
 
Tham gia ngày: May 2005
Bài gửi: 2,631
:
Send a message via Yahoo to falleaf
Bạn nên mở luồng khác để hỏi. F khoá luồng, tránh đi lan man.

Chúc vui
falleaf vẫn chưa có mặt trong diễn đàn  
Ðề tài đã khoá


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à 11:53 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