=================================================
;管腳分配定義
;=================================================
M7219_clk bit p1.0
M7219_din bit p1.2
M7219_load bit p1.1
led_buf equ 50h ;顯示數據首址
set_model equ 0ffh ;完全譯碼模式
set_bright equ 04h ;占空比為15/32;顯示亮度;
set_limit equ 01h ;2位顯示方式;
set_normal equ 01h ;測試模式
set_start equ 01h ;進入啟動工作方式?
;============================================
;模擬主程序
;===========================================
org 0000h
ajmp main
org 0030h
main: mov sp,#70h
lcall Init_M7219
;====================================================
; function:Init_M7219 ;初始化max719
; input: ------------
; output: ----------
; usage: a,b
;====================================================
Init_M7219: ;初始化Max7219
mov a,#0bh ;設置掃描界限
mov b,#set_limit ;設置位數
lcall w_7219
mov a,#09h ;設置譯碼模式
mov b,#set_model ;00h非譯碼模式;ffh為BCD譯碼模式
lcall w_7219
mov a,#0ah ;設置亮度
mov b,#set_bright ;15/32亮度
lcall w_7219
mov a,#0fh ;設置工作方式
mov b,#set_normal ;正常工作方式
lcall w_7219
mov a,#0ch ;進入啟動工作方式
mov b,#set_start
lcall w_7219
ret
;===================================================
; function:disp ;顯示子程序
; input: r0
; output: -----------
; usage: r0,r3,r4,a,b
;===================================================
disp:
mov r0,#led_buf
mov r4,#01h
mov r3,#set_limit
disp1:
mov a,@r0
mov b,a
mov a,r4
lcall w_7219
inc r0
inc r4
djnz r3,disp1
ret
;===================================================
; function:w_7219 ;顯示驅動程序;
; input: a ;傳送7219的地址
; b ;傳送7219的數據
; output:-------------
; usage: a,r2
;====================================================
w_7219:
clr M7219_clk
clr M7219_din
clr M7219_load ;置load=0
lcall sd_7219 ;傳送7219的地址
mov a,b
lcall sd_7219 ;傳送數據
setb M7219_load ;數據裝載
clr M7219_din
ret
;=================================================
; function:sd_7219 ;向7219傳送數據或地址子程序
; input: a
; output: max7219
; usage: a, r2
;==================================================
sd_7219: ;向7219送地址或數據
mov r2,#08h
c_sd: clr c
clr M7219_clk
rlc a
mov M7219_din,c ;準備數據
nop
setb M7219_clk ;上升沿將數據傳入
nop
nop
clr M7219_clk
djnz r2,c_sd
ret |