![]() |
|
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 |
|
|
#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. |
|
|
|
|
|
#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 |
|
|
|
|
|
#3 |
|
Đệ tử 4 túi
Tham gia ngày: May 2007
Bài gửi: 65
: |
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);
}
}
|
|
|
|
![]() |
| Ðiều Chỉnh | |
| Xếp Bài | |
|
|