📄 maxbcdasm-1.asm
字号:
;******************************************************************************/
;* file name:MAXBCDASM.ASM */
;* */
;* This is proprietary information, not to be published -- NUAA_306_WORKGUROP */
;* Copyright (C) 2003, NUAA_306_WORKGROP. All Rights Reserved. */
;* */
;* Author: Jianbo.CHU */
; Date: June,8, 2003 */
; */
; This code is to driver the micro-printer */
; */
;* */
;************************************************
* MAX7219 LED显示电路
;阴极LED 控制芯片MAX7219
;CAP5/QEO4/IPOF0 与MAX7219 OE脚相连
;CAP6/IOPF1与max7219 dir相连
;1 A到B
;0 B到A
;MAX7219 与 LF240连接7 说明
;DIN(1管脚) PWM7/IOPE1 LED显示所用信号
;LOAD(12管脚) PWM8/IOPE2
;CLK(13管脚) PWM9/IOPE3 */
.include "F2407REGS.H"
;(1)建立中断向量表
.sect ".vectors" ;定义主向量段
RSVECT B _c_int0 ;PM 0 复位向量1
INT1 B PHANTOM ;PM 2 中断优先级 14
INT2 B PHANTOM ;PM 4 中断优先级2 5
INT3 B PHANTOM ;PM 6 中断优先级 36
INT4 B PHANTOM ;PM 8 中断优先级 47
INT5 B GISR5 ;PM A 中断优先级 58
INT6 B PHANTOM ;PM C 中断优先级 69
RESERVED B PHANTOM ;PM E (保留位)10
SW_INT8 B PHANTOM ;PM 10 用户定义软件中断 -
INT7 B PHANTOM
INT8 B PHANTOM
INT9 B PHANTOM
INT10 B PHANTOM
INT11 B PHANTOM
INT12 B PHANTOM
INT13 B PHANTOM
INT14 B PHANTOM
INT15 B PHANTOM
INT20 B PHANTOM
INT21 B PHANTOM
INT22 B PHANTOM
INT23 B PHANTOM
INT24 B PHANTOM
INT25 B PHANTOM
INT26 B PHANTOM
INT27 B PHANTOM
INT28 B PHANTOM
INT29 B PHANTOM
INT30 B PHANTOM
SW_INT31 B PHANTOM ;PM 3E 用户定义软件中断
DIN_7219 .set 02h
LOAD_7219 .set 04h
CLK_7219 .set 08h
.bss temp1,1
.bss temp2,1
;中断子向量入口定义pvecs
.sect ".pvecs" ;定义子向量段
PVECTORS B PHANTOM ;保留向量地址偏移量0000h
B PHANTOM ;保留向量地址偏移量0001h
.space 80
B PHANTOM ;保留向量地址偏移量003Fh
B PHANTOM ;保留向量地址偏移量0040h CAN接收中断
B PHANTOM ;保留向量地址偏移量0041h
;(2)主程序
.text
_c_int0
CALL SYSINIT ;系统初始化程序
CALL IOPF_INIT
CALL IOPE_INIT
; LDP #PEDATDIR>>7
; SBIT0 PBDATDIR,B0
;
; SBIT0 PEDATDIR,DIN_7219
; SBIT1 PEDATDIR,DIN_7219
; SBIT0 PEDATDIR,DIN_7219
;
; SBIT0 PEDATDIR,CLK_7219
; SBIT1 PEDATDIR,CLK_7219
; SBIT0 PEDATDIR,CLK_7219
;
; SBIT0 PEDATDIR,LOAD_7219
; SBIT1 PEDATDIR,LOAD_7219
; SBIT0 PEDATDIR,LOAD_7219
LDP #200H>>7
SPLK #0CC11H,200H
SPLK #0FF00H,201H
SPLK #099FFH,202H
SPLK #0AA44H,203H
SPLK #0BB77H,204H
SPLK #1100H,210H
SPLK #2201H,211H
SPLK #3302H,212H
SPLK #4403H,213H
SPLK #5504H,214H
SPLK #6605H,215H
SPLK #7706H,216H
SPLK #8807H,217H
LAR AR1,#200H ;//shut down normal,D0=1,else all down
CALL WRITE_7219
LAR AR1,#201H
CALL WRITE_7219
LAR AR1,#202H
CALL WRITE_7219
LAR AR1,#203H
CALL WRITE_7219
LAR AR1,#204H
CALL WRITE_7219
LAR AR1,#210H
CALL WRITE_7219
LAR AR1,#211H
CALL WRITE_7219
LAR AR1,#212H
CALL WRITE_7219
LAR AR1,#213H
CALL WRITE_7219
LAR AR1,#214H
CALL WRITE_7219
LAR AR1,#215H
CALL WRITE_7219
LAR AR1,#216H
CALL WRITE_7219
LAR AR1,#217H
CALL WRITE_7219
LDP #200H>>7
SPLK #1101H,210H
SPLK #2202H,211H
SPLK #3303H,212H
SPLK #4404H,213H
SPLK #5505H,214H
SPLK #6606H,215H
SPLK #7707H,216H
SPLK #8808H,217H
LAR AR1,#210H
CALL WRITE_7219
LAR AR1,#211H
CALL WRITE_7219
LAR AR1,#212H
CALL WRITE_7219
LAR AR1,#213H
CALL WRITE_7219
LAR AR1,#214H
CALL WRITE_7219
LAR AR1,#215H
CALL WRITE_7219
LAR AR1,#216H
CALL WRITE_7219
LAR AR1,#217H
CALL WRITE_7219
LAR AR1,#temp1
MAR *,AR1
SPLK #9876H,* ;Data to be displayed
CALL BCDWRITE
LAR AR1,#temp1
MAR *,AR1
SPLK #temp1,* ;Data to be displayed
CALL ADRESSWRITE
CALL SHUTDOWN
CALL ALLON
WAIT: NOP
B WAIT
;(3)系统初始化程序
;*********************************************************
SYSINIT:
SETC INTM
CLRC SXM
CLRC OVM
CLRC CNF ;B0区被配置为数据空间
LDP #0E0H ;指向7000h~7080h区
SPLK #86FEH,SCSR1 ;时钟2倍频,CLKIN=20M,CLKOUT=40M
SPLK #0E8H,WDCR ;不使能WDT
LDP #0
SPLK #0002H,IMR ;使能中断第2级INT2
SPLK #0FFFFH,IFR ;清全部中断标志
RET
;*********************************************************
IOPF_INIT: LDP #MCRC>>7 ;允许输出
LACL MCRC
AND #0FCFFH
SACL MCRC ;IOPF0/IOPF1为IO输出口
LACL PFDATDIR
OR #0302H
AND #0FFFEH
SACL PFDATDIR
RET
;********************************************
IOPB_INIT: LDP #MCRA>>7 ;允许输出
LACL MCRA
AND #00FFH
SACL MCRA ;IOPF0/IOPF1为IO输出口
LACL PBDATDIR
OR #0FF00H
AND #0FFFEH
SACL PFDATDIR
RET
;*********************************************************
IOPE_INIT: LDP #MCRC>>7 ;IOPE1/2/3 为输出
LACL MCRC
AND #0FFF1H
SACL MCRC
LACL PEDATDIR
OR #0E00H
SACL PEDATDIR
RET
;*********************************************************
WRITE_7219: LDP #PEDATDIR>>7 ;AR1存放显示数据,AR2计数
LAR AR2,#15
SBIT0 PEDATDIR,LOAD_7219
CALL DELAY
WRITE1 SBIT0 PEDATDIR,CLK_7219
CALL DELAY
MAR *,AR1
LACC *,16
SFL
SACH *
BCND WRITE2,C
SBIT0 PEDATDIR,DIN_7219
CALL DELAY
B WRITE3
WRITE2 SBIT1 PEDATDIR,DIN_7219
CALL DELAY
WRITE3 SBIT1 PEDATDIR,CLK_7219
CALL DELAY
MAR *,AR2
BANZ WRITE1
SBIT1 PEDATDIR,LOAD_7219
CALL DELAY
RET
;*********************************************************
;entrance temp1
BCDWRITE: LAR AR0,#temp1;temp1 存放实际要显示单元的数据
LAR AR1,#temp2 ;temp2存放显示的位和数据
MAR *,AR0
LACC *
AND #000FH
OR #4400H
MAR *,AR1
SACL *
CALL WRITE_7219
MAR *,AR0
LACC *
AND #00F0H
RPT #3
SFR
OR #3300H
MAR *,AR1
SACL *
CALL WRITE_7219
MAR *,AR0
LACC *
AND #0F00H
RPT #7
SFR
OR #2200H
MAR *,AR1
SACL *
CALL WRITE_7219
MAR *,AR0
LACC *
AND #0F000H
RPT #11
SFR
OR #1100H
MAR *,AR1
SACL *
CALL WRITE_7219
;********************************************************* RET
;entrance temp1
ADRESSWRITE: LAR AR0,#temp1;temp1 存放实际要显示单元的数据
LAR AR1,#temp2 ;temp2存放显示的位和数据
MAR *,AR0
LACC *
AND #000FH
OR #8800H
MAR *,AR1
SACL *
CALL WRITE_7219
MAR *,AR0
LACC *
AND #00F0H
RPT #3
SFR
OR #7700H
MAR *,AR1
SACL *
CALL WRITE_7219
MAR *,AR0
LACC *
AND #0F00H
RPT #7
SFR
OR #6600H
MAR *,AR1
SACL *
CALL WRITE_7219
MAR *,AR0
LACC *
AND #0F000H
RPT #11
SFR
OR #5500H
MAR *,AR1
SACL *
CALL WRITE_7219
RET
;*********************************************************
SHUTDOWN: ;LDP #8100H>>7
LAR AR1,#temp1
MAR *,AR1
SPLK #0FF00H,*+
SPLK #0CC00H,*+
LAR AR1,#temp1
CALL WRITE_7219
LAR AR1,#temp2
CALL WRITE_7219
RET
;/*************Init Max7219**********************************************************/
ALLON: ;LDP #8100H>>7
LAR AR1,#temp1
MAR *,AR1
SPLK #0FF0FH,*+
LAR AR1,#temp1
CALL WRITE_7219
RET
DELAY RPT #200
NOP
RPT #200
NOP
RET
GISR5
PHANTOM B _c_int0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -