В наличии 4-разрядный 7-сегментный индикатор, в котором аноды всех разрядов сегментов соединены вместе, а катоды каждого сегмента в разряде выведены отдельно. Собрал схему дешифратора для порязрядного переключения сегментов, которая управляется кодом 00, 01, 10 и 11. Переписал код управления разрядами
Код:
|
unsigned char razrad=0b0001000;
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
PORTD = razrad^0xF0 ;
if (x==0) {PORTD.0=0; PORTD.1=0;}
if (x==1) {PORTD.0=1; PORTD.1=0;}
if (x==2) {PORTD.0=0; PORTD.1=1;}
if (x==3) {PORTD.0=1; PORTD.1=1;}
PORTB = znak [cloc[x]]; //выводим знаки
if (start==1) {PORTB.7 =ind;} else PORTB.7 =0; // выводим точку
razrad››=1;
x++;
if (x==4) {x=0; razrad=0b0001000;}
PORTD=0xF0;DDRD=0x0F; |
В принципе все работает, но на выходах порта D присутствует и код, и поразрядный сдвиг. Что-то я сделал не так, а знаний не хватает.
Нужна помощь! Как сделать, чтобы на выводах порта присутствовал только нужный мне код?