📄 colock2.asm
字号:
;/******************************************************************************/
;press the key and the leds display the key value!
;the key value is from:0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f
;the leds dislay the value as:0,1,2,3,4,5,6,7,8,9,-,E,H,L,NULL */
;/******************************************************************************/
.include "F2407REGS.H" ;引用头部文件
.def _c_int0
DIN_7219 .set 02h
LOAD_7219 .set 04h
CLK_7219 .set 08h
;(1)建立中断向量表
.sect ".vectors" ;定义主向量段
RSVECT B _c_int0 ;PM 0 复位向量 1
INT1 B GISR1 ;PM 2 中断优先级1 4
INT2 B GISR2 ;PM 4 中断优先级2 5
INT3 B PHANTOM ;PM 6 中断优先级3 6
INT4 B PHANTOM ;PM 8 中断优先级4 7
INT5 B PHANTOM ;PM A 中断优先级5 8
INT6 B PHANTOM ;PM C 中断优先级6 9
RESERVED B PHANTOM ;PM E 模拟量输入中断(保留) 10
SW_INT8 B PHANTOM ;PM 10 用户定义软件中断 -
SW_INT31 B PHANTOM ;PM 3E 用户定义软件中断 -
;中断子向量入口定义pvecs
.sect ".pvecs" ;定义子向量段
PVECTORS B PHANTOM ;0
B XINT1_ISR;2
B PHANTOM ;4
B PHANTOM ;6
B PHANTOM ;8
B PHANTOM ;A
B PHANTOM ;C
B PHANTOM ;
B PHANTOM
B PHANTOM
B PHANTOM
B PHANTOM
B PHANTOM
B PHANTOM
B PHANTOM
B PHANTOM
B PHANTOM ;0
B PHANTOM ;2
B PHANTOM ;4
B PHANTOM ;6
B PHANTOM ;8
B PHANTOM ;A
B PHANTOM ;C
B PHANTOM ;
B PHANTOM
B PHANTOM
B PHANTOM
B PHANTOM
B PHANTOM
B PHANTOM
B PHANTOM
B PHANTOM
B PHANTOM
B PHANTOM
B PHANTOM
B PHANTOM
B PHANTOM
B PHANTOM
B PHANTOM
B T1PINT_ISR ;
B PHANTOM
B PHANTOM
;(2)主程序
.text
_c_int0 clrc xf
CALL SYSINIT
CALL IOPF_INIT
CALL IOPE_INIT
LDP #200H>>7
SPLK #0CC11H,200H
SPLK #0FF00H,201H
SPLK #099ffH,202H
SPLK #0AA44H,203H
SPLK #0BB77H,204H
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SPLK #0000H,218H
SPLK #0000H,219H
SPLK #0000H,21AH
SPLK #0000H,21BH
SPLK #0000H,21CH
;-------------------
LAR AR1,#200H
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
CALL TIMEINIT
CALL DISP0
WAIT: NOP
B WAIT
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DISP0: LDP #200H>>7
SPLK #1100H,210H
SPLK #2280H,211H
SPLK #3300H,212H
SPLK #4480H,213H
SPLK #5500H,214H
SPLK #6680H,215H
SPLK #7700H,216H
SPLK #8800H,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
RET
;(3)定时器中断服务程序
GISR2:
; 保护现场
LDP #0E0H
LACC PIVR,1 ;读取外设中断向量寄嫫鳎≒IVR),并左移一位
ADD #PVECTORS ;加上外设中断入口地址
BACC ;跳到相应的中断服务子程序
T1PINT_ISR: ;通用定时器1中断服务程序
LDP #DP_EVA
SPLK #0,T1CNT
CLRC INTM
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
LDP #4
LACL 18H
SUB #99H
BCND SEC1,EQ ;到加1SECOND
LACL 18H
ADD #1
AND #0FH
SUB #0AH
BCND MS01, EQ ;到加0.1SECOND
LACL 18H
ADD #1
SACL 18H
AND #0FH
OR #8800H
SACL 17H
LAR AR1,#217h
CALL WRITE_7219
B GISR2_RET
MS01: LACL 18H
AND #0F0H
ADD #10H
SACL 18H
RPT #3
SFR
OR #7700H
SACL 16H
LAR AR1,#216h
CALL WRITE_7219
B GISR2_RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SEC1: SACL 18H
LDP #200H>>7
SPLK #7700H,216H
SPLK #8800H,217H
LAR AR1,#216h
CALL WRITE_7219
LAR AR1,#217h
CALL WRITE_7219
LDP #4
LACL 19H
ADD #1
SUB #5AH
BCND MIN1,EQ ;到加1分钟
LACL 19H
ADD #1
AND #0FH
SUB #0AH
BCND SEC10, EQ ;到加10秒钟
LACL 19H
ADD #1
SACL 19H
;LACL 19H
AND #0FH
OR #6680H
SACL 15H
LAR AR1,#215h
CALL WRITE_7219
LDP #4
B GISR2_RET
SEC10 LACL 19H
ADD #10H
AND #0F0H
SACL 19H
RPT #3
SFR
OR #5500H
SACL 14H
LAR AR1,#214h
CALL WRITE_7219
LDP #4
LACL 19H
AND #0FH
OR #6680H
SACL 15H
LAR AR1,#215h
CALL WRITE_7219
LDP #4
;LACL 19H
;ADD #1
;SACL 19H
B GISR2_RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MIN1: ADD #1
SACL 19H
LDP #200H>>7
SPLK #6680H,215H
SPLK #5500H,214H
LAR AR1,#215h
CALL WRITE_7219
LAR AR1,#214h
CALL WRITE_7219
LDP #4
LACL 1AH
SUB #59H
BCND HOUR1,EQ ;到加1HOUR
LACL 1AH
AND #0FH
SUB #09H
BCND MIN10, EQ ;到加10MIN
LACL 1AH
ADD #1
SACL 1AH
AND #0FH
OR #4480H
SACL 13H
LAR AR1,#213h
CALL WRITE_7219
B GISR2_RET
MIN10 LACL 1AH
ADD #10H
AND #0F0H
SACL 1AH
RPT #3
SFR
OR #3300H
SACL 12H
LAR AR1,#212h
CALL WRITE_7219
LDP #4
LACL 1AH
AND #0FH
OR #4480H
SACL 13H
LAR AR1,#213h
CALL WRITE_7219
B GISR2_RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
HOUR1: ADD #1
SACL 1AH
LDP #200H>>7
SPLK #4480H,213H
SPLK #3300H,212H
LAR AR1,#213h
CALL WRITE_7219
LAR AR1,#212h
CALL WRITE_7219
LDP #4
LACL 1BH
ADD #1
SUB #24H
BCND ZERO,EQ ;到全部清零
LACL 1BH
ADD #1
AND #0FH
SUB #0AH
BCND HOUR10, EQ ;到加10HOUR
LACL 1BH
ADD #1
SACL 1BH ;M
AND #0FH
OR #2280H
SACL 11H
LAR AR1,#211h
CALL WRITE_7219
B GISR2_RET
HOUR10 LACL 1BH
AND #0F0H
ADD #10H
SACL 1BH
RPT #3
SFR
OR #1100H
SACL 10H
LAR AR1,#210h
CALL WRITE_7219
;LACL 1BH ;M
;AND #0 ;M
;OR #2280H ;M
;SACL 09H ;M
LDP #4
LACL 1BH
AND #0FH
OR #02280H
SACL 09H
LAR AR1,#209H ;M
CALL WRITE_7219
B GISR2_RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -