решил попробовать переписать, не могу разобраться с динамической индикацией , может подскажет кто,тест делаю в протеусе, символы как то смешивает непонятно и выводит черти что....
Код:
#define _pic16f877 // зададим тип процессора
#include <pic.h>
__CONFIG(LVPDIS & UNPROTECT & PWRTDIS & WDTDIS & XT);
// таблица знакогенератора
const unsigned char CODE_TABLE[10] = {0b1000000,0b1111001,0b0100100,0b0110000,0b0011001,0b0010010,0b0000010,0b1111000,0b0000000,0b0010000};
const unsigned char a[3] = {0b00000001,0b00000010,0b00000100};
unsigned char in1; //индикатор 1
unsigned char in2; //индикатор 2
unsigned char in3; //индикатор 3
void main(void)
{
// настроим порты на выход
TRISB = 0b11111000; // 1.2.3 на выход, общий анод
TRISD = 0b00000000; // abcdefg..
PORTD = 1; // очистим индикатор
PORTB = 0b00000000;
OPTION = 0b10000010; // запишем байт настройки в регистр OPTION
INTCON = 0; // Выключить все прерывания и сбросить T0IF
TMR0 = 0; // Сброс TMR0
T0IE =1; // Разрешить прерывания от TMR0
GIE = 1; // Разрешить все прерывания
in1 = 1;
in2 =2;
in3 =3;
// зациклим программу
while(1)
{
}
}
// обработка прерываний
void interrupt all(void)
{
// установим следующее знакоместо для отображения
PORTD = CODE_TABLE[in1];
PORTB = a[0]; // выведем на индикатор
PORTD = CODE_TABLE[in2];
PORTB = a[1]; // выведем на индикатор
PORTD = CODE_TABLE[in3];
PORTB = a[2]; // выведем на индикатор
}