📄 keyled.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,,P,NULL */
;/******************************************************************************/
.include "F2407REGS.H" ;引用头部文件
.def _c_int0
;(1)建立中断向量表
.sect ".vectors" ;定义主向量段
RSVECT B _c_int0 ;PM 0 复位向量1
INT1 B GISR1 ;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 用户定义软件中断 -
INT9 B PHANTOM
INT10 B PHANTOM
INT11 B PHANTOM
INT12 B PHANTOM
INT13 B PHANTOM
INT14 B PHANTOM
INT15 B PHANTOM
INT16 B PHANTOM
INT17 B PHANTOM
INT18 B PHANTOM
INT19 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 用户定义软件中断 -
.sect ".pvecs" ;定义子向量段
PVECTORS B PHANTOM ;保留向量地址偏移量0000h
.space 80h*16
B PHANTOM ;保留向量地址偏移量0040h CAN接收中断
B PHANTOM ;保留向量地址偏移量0041h
;中断子向量入口定义pvecs
DIN_7219 .set 02h ;在WRITE_7219中用
LOAD_7219 .set 04h
CLK_7219 .set 08h
.bss temp1,1
.bss temp2,1
;(2)主程序
.text
_c_int0 CLRC XF
SETC INTM
CALL SYSINIT ;系统初始化程序
CALL IOPF_INIT
CALL IOPE_INIT
;CLRC INTM
LDP #200H>>7 ; FOR TEST
SPLK #0CC11H,200H ; 初始化
SPLK #0FF00H,201H
SPLK #099FFH,202H
SPLK #0AA44H,203H
SPLK #0BB77H,204H
SPLK #08806H,210H
SPLK #08807H,211H
SPLK #8808H,212H
SPLK #8809H,213H
SPLK #880AH,214H
SPLK #880BH,215H
SPLK #880CH,216H
SPLK #880DH,217H
SPLK #880EH,218H
SPLK #880FH,219H
;-------------------
LAR AR1,#200H
CALL WRITE_7219
LAR AR1,#205H
CALL WRITE_7219
LAR AR1,#206H
CALL WRITE_7219
LAR AR1,#207H
CALL WRITE_7219
LAR AR1,#208h
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
LAR AR1,#218h
CALL WRITE_7219
LAR AR1,#219h
CALL WRITE_7219
;----------------------------
CLRC INTM
;---------------------------
WAIT: LDP #XINT1CR>>7 ; Book P45
SPLK #8001H,XINT1CR ; enable XINT1
CLRC INTM
LAR AR1,#200H
CALL WRITE_7219
LDP #200H>>7
mar *,ar1
lar ar1,#211h
lacl *
sacl 210h
LAR AR1,#210H
CALL WRITE_7219
CALL DELAY
B WAIT
;(3)系统初始化程序
SYSINIT:
CLRC SXM
CLRC OVM
CLRC CNF
LDP #0E0H
SPLK #86FEH,SCSR1 ;CLKIN=10M,CLKOUT=10M
SPLK #0E8h,WDCR
LDP #0
SPLK #01h,IMR ;
SPLK #0FFFFh,IFR
LDP #XINT1CR>>7
SPLK #8001H,XINT1CR ;priority
NOP ;清中断标志
RET
;-------------------------------------
;*********************************************************
; TMS320 -> LVC16245 -> Max7219 -> LED
IOPF_INIT: ; Select lvc16245
LDP #MCRC>>7 ;允许输出
LACL MCRC
AND #0FCFFH
SACL MCRC ;IOPF0/IOPF1为IO输出口
LACL PFDATDIR
OR #0302H
AND #0FFFEH
SACL PFDATDIR
RET
IOPE_INIT: ; Set para for Max7219
LDP #MCRC>>7 ;IOPE7为output low
LACL MCRC
AND #0FF7EH
SACL MCRC
LACL PEDATDIR
OR #8E00H
AND #0FF7FH
SACL PEDATDIR
RET
;*********************************************************
WRITE_7219:
SETC INTM
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
CLRC INTM
RET
;-----------------------
DELAY RPT #200
NOP
RPT #200
NOP
RET
;-----------------------
;(5)中断程序
GISR1: ; read data to (210), and back it up in (211)
SETC INTM
LDP #200h>>7
MAR *,AR6 ; used to refer to save address
LAR AR6,#0210H
IN *,0100H ;GET KEY VALUE , read in word from port address 0100h -> (210)
LACC * ;(210)->ACC
AND #00FH ;HIGH BYTE IS CLEARED
OR #8800H ; DISPLAY POSITION CHOICE !!!
SACL *+ ; save input in (210)
sacl * ; backup input in (211)
RPT #100 ; priority
NOP
RPT #100
NOP
MAR *,AR0
LDP #XINT1CR>>7 ; Book P45
SPLK #8001H,XINT1CR ; enable XINT1
CLRC INTM
RET
;----------------------------
GISR5: CLRC INTM ;开总中断,因为一进中断就自动关闭总中断
RET
;-----------------------------
;(6)假中断程序
PHANTOM
KICK_DOG ;复位看门狗
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -