2013-12-21 2 views
0

MY friend пытается запрограммировать сдвиговый регистр ic 74hc595 с микроконтроллером 8051, подключенным для отображения движущегося светодиодного сообщения. Но мой компилятор дает мне ошибку в send_data(alf(a));Ошибка компилятора при программировании ic

Вот код->

#include<8051.h> 
#define clock P2_0 
#define data_bit P2_1 
#define latch P2_2 
#define shift 8 
void delay(unsigned int i) 
{ 
    int k=0; 
    while(k<i) 
    { 
     k++; 
    } 
} 
void send_data(unsigned char temp) 
    { 
    unsigned char i; 
    unsigned char dd; 
    latch=0; 
    clock=0; 
    for(i=0;i<shift;i++){ 
    dd=temp>>i; 
    if(dd&1) 
         data_bit=1; 
      else 
         data_bit=0; 
    clock=1; 
    clock=0; 
         } 
    latch=1; 
    } 
unsigned char alf[]={16,6,6,16}; 
void main() 
{ 
unsigned char a; 
    while(1){ 
    for(a=0;a<4;a++) 
    { 
    send_data(alf(a)); 
    delay(10000); 
    } 
    } 
} 

С момента своего моего друга, который делает, я не имею много информации об этом. Но если что-то еще нужно, пожалуйста, сообщите, и я предоставлю, но, пожалуйста, помогите мне решить эту проблему. Спасибо.

+2

Отметьте свой вопрос языком программирования и, по крайней мере, опубликуйте сообщение об ошибке от компилятора. –

ответ

3
send_data(alf(a)); 

должен быть

send_data(alf[a]); 

С другой стороны, тело delay могут быть оптимизированы (и удаляются) вашим компилятором, посмотрите на volatile keyword

+0

Thanx! он работал хорошо :) – Hoobla

+0

Добро пожаловать :) –

0

В вашем случае alf это массив, а не функция. Если alf является функцией, вы можете позвонить alf(a). Для массива вам необходимо передать индекс, поэтому вам нужно позвонить alf[a].

Смежные вопросы