1. Инициализацию сделал? Если нет то не удивляйся - работать не будет
2. Вот код в АСМе, будут вопросы пиши
Код
;таблица кодов для инициализации режима работы MAX7219
TDisplInit:
; адрес,данные
DB 0Fh,00h;ТЕСТ ИНДИКАТОРОВ ВЫКЛЮЧЕН
DB 0Ch,01h;нормальная работа
DB 0Bh,07h;все индикаторы включены
DB 09h,00h;дешифраторы выключены
DB 0Ah,0Fh;яркость максимальная
InitMax7219:;инициализация MAX7219
MOV R3,#05h
MOV R0,#00h
MOV DPTR,#TDisplInit;таблица инициализации MAX7219
LInitMax7219:
MOV A,R0
INC R0
MOVC A,@a+DPTR;адрес
ANL P0,#0F0h;выбор MAX7219
MOV R2,#08h;запись в счетчик циклов
CALL WriteMax7219
MOV A,R0
INC R0
MOVC A,@a+DPTR;значение
MOV R2,#08h;запись в счетчик циклов
CALL WriteMax7219
ORL P0,#08h;отключение MAX7219
DJNZ R3,LInitMax7219
RET
Out_Max7219:
MOV R0,#RAM_out;адрес ОЗУ первой ячейки на запись в МАХ7219
MOV R1,#00h
MOV R3,#08h;запись в счетчик циклов
MOV DPTR,#TDisplAdr;адреса соответсвий RAM_out регистрам МАХ7219
LDisplLine8:
MOV A,R1
MOVC A,@a+DPTR;адрес регистра
ANL P0,#0F0h;выбор MAX7219 - установил все линии в "0"
MOV R2,#08h;запись в счетчик циклов
CALL WriteMax7219
MOV A,@R0;содержимое выводимой ячейки
MOV R2,#08h;запись в счетчик циклов
CALL WriteMax7219
SETB LOAD_MAX;отключение MAX7219
INC R0;переход к следующей ячейке
INC R1;переход к следующему адресу
DJNZ R3,LDisplLine8
RET;Вы будете смеяться но это все !!!
WriteMax7219:;запись по внутренней последовательной шине
; a записываемый байт
; R2 счетчик
CLR C
LWMax7219:
RLC A;выделяем бит данных
MOV DIN_MAX,C;если бит равен 1 он установит D1, если равен 0 сбросит
NOP
NOP
SETB SCLK_MAX;формирование фронта D0
NOP
CLR SCLK_MAX;формирование спада D0
DJNZ R2,LWMax7219
RET