📄 seg7.asm
字号:
.include "F2407REGS.H" ;引用头部文件
.def _c_int0
.sect ".reset"
B _c_int0
.data
RSV: .word 0
VALUE_REG: .word 0
INDEX_REG: .word 0
TABLE: .word 00c0h, 00f9h, 00a4h, 00b0h, 0099h, 0092h, 0082h, 00f8h
.word 0080h, 0090h, 0088h, 0083h, 00c6h, 00a1h, 0086h, 008eh
SEG_ON: .word 0000h
SEG_OFF: .word 0001h
TEMP: .word 0
COUNT: .word 100
.text
SEG7_DATA .set 8001h
SEG0_EN .set 8002h
SEG1_EN .set 8003h
SEG2_EN .set 8004h
SEG3_EN .set 8005h
SEG4_EN .set 8006h
SEG5_EN .set 8007h
SEGS_CNT .set 6h
LOOP_CNT .set 50
_c_int0 ;相当于主程序的入口
CALL SYSINIT ;调系统初始化程序
LDP #DP_B01
SPLK #0, VALUE_REG ;置初始值
SPLK #0, INDEX_REG ;置初始值
SPLK #LOOP_CNT, COUNT
OUT SEG_OFF, SEG0_EN
OUT SEG_OFF, SEG1_EN
OUT SEG_OFF, SEG2_EN
OUT SEG_OFF, SEG3_EN
OUT SEG_OFF, SEG4_EN
OUT SEG_OFF, SEG5_EN
NEXT_CYCLE:
CALL DELAY
; 显示数据
LDP #DP_B01
LACL INDEX_REG
ADD #SEG0_EN ;当前使能的数码管端口
SACL TEMP
LACC #SEG_ENABLE
ADD #5
TBLW TEMP ;修改指令
LACL INDEX_REG
BCND LAST_SEGMENT, NEQ ;!=0转
LACC #SEGS_CNT
LAST_SEGMENT:
ADD #SEG0_EN
SUB #1
SACL TEMP ;上次使能的数码管端口
LACC #SEG_ENABLE
ADD #1
TBLW TEMP ;修改指令
LACL VALUE_REG
ADD INDEX_REG
SUB #10
BCND SHOW, GEQ
LACL VALUE_REG
ADD INDEX_REG
SHOW:
ADD #TABLE
SACL TEMP
MAR *, AR4
LAR AR4, #TEMP
LAR AR4, *
SEG_ENABLE:
OUT SEG_OFF, SEG5_EN ;关闭上一个数码管的显示
OUT *, SEG7_DATA ;显示
OUT SEG_ON, SEG0_EN ;使能当前数码管的显示
; 修改数据
LDP #DP_B01
LACL INDEX_REG
ADD #1
SACL INDEX_REG
SUB #SEGS_CNT
BCND NEXT_CYCLE, NC
SPLK #0, INDEX_REG
LACL COUNT
SUB #1
SACL COUNT
BCND NEXT_CYCLE, NEQ
SPLK #LOOP_CNT, COUNT
LACL VALUE_REG
ADD #1
SACL VALUE_REG
SUB #10
BCND NEXT_CYCLE, NC
SPLK #0, VALUE_REG
B NEXT_CYCLE
LOOP:
CALL DELAY
OUT VALUE_REG,SEG7_DATA ;显示
LACC VALUE_REG, 1
SACL VALUE_REG
BIT VALUE_REG, 8
BCND NEXT_CYCLE, TC
B LOOP
*系统初始化程序*
SYSINIT:
SETC INTM
CLRC SXM
CLRC OVM
CLRC CNF ;B0 被配置为数据存储空间
LDP #0E0H
SPLK #81FEH, SCSR1 ;CLKIN=10 M, CLKOUT=40 M
SPLK #0E8H, WDCR ;不使能WDT
LDP #0
SPLK #0000H, IMR ;不使能
SPLK #0FFFFH, IFR ;清全部中断标志
RET
*软件延时程序*
DELAY:
MAR *, AR4
LAR AR4, #0800H
LAR AR0, #00H
DELAY1: SBRK #1
NOP
CMPR 00
BCND DELAY1, NTC
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -