📄 colock2.asm
字号:
ZERO: LDP #200H>>7
SPLK #0000H,218H
SPLK #0000H,219H
SPLK #0000H,21AH
SPLK #0000H,21BH
CALL DISP0
GISR2_RET: ;中断返回
LDP #0E8H ; 恢复现场
LACL EVAIFRA
SACL EVAIFRA
CLRC INTM ;开总中断,因为一进中断就自动关闭总中断
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
PHANTOM:
KICK_DOG ;复位看门狗
RET
;*********************************************************
IOPF_INIT: LDP #MCRC>>7 ;允许输出
LACL MCRC
AND #0FCFFH
SACL MCRC ;IOPF0/IOPF1为IO输出口
LACL PFDATDIR
OR #0302H
AND #0FFFEH
SACL PFDATDIR
RET
IOPE_INIT: LDP #MCRC>>7 ;IOPE7为output low
LACL MCRC
AND #0FF7EH
SACL MCRC
LACL PEDATDIR
OR #8E00H
AND #0FF7FH
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
DELAY RPT #2
NOP
RET
;(3)系统初始化程序
;*********************************************************
SYSINIT:
SETC INTM
CLRC SXM
CLRC OVM
CLRC CNF ;B0区被配置为数据空间
LDP #0E0H ;指向7000h~7080h区
SPLK #86FEH, SCSR1 ;时钟4倍频,(***CLKIN=10 M,CLKOUT=10 M***)
SPLK #0E8H, WDCR ;不使能WDT
LDP #0
SPLK #03H,IMR ;使能中断优先级INT1\INT2
SPLK #0FFFFh,IFR ;清中断标志
LDP #XINT1CR>>7
SPLK #8001H,XINT1CR ;priority
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
TIMEINIT:LDP #DP_EVA ;指向7400h~7480h区
SPLK #80H, EVAIMRA ;使能T1PINT 中断
SPLK #0FFFFh, EVAIFRA ;清EVA中断标志
SPLK #0,GPTCONA
SPLK #30DH,T1PR ;30D(***)使定时器每10ms产生一次中断
SPLK #0,T3CNT
SPLK #074CH,T1CON ;(***)074CH为停止计数
;TMODE=10 连续增计数模式,TPS=110 预分频为128
;TENABLE=1 定时器计数使能, TCLKS=00 内部时钟
;TECMPR=1 定时器1比较使能, SELT1PR=0
CLRC INTM ;开总中断
RET
;(3)外部中断程序
GISR1:
; 保护现场
LDP #0E0H
LACC PIVR,1 ;读取外设中断向量寄存器(PIVR),并左移一位
ADD #PVECTORS ;加上外设中断入口地址
BACC ;跳到相应的中断服务子程序
XINT1_ISR: CLRC INTM
LDP #200h>>7
MAR *,AR6
LAR AR6,#0208H
IN *,0100H ;GET KEY VALUE KEYNUM IS IN 208H
LACC *
AND #0FH
SACL *
LDP #4
LACL 1CH
SUB #01H
BCND SETH10,EQ
SUB #01H
BCND SETH1,EQ
SUB #01H
BCND SETM10,EQ
SUB #01H
BCND SETM1,EQ
SUB #01H
BCND SETS10,EQ
SUB #01H
BCND SETS1,EQ
SUB #01H
BCND SETMS01,EQ
SUB #01H
BCND SETMS1,EQ
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
LDP #200H>>7
SPLK #00H,21CH
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MAR *,AR6
LAR AR6,#0208H
LACC *
SUB #0AH
BCND STAR,EQ
LACC *
SUB #0BH
BCND SETNUM,EQ
LACC *
SUB #0CH
BCND CLEAR,EQ
LACC *
SUB #0DH
BCND STOP,EQ
B GISR1_RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SETH10: LACL 08H
SUB #02h
BCND CLEAR,GT ;大于2,display 0000
LACL 08H
RPT #3
SFL
SACL 1BH
RPT #3
SFR
OR #1100h
LDP #4
SACL 10H
LAR AR1,#210H
CALL WRITE_7219
LACC #02H
LDP #4
SACL 1CH
B GISR1_RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SETH1: LACL 08H
SUB #09h
BCND CLEAR,GT ;大于9,display 0000
LACL 08H
OR 1BH
SACL 1BH
LACL 1BH ;M
SUB #23H ;M
BCND CLEAR,GT ;M
LACL 08H
OR #2280h
SACL 10H
LAR AR1,#210H
CALL WRITE_7219
LACC #03H
LDP #4
SACL 1CH
B GISR1_RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SETM10: LACL 08H
SUB #05h
BCND CLEAR,GT ;大于5,display 0000
LACL 08H
RPT #3
SFL
SACL 1AH
RPT #3
SFR
OR #3300h
SACL 10H
LAR AR1,#210H
CALL WRITE_7219
LACC #04H
LDP #4
SACL 1CH
B GISR1_RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SETM1: LACL 08H
SUB #09h
BCND CLEAR,GT ;大于9,display 0000
LACL 08H
OR 1AH
SACL 1AH
LACL 08H
OR #4480h
SACL 10H
LAR AR1,#210H
CALL WRITE_7219
LACC #05H
LDP #4
SACL 1CH
B GISR1_RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SETS10: LACL 08H
SUB #05h
BCND CLEAR,GT ;大于5,display 0000
LACL 08H
RPT #3
SFL
SACL 19H
RPT #3
SFR
OR #5500h
SACL 10H
LAR AR1,#210H
CALL WRITE_7219
LACC #06H
LDP #4
SACL 1CH
B GISR1_RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SETS1:
LACL 08H
SUB #09h
BCND CLEAR,GT ;大于9,display 0000
LACL 08H
OR 19H
SACL 19H
LACL 08H
OR #6680h
SACL 10H
LAR AR1,#210H
CALL WRITE_7219
LACC #07H
LDP #4
SACL 1CH
B GISR1_RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SETMS01: LACL 08H
SUB #09h
BCND CLEAR,GT ;大于9,display 0000
LACL 08H
RPT #3
SFL
SACL 18H
RPT #3
SFR
OR #7700h
SACL 10H
LAR AR1,#210H
CALL WRITE_7219
LACC #08H
LDP #4
SACL 1CH
B GISR1_RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SETMS1: LACL 08H
SUB #09h
BCND CLEAR,GT ;大于9,display 0000
LACL 08H
OR 18H
SACL 18H
LACL 08H
OR #8800h
SACL 10H
LAR AR1,#210H
CALL WRITE_7219
LACC #00H
LDP #4
SACL 1CH
B GISR1_RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
STAR: LDP #DP_EVA ;指向7400h~7480h区
SPLK #174CH,T1CON
B GISR1_RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SETNUM: LACC #01H
LDP #4
SACL 1CH
LACC #110AH
SACL 10H
LAR AR1,#210H
CALL WRITE_7219
B GISR1_RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
CLEAR: LDP #200H>>7
SPLK #0000H,218H
SPLK #0000H,219H
SPLK #0000H,21AH
SPLK #0000H,21BH
LDP #DP_EVA ;指向7400h~7480h区
SPLK #074CH,T1CON
CALL DISP0
LACC #00H
LDP #4
SACL 1CH
B GISR1_RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
STOP: LDP #DP_EVA ;指向7400h~7480h区
SPLK #074CH,T1CON
GISR1_RET: ;中断返回
CLRC INTM ;开总中断,因为一进中断就自动关闭总中断
LDP #XINT1CR>>7
SPLK #8001H,XINT1CR
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -