![]() |
xem giúp mình đoạn code này lỗi ở đâu
#include <16F84A.h>
#include <def_84a.h> #FUSES NOWDT, HS, NOPUT, NOPROTECT #use delay(clock=10000000) int8 i; //khai bao bien chay vong lap i int8 temp; //khai bao cac chuong trinh con () void chuong_trinh_1();//nhap nhay cong B void chuong_trinh_2();//led sang tu trai qua phai void chuong_trinh_3();//led sang tu phai qua trai void chuong_trinh_4();//nhap nhay xen ke void chuong_trinh_5();//led tat chay tu ngoai vao trong,roi chay ra ngoai void chuong_trinh_6();// void chuong_trinh_7(); void chuong_trinh_8(); void main() { trisb=0x00;//cong b xuat du lieu while(1) { chuong_trinh_1();delay_ms(250); chuong_trinh_3();delay_ms(250); chuong_trinh_4();delay_ms(250); chuong_trinh_5();delay_ms(250); chuong_trinh_6();delay_ms(250); chuong_trinh_7();delay_ms(250); chuong_trinh_8();delay_ms(250); } } void chuong_trinh_1() { portb=0x00; delay_ms(1000); portb=0xFF; delay_ms(1000); } void chuong_trinh_2() {//led nhay sang tu trai qua phai ,tao tre 250ms) temp=0xFF; for(i=0;i<=8;i++) { portb=temp; delay_ms(250); temp>>=1;// } } void chuong_trinh_3() {//led sang dich tu phai sang trai temp=0xFF; for(i=0;i<=8;i++) { portb=temp; delay_ms(250); temp<<=1; } } void chuong_trinh_4() { portb=0xAA; delay_ms(500); portb=0x55; delay_ms(500); } void chuong_trinh_5() { portb=0x7E;delay_ms(150); portb=0xBD;delay_ms(150); portb=0xDB;delay_ms(150); portb=0xE7;delay_ms(150); portb=0xDB;delay_ms(150); portb=0xBD;delay_ms(150); portb=0x7E;delay_ms(150); } void chuong_trinh_6() { temp=0xFF; for(i=0;i<=8;i++) { portb=temp; delay_ms(250); temp=temp>>1; } } void chuong_trinh_7() { portb=0xFE;delay_ms(150); portb=0xFD;delay_ms(150); portb=0xFB;delay_ms(150); portb=0xF7;delay_ms(150); portb=0xEF;delay_ms(150); portb=0xDF;delay_ms(150); portb=0xBF;delay_ms(150); portb=0x7F;delay_ms(150); } void chuong_trinh_8() { portb=0x7F;delay_ms(150); portb=0xBF;delay_ms(150); portb=0xDF;delay_ms(150); portb=0xEF;delay_ms(150); portb=0xF7;delay_ms(150); portb=0xFB;delay_ms(150); portb=0xFD;delay_ms(150); portb=0xFE;delay_ms(150); } ======================= mình dùng pic 16f84a ,thạch anh ngoài 10Mhz để đièu khiển nháy 8 led cổng B0->b7 mình định nghĩa chương trình con và gọi nó sao ko được vậy .xin các anh em chỉ giúp mình ,kiến thức C còn hạn chế lắm |
mình nghĩ bạn nên viết main sau các chương trình con.
Chúc bạn thành Công |
#include "C:\Program Files\PICC\Devices\h.h"
int8 i; //khai bao bien chay vong lap i int8 temp; //khai bao cac chuong trinh con () void chuong_trinh_1();//nhap nhay cong B void chuong_trinh_2();//led sang tu trai qua phai void chuong_trinh_3();//led sang tu phai qua trai void chuong_trinh_4();//nhap nhay xen ke void chuong_trinh_5();//led tat chay tu ngoai vao trong,roi chay ra ngoai void chuong_trinh_6();// void chuong_trinh_7(); void chuong_trinh_8(); #byte port_B=0x06 void main() { setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1); set_tris_B(0x00);//cong b xuat du lieu while(1) { chuong_trinh_1(); delay_ms(250); chuong_trinh_3();delay_ms(250); chuong_trinh_4();delay_ms(250); chuong_trinh_5();delay_ms(250); chuong_trinh_6();delay_ms(250); chuong_trinh_7();delay_ms(250); chuong_trinh_8();delay_ms(250); } } void chuong_trinh_1() { port_b=0x00; delay_ms(50); port_b=0xFF; delay_ms(50); } void chuong_trinh_2() {//led nhay sang tu trai qua phai ,tao tre 250ms) temp=0xFF; for(i=0;i<=8;i++) { port_b=temp; delay_ms(50); temp>>=1;// } } void chuong_trinh_3() {//led sang dich tu phai sang trai temp=0xFF; for(i=0;i<=8;i++) { port_b=temp; delay_ms(50); temp<<=1; } } void chuong_trinh_4() { port_b=0xAA; delay_ms(50); port_b=0x55; delay_ms(50); } void chuong_trinh_5() { port_b=0x7E;delay_ms(150); port_b=0xBD;delay_ms(150); port_b=0xDB;delay_ms(150); port_b=0xE7;delay_ms(150); port_b=0xDB;delay_ms(150); port_b=0xBD;delay_ms(150); port_b=0x7E;delay_ms(150); } void chuong_trinh_6() { temp=0xFF; for(i=0;i<=8;i++) { port_b=temp; delay_ms(250); temp=temp>>1; } } void chuong_trinh_7() { port_b=0xFE;delay_ms(50); port_b=0xFD;delay_ms(50); port_b=0xFB;delay_ms(50); port_b=0xF7;delay_ms(50); port_b=0xEF;delay_ms(50); port_b=0xDF;delay_ms(50); port_b=0xBF;delay_ms(50); port_b=0x7F;delay_ms(50); } void chuong_trinh_8() { port_b=0x7F;delay_ms(50); port_b=0xBF;delay_ms(50); port_b=0xDF;delay_ms(50); port_b=0xEF;delay_ms(50); port_b=0xF7;delay_ms(50); port_b=0xFB;delay_ms(50); port_b=0xFD;delay_ms(50); port_b=0xFE;delay_ms(50); } |
====>> bạn dùng trình dịch CCS
Chắc là file thư viện của bạn chưa khai báo: #byte portb=0x06 ///// Tra datasheet và: dùng set_tris_b(0x00); //// Not use: "trisb" Trong chương trình main: khai báo while (true) //// not use: "while(1)" |
Trích:
Code:
//khai bao cac chuong trinh con () //khai bao cac chuong trinh con () void chuong_trinh_1(void);//nhap nhay cong B void chuong_trinh_2(void);//led sang tu trai qua phai void chuong_trinh_3(void);//led sang tu phai qua trai void chuong_trinh_4(void);//nhap nhay xen ke void chuong_trinh_5(void);//led tat chay tu ngoai vao trong,roi chay ra ngoai void chuong_trinh_6(void);// void chuong_trinh_7(void); void chuong_trinh_8(void); ................... CHÚC BẠN THÀNH CÔNG .................. |
Mình đã sửa cho bạn rồi và mình đã chạy thử thấy ok. Các ý kiến của vmt.dttt và picpen theo mình nghĩ ko đúng lắm.
while(1) vẫn được. void chuong_trinh_1(); vẫn được. Bạn có thể xem lại code mình đã gửi cho bạn. Chúc may mắn |
mình sủa dc rồi .cảm ơn các bạn nhiều
|
Trích:
|
Trích:
|
Trích:
|
Okie thế chắc bạn biết mình rồi! Bạn tên gì và học lớp nào thế? Mình thì vẫn đang thất nghiệp đây! Hi hi! Xem có chỗ nào giới thiệu cho mình với!!!
|
Trích:
Ấy ấy... đừng vội kết luận như thế; Một bài toán có nhiều cách giải quyết... - while(1) // vẫn được <-- tớ có bảo ko được đâu ---------- Tớ xài TRUE trong TH trên là có lý do; Ấy có biết không ???? |
anh Xuan Hien a.em dang muốn tim hiểu về PIC ứng dụng cụ thể là đo độ ẩm và báo cháy anh có tài liệu gì liên quan thì gửi cho em với.em cam ơn anh.hòm thư của em là Phạm Đức Hung220987@gmail.com
|
Trích:
|
Múi giờ GMT. Hiện tại là 06:38 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