/* * CP/M Program to drive 8x8 LED matrixes with MAX7219 * * Based on Arduino MaxMatrix, by Oscar Kin-Chung Au */ #ifndef false #define false 0 #endif #ifndef true #define true 1 #endif #ifndef LOW #define LOW 0 #endif #ifndef HIGH #define HIGH 1 #endif /*#ifndef LSBFIRST #define LSBFIRST 0 #endif*/ #ifndef MSBFIRST #define MSBFIRST 1 #endif #define max7219_reg_noop 0x00 #define max7219_reg_digit0 0x01 #define max7219_reg_digit1 0x02 #define max7219_reg_digit2 0x03 #define max7219_reg_digit3 0x04 #define max7219_reg_digit4 0x05 #define max7219_reg_digit5 0x06 #define max7219_reg_digit6 0x07 #define max7219_reg_digit7 0x08 #define max7219_reg_decodeMode 0x09 #define max7219_reg_intensity 0x0a #define max7219_reg_scanLimit 0x0b #define max7219_reg_shutdown 0x0c #define max7219_reg_displayTest 0x0f #define bitRead(value, bit) (((value) >> (bit)) & 0x01) #define bitSet(value, bit) ((value) |= (1 << (bit))) #define bitClear(value, bit) ((value) &= ~(1 << (bit))) #define bitWrite(value, bit, bitvalue) (bitvalue ? bitSet(value, bit) : bitClear(value, bit)) void delay(); void smallDelay(); void init(); void clear(); void setCommand(char command, char value); void testSetColumn(); void setColumn(char col, char value); void testSetColumnAll(); void setColumnAll(char col, char value); void setDotON(); void setDotOFF(); void setDot(char col, char row, char value); void writeSprite(int x, int y, char* sprite); void shiftLeft(char rotate, char fill_zero); void shiftRight(char rotate, char fill_zero); void shiftUp(char rotate); void shiftDown(char rotate); void shiftOut(char dataPin, char clockPin, char val); void digitalWrite(char dataPin, char state); void printPortData(); void printData(char charData); int displayString(char *str); int testAllSprites();