📄 ex7.asm
字号:
************************************************
* FileName: ex7.asm *
* Description: 定时器实验 *
* Copyright(C) SanZhi Electronic, Author Zpin *
************************************************
.title "ex7"
.global _c_int00
.mmregs
PERSEC .set 60h
SEC .set 61h
MIN .set 62h
STATUS .set 63h
TMP0 .set 64h
TMP1 .set 65h
TMP .set 66h
D_LED .set 0b000h
;D_LED0 .set 01h
;D_LED1 .set 02h
;D_LED2 .set 03h
;D_LED3 .set 04h
;D_LED4 .set 05h
;D_LED5 .set 06h
D_LED0 .set 06h
D_LED1 .set 05h
D_LED2 .set 04h
D_LED3 .set 03h
D_LED4 .set 02h
D_LED5 .set 01h
LED_DISP .macro hexdata,portaddr
LD hexdata,B
ST #0Ah,TMP0
RPT #15
SUBC TMP0,B
STH B,TMP0 ;存放BCD码个位
STL B,TMP1 ;存放BCD码十位
ST #2000h,AR0
LD TMP0,B
ADD AR0,B
STL B,AR0
NOP
NOP
LD *AR0,A
OR #portaddr+1,A ;计算位码
PORTW AL,D_LED
rpt #30000
nop
nop
ST #2000h,AR0
LD TMP1,B
ADD AR0,B
STL B,AR0
NOP
NOP
LD *AR0,A
OR #portaddr,A ;计算位码
PORTW AL,D_LED
rpt #30000
nop
nop
.endm
;段码
.data
.word 3F00h,0600h,5B00h,4f00h,6600h,6d00h,7d00h,0700h,7f00h,6f00h
.sect ".vectors"
rst: B _c_int00
NOP
NOP
.space 15*4*16
int0: B keydown
NOP
NOP
.space 2*4*16
tint: B timeout
NOP
NOP
.space 12*4*16
.text
_c_int00
LD #0h,DP
STM #3000h,SP
SSBX INTM
RSBX SXM
STM #07FFFh,SWWSR
stm #0001h,2Bh
ST #0h,CLKMD
tst: BITF CLKMD,#1h
BC tst,TC
ST #1087h,CLKMD
BITF CLKMD,#1h
RPT #0FFh
NOP
ORM #0010h,TCR
ST #19999,PRD
ORM #0009h,TCR
ORM #0020h,TCR
ST #0FFFFh,IFR
ORM #0008h,IMR
RSBX INTM
ST #0,PERSEC
ST #0,SEC
ST #0,MIN
ST #1,STATUS
LED_DISP PERSEC,D_LED1
LED_DISP MIN,D_LED5
LED_DISP SEC,D_LED3
ANDM #0FFEFh,TCR
susp nop
nop
nop
B susp
timeout ADDM #1,PERSEC
LD #100,A
SUB PERSEC,A
BC secout,ALEQ
B exit
secout ST #0,PERSEC
ADDM #1,SEC
LD #60,A
SUB SEC,A
BC minout,ALEQ
B exit
minout ST #0,SEC
ADDM #1,MIN
LD #100,A
SUB MIN,A
BC overflow,ALEQ
B exit
overflow
ST #0,MIN
ORM #0030h,TCR ;Stop and Reload Timer
ST #0,STATUS ;Set stopfalg
exit LED_DISP MIN,D_LED5
LED_DISP SEC,D_LED3
LED_DISP PERSEC,D_LED1
RETE
keydown
ST 0ffffh,IFR
ORM #0030h,TCR
BITF STATUS,#1h
BC restart,NTC
RETE
restart ST #0,PERSEC
ST #0,SEC
ST #0,MIN
LED_DISP PERSEC,D_LED1 ;刷新1/100秒表
LED_DISP SEC,D_LED3 ;刷新秒表
LED_DISP MIN,D_LED5 ;刷新分钟
ANDM #0FFEFh,TCR
RETE
.end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -