решил попробовать переписать, не могу разобраться с динамической индикацией , может подскажет кто,тест делаю в протеусе, символы как то смешивает непонятно и выводит черти что....
Код:#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]; // выведем на индикатор }




Ответить с цитированием