PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > Cơ bản về vi điều khiển và 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

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

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 26-11-2009, 09:34 PM   #1
conchocon
Nhập môn đệ tử
 
Tham gia ngày: Nov 2009
Bài gửi: 8
:
giúp em cái code này

Mình đang làm bài tập đếm số = con PIC 16f877A (dem 0-99)
mà nó chạy ko đúng mong các bạn giúp đỡ.
được viết =chương trình Pic C compler 4.08
#use delay(clock=20000000)
#fuses LP, XT, HS , WDT, NOWDT, PROTECT, NOPROTECT, PUT, NOPUT, BROWNOUT, NOBROWNOUT
int16 a=0;
int8 i, hang_chuc, donvi;
void dem()
{
a++;

}
void bcd()
{
donvi=a%10;
hang_chuc=a/10;
}
void display()
{
while(1)
{
output_b(donvi);
output_high(PIN_A0);///noi voi transitor
delay_ms(100);
output_low(PIN_A0);
delay_ms(100);
output_high(PIN_A1);
delay_ms(100);
output_b(hang_chuc);
delay_ms(100);
output_low(PIN_A1);
}
}

void main()
{
set_tris_b(0x00);
delay_ms(2000);
while(1)
{
dem();
bcd();
display();
}

}
conchocon vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 26-11-2009, 10:15 PM   #2
conchocon
Nhập môn đệ tử
 
Tham gia ngày: Nov 2009
Bài gửi: 8
:
mình muốn nó đếm từ 0-99 thôi . ban nào có code đã test share cho mình với. viết = ngôn ngữ C ấy. thanks
conchocon vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 26-11-2009, 10:25 PM   #3
conchocon
Nhập môn đệ tử
 
Tham gia ngày: Nov 2009
Bài gửi: 8
:
no ko chạy bạn ah .
conchocon vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 26-11-2009, 11:31 PM   #4
dung h
Đệ tử 4 túi
 
Tham gia ngày: May 2009
Bài gửi: 74
:
ct của bạn có những vấn đề sau:
khai báo #fuses LP, XT, HS
ban khai báo HS khi sử dụng thạch anh >= 4MHZ và XT với thạch anh <4MHz
và chỉ khai báo HS hoặc XT chứ o viết cả 2 như bạn vì bạn dùng thạch anh 20MHZ nên sẽ khai báo HS
- bạn không được dùng vòng lắp while(1) trong ct con khi đó nó sẽ không thoát ra được khỏi ct con
- ct của bạn sẽ thực hiện ct dem() ,bcd() và luôn thực hiện ct con dislay() vì có vòng lặp vô hạn trong dislay()
- khi bạn thực hiện đếm thì bạn nên sử dụng timer để định sau bao lâu thì đếm hoặc sử dụng timer ở chế độ counter đếm xung clock bền ngoài hoặc dùng ngắt
còn ở ct của cậu nếu bỏ while(1) ở dislay() thì nó sẽ chạy rấtnhanh cỡ khoảng vài trăm ms nên số đếm tăng lên rất nhanh bạn không thể kiểm soát được
-vấn đề thứ 3 đó là bạn xuất dữ liệu ra port A nhưng ban chưa định cho nó là đầu ra
set_tris_a(0x00);
dung h vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 27-11-2009, 12:32 AM   #5
conchocon
Nhập môn đệ tử
 
Tham gia ngày: Nov 2009
Bài gửi: 8
:
mình đã suẳ code và mo phỏng bằng protues.
http://megashare.vn/download.php?uid...100&bn=eee.rar
conchocon 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à 05:00 PM.


Đượ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