📄 tontek study.asm
字号:
;===================================================================================
;
;============== CPU WORKING REGISTER ===============================================
.EQ DP $0
.EQ ACC $1
.EQ TB1 $2
.EQ TB2 $3
.EQ TB3 $4
.EQ DPL $5
.EQ DPM $6
.EQ DPH $7 ;DEFAULT
;===================================================================================
.EQ PS $8 ;PS R/W 1100 CPU power saving register
.EQ INTF $9 ;INTF R/W 0000 Interrupt request flag register
.EQ INTC $A ;INTC R/W 0000 Interrupt control register
;============== I/O Port SFR Define ================================================
.EQ PAC $0B ;PAC R/W 1111 I/O port A control register
.EQ PA $0C ;PA R/W 1111 I/O port A register
.EQ PBC $0D ;PBC R/W 1111 I/O port B control register
.EQ PB $0E ;PB R/W 1111 I/O port B register
.EQ PCC $0F ;PCC R/W 1111 I/O port C control register
.EQ PC $10 ;PC R/W 1111 I/O port C register
;===================================================================================
.EQ TBC $15 ;TBC R/W 0000 Time base control register
.EQ TMAL $16 ;TMAL R/W 0000 Timer/counter A data low register
.EQ TMAH $17 ;TMAH R/W 0000 Timer/counter A data high register
.EQ TMAC $18 ;TMAC R/W 0000 Timer/counter A control register
.EQ TMBL $19 ;TMBL R/W 0000 Timer/counter B data low register
.EQ TMBH $1A ;TMBH R/W 0000 Timer/counter B data high register
.EQ TMBC $1B ;TMBC R/W 0000 Timer/counter B control register
;============== SFR REGISTER =======================================================
.EQ MFC $1F ;MFC R/W 0010 Multi-function control register
;============== USER RAM DEFINE RANGE ->20h~5Fh ====================================
.EQ SystemBuf0 $20 ;USED RAM
.EQ SystemBuf1 $21
.EQ SystemBuf2 $22
.EQ SystemBuf3 $23
.EQ SystemTemp0 $24
.EQ SystemTemp1 $25
.EQ TMBLBuf $26
.EQ TMBHBuf $27
.EQ StackTemp $5F
;===================================================================================
.ORG $000
;===================================================================================
JMP Main_Program_Start
;========= INTERRUPT SUBROUTINE ====================================================
INT_PRG:
; LDA ACC
STX StackTemp ;PUSH ACC TO ACCTEMP BUFFER
TST #$2,INTF
JPZ INT_PRG_0
; XOR #$F,PB,M
TST #$4,PB
JPZ SET_PB0
;STX #$0,PB
AND #$B,PB,M
JMP INT_PRG_0
SET_PB0:
ORI #$4,PB,M
;STX #$F,PB
INT_PRG_0:
NOP
STX #$0,PBC
STX #$0,INTF ;CLEAR PA0,TIMEBASE INTERRUPT FLAG
LDA StackTemp
; STX ACC ;POP ACCTEMP TO ACC
RET ;RETURN TO MAINPRG FRM INT_SUB
;===================================================================================
Main_Program_Start:
STX #$4,PS
CLR_All_Ram:
SDP
LDP $20
Init_All_Step:
STX #$0,DP
CMP #$6,DPM
JPC Init_All_Step
CDP
STX #$9,TMAC
STX #$F,TMBC
STX #$0,TMBL
STX #$1,TMBH
STX #$0,TMAL
STX #$0,TMAH
STX #$2,INTC
STX #$5,TBC
STX #$0,PBC
STX #$A,PB
;-----------------------------------------------
MainLoop:
LDA PS
STX PS
NOP
NOP
JMP MainLoop
;-----------------------------------------------
.END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -