#include "../config.h" #include #include #include #include "borg_hw.h" /* // Diese #defines werden nun durch menuconfig gesetzt //An diesen Pins ist das Schieberegister //für die Spalten angeschlossen. #define COLPORT PORTC #define COLDDR DDRC #define BIT_DAT 4 //Daten-Eingang #define BIT_CLK 5 //Takt-Eingang //An diesem Port sind die Zeilentreiber angeschlossen. //Ein Null-Pegel schaltet den jeweiligen Transistor an. #define ROWPORT1 PORTD #define ROWDDR1 DDRD #define ROWPORT2 PORTC #define ROWDDR2 DDRC */ #define COLDDR DDR(COLPORT) #define ROWDDR1 DDR(ROWPORT1) #define ROWDDR2 DDR(ROWPORT2) unsigned char pixmap[NUMPLANE][NUM_ROWS][LINEBYTES]; inline void rowshow(unsigned char row, unsigned char plane){ static uint8_t rowmask = 0xFF; uint8_t x, tmp; //alle Zeilentreiber aus ROWPORT1 |= 0xF3; ROWPORT2 |= 0x0C; for(x=0;x<10;x++){ asm volatile ("nop"); } if (row == 0){ rowmask = 0x7F; //0111 1111 }else{ rowmask >>= 1; rowmask |= 0x80; } switch (plane){ case 0: TCNT0 = 0x100-12; break; case 1: TCNT0 = 0x100-20; break; case 2: TCNT0 = 0x100-50; } //Die fünf bits für das 2. Display in das //Schieberegister takten tmp = pixmap[plane][row][0]; for(x=0;x<3;x++){ if(tmp & 0x20){ COLPORT &= ~(1<>=1; COLPORT |= (1<>=1; COLPORT |= (1<>=1; COLPORT |= (1<