|
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 |
22-06-2007, 01:58 AM | #1 |
Đệ tử 4 túi
Tham gia ngày: May 2007
Bài gửi: 65
: |
HỎi về "Previous identifier must be a pointer"?
Đây là chương trinh của em dùng chạy led?
Code:
#include <16F877A.h> #device *=16 ADC=8 #fuses NOWDT,PUT,HS,NOPROTECT #use delay(clock=20000000) #use fast_io(b) #use fast_io(c) #byte pb=0x106 #byte pa=0x05 #byte pc=0x07 //============Khai bao bien toan cuc====================// int8 const led[]={1,2,4,8,16,32,64,128}; int i; //=============khai bao ham====================// void led(); void led1(); //============================================// void main() { while(1) { set_tris_b(0);pb=0; set_tris_c(0);pc=0; led (); led1 (); } } //=============chuong trinh con=================// //===========nhay 1 chieu tu B-C============// void led() {// int8 const led[]={1,2,4,8,16,32,64,128},a; for(i=0;i<8;i++) { pb=led[i]; delay_ms(50); }pb=0; for(i=0;i<8;i++) { pc=led[i]; delay_ms(50); }pc=0; } //=============nhay 1 chieu tu C-B===========// void led1() {// int8 const led[]={1,2,4,8,16,32,64,128},a; for(i=8;i>=1;i--) { pc=led[i-1]; delay_ms(50); }pc=0; for(i=8;i>=1;i--) { pb=led[i-1]; delay_ms(50); } } pc=led[i]; Chương trình trên nếu em khai báo int8 const led[]={1,2,4,8,16,32,64,128},a; ở mỗi hàm con thì không bị lỗi nhưng khi đưa ra khai báo toàn cục thì lỗi như vậy. Mấy bác cao thủ giúp em với. Em cảm ơn nhiều. |
22-06-2007, 02:22 AM | #2 |
Trưởng lão PIC bang
|
Bạn nên đọc tài liệu hướng dẫn của CCS C (download ở trang này http://www.ccsinfo.com/downloads.php, chọn link Compiler Manual bên tay phải). CCS C có sẵn các hàm để xuất ra hay đọc vào ở các port từ A đến K (tùy chip có bao nhiêu port). Ví dụ, để xuất 0x05 ra port A thì có thể viết:
Code:
OUTPUT_A(0x05); Code:
OUTPUT_C(led[i]); Bạn đọc tài liệu hướng dẫn của trình biên dịch để hiểu cách dùng nó, đó là cách chính quy nhất. 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 |
22-06-2007, 09:38 AM | #3 |
Đệ tử 4 túi
Tham gia ngày: May 2007
Bài gửi: 65
: |
"Previous identifier must be a pointer"?
Em đã sửa lại chương trình theo hướng này rồi.
Nhưng em không biết tại sao có vẫn báo lỗi : "Previous identifier must be a pointer" Code:
#include <16F877A.h> #device *=16 ADC=8 #fuses NOWDT,HS,NOPROTECT #use delay(clock=20000000) #use fast_io(b) #use fast_io(c) //============Khai bao bien toan cuc====================// int8 const led[]={1,2,4,8,16,32,64,128}; int i; //=============khai bao ham====================// void led(); void led1(); //============================================// //==================ham chinh==================// void main() { while(1) { set_tris_b(0);output_b(0x00); set_tris_c(0);output_c(0x00); led (); led1 (); } } //=============chuong trinh con=================// //===========nhay 1 chieu tu B-C============// void led() {// int8 const led[]={1,2,4,8,16,32,64,128},a; for(i=0;i<8;i++) { output_b(led[i]); delay_ms(50); }output_b(0); for(i=0;i<8;i++) { output_c(led[i]); delay_ms(50); }output_c(0); } //=============nhay 1 chieu tu C-B===========// void led1() {// int8 const led[]={1,2,4,8,16,32,64,128},a; for(i=8;i>=1;i--) { output_c(led[i-1]]; delay_ms(50); }output_c(0); for(i=8;i>=1;i--) { output_b(led[i-1]); delay_ms(50); } } |
|
|