Подскажите как правильно организовать(описать) управление матрицей 16х16?Сейчас адресуется по столбцу. Катоды от каждой матрицы 8*8 соединены на порт B. 32 бита уже запихиваю в регистры, нужно синхронно портом B управлять. Проект в CodeVisionAvr , как доработать код что бы адресовать по ячейке ?
Как это выглядит: https://yadi.sk/d/TCuguP0AU5CU5
Раздел: МК для начинающих
#include <mega8.h>
#include <delay.h>
#define DATA 1 // Подключаем к порту PD0 ножку данных сдвигового регистра
#define CLK 0 // Подключаем к порту PD1 ножку тактовых импульсов сдвигового регистра
#define Latch 0 // Подключаем к порту PD2 ножку защёлки сдвигового регистра
long int z, x=0;
void send_data (long int data){
unsigned char i=0;
for (i=0;i<32;i++){
// Выставляем данные на PD0
if ((data&0x80000000)==0x00) {PORTD&=~(DATA);}
else PORTD.0=(DATA);
# asm("nop");
PORTD.1=(CLK); // Импульс на CLK
# asm("nop");
PORTD.1=~(CLK);
# asm("nop");
data=(data<<1);
}
PORTD.2=(Latch); // Импульс на Latch clock
# asm("nop");
PORTD.2=~(Latch);
}
void main(void)
{
PORTB=0x00;
DDRB=0xFF;
PORTD=0x00;
DDRD=0xFF;
while (1) {
x++;
if (x==32) {x=0;};
z=0b00000001;
delay_ms (40);
send_data (z<<x);};
}
Как это выглядит: https://yadi.sk/d/TCuguP0AU5CU5
Прикрепленные файлы:
Раздел: МК для начинающих