Мне нужен быстрый совет для этого кода, он не компилируется, и я не могу понять, что с ним не так. Я просто пытаюсь напечатать элементы в массиве в ПОРТ C, который является моим выходным портом. Спасибо
#include <htc.h>
#define _XTAL_FREQ 500000
void main()
{
int x[8]={0b1110, 0b1010, 0b1000, 0b1001, 0b0001, 0b0101, 0b0111, 0b0110, 0b1110};
int i,PORTC;
TRISC = 0 ; // set PORTC as OUTPUT
PORTC = 0b0000;
for(;;){ // forever
for ( i = 0; i < 8; i++ ){
PORTC = n[ i ] = i + 1; /* set element at location i to i + 1 */
__delay_ms(500); }
}
}
Вы ссылаетесь n[ i ]
когда ты видимо имеешь ввиду x[ i ]
,
Вы действительно не должны объявлять PORTC
как местный int
предполагается, что это специальная «переменная», которая отражает аппаратный регистр. Возможно, вам понадобятся некоторые специфичные для процессора включения, но вы не уверены.
В отсутствие кого-то, кто действительно знает что-то о PIC, я предлагаю вам попробовать что-то вроде этого:
void main() {
int x[8]={0b1110, 0b1010, 0b1000, 0b1001, 0b0001, 0b0101, 0b0111, 0b0110, 0b1110};
int i;
TRISC = 0;
PORTC = 0b0000;
for(;;) {
for (i = 0; i < 8; i++) {
PORTC = x[i];
__delay_ms(500); }
}
}
}
TRISC является портом управления для PORTC. Нулевое значение устанавливает все контакты на PORTC как выходные порты. [спасибо — см. комментарий]
PORTC является портом ввода / вывода. Я предполагаю, что это подключено к дисплею какой-то. При правильной настройке TRISC он должен действовать как выходной порт.
Это должно вывести 8 значений через полсекундные интервалы из таблицы в порт и повторяться вечно. Вид «Здравствуй, мир» для микропроцессоров.