📄 sh69p56.asm
字号:
; MCU=69P56
IE EQU 00H ; Interrupt enable flags
IRQ EQU 01H ; Interrupt request flags
TM0 EQU 02H
TM1 EQU 03H
TL0 EQU 04H
TH0 EQU 05H
TL1 EQU 06H
TH1 EQU 07H
PA EQU 08H
PB EQU 09H
PC EQU 0AH
PD EQU 0BH
PE EQU 0CH
CONTROL EQU 0DH
TBR EQU 0EH
INX EQU 0FH
DPL EQU 10H
DPM EQU 11H
DPH EQU 12H
TIMCTL EQU 13H
PBINT EQU 14H
PBIRQ EQU 15H
ALARM EQU 16H
AEC EQU 17H
PAC EQU 18H
PBC EQU 19H
PCC EQU 1AH
PDC EQU 1BH
PEC EQU 1CH
ELON EQU 1DH
WDTC EQU 1EH
; RESERVED
VREFADC EQU 20H
ADCSEL EQU 21H
ADCOSC EQU 22H
ADCL EQU 23H
ADCH EQU 24H
LCDON EQU 25H
DUTY EQU 26H
LCDC EQU 27H
PWMC0 EQU 00H
PWMC1 EQU 01H
PWMP0L EQU 02H
PWMP0M EQU 03H
PWMP0H EQU 04H
PWMD0L EQU 05H
PWMD0M EQU 06H
PWMD0H EQU 07H
PWMP1L EQU 08H
PWMP1M EQU 09H
PWMP1H EQU 0AH
PWMD1L EQU 0BH
PWMD1M EQU 0CH
PWMD1H EQU 0DH
RDT0 EQU 0EH
RDT1 EQU 0FH
RDT2 EQU 10H
RDT3 EQU 11H
;====================================================
BUFFL EQU 31H
BUFFM EQU 32H
BUFFH EQU 33H
TEMP EQU 60H ; BANK0
TEMPL EQU 61H ; BANK0
TEMPH EQU 62H ; BANK0
SINFLG EQU 63H ; BANK0
PSH EQU 50H ; BANK1
DTNUML EQU 51H ; BANK1
DTNUMH EQU 52H ; BANK1
BDPL EQU 53H ; BANK1
BDPM EQU 54H ; BANK1
BDPH EQU 55H ; BANK1
; (60H-7CH) BANK1 STORE RECEIVE DATA (0E0H-0FCH)
;====================================================
;====================================================
; JMP MAINPROG
; JMP ADCINT ; ADC
; JMP TIME0INT ; TIMER0
; JMP TIME1INT ; TIMER1
; JMP PORTBINT ; PORTB INT
;****************************************************
;****************************************************
ORG 0000H
JMP MAINPROG
NOP
NOP
NOP
JMP PORTBINT
;****************************************************
;****************************************************
MAINPROG:
LDI IE,0 ; Disable Interrupt
LDI IRQ,0 ; Clear all interrupt flags
LDI WDTC,4 ; WDT 64MS
LDI CONTROL,13 ; OPEN 4M OSCX
LDI BUFFH,2
LDI BUFFL,0
MAINWAIT: NOP
NOP
SBIM BUFFL,1
BNZ MAINWAIT
LDI WDTC,4 ; WDT 64MS
SBIM BUFFH,1
BNZ MAINWAIT
LDI CONTROL,15 ; MAIN CLOCK 4M
NOP
NOP
LDI BUFFH,2
CALL DELAY_TIMES_XX ; DISPLAY 2S
NOP
NOP
LDI TIMCTL,0 ; TIM0 =OSC TIM1=OSC SYS
LDI TM1,2
LDI TL1,0
LDI TH1,0
LDI TEMP,0
STA DTNUML,1
STA DTNUMH,1
LDI PBC,0
LDI PB,15
LDI PBINT,8 ; PB.0 RECEIVE
LDI PBIRQ,0
LDI SINFLG,0
LDI IRQ,0
ORIM IE,1 ; ENABLE PORTB INT
;====================================================
;====================================================
MAINLOOP:
LDI TEMP,2
AND IRQ,0
BAZ NOTRECOVER
ANDIM IRQ,13
LDA SINFLG,0
BAZ NOTRECOVER
LDI SINFLG,0
LDA DTNUML,1
BNZ NOTRECOVER
LDI TEMP,7
LDA DTNUMH,1
SUB TEMP,0
BNZ NOTRECOVER
;----------------------------------------------------
NOP ; RECEIVE OK
NOP
; ADD YOU PROGRAM
LDI TEMP,0
STA DTNUMH,1
STA DTNUML,1
;----------------------------------------------------
NOTRECOVER: LDA SINFLG,0
BNZ NOTCLRTIM1
LDI TL1,0
LDI TH1,0
NOTCLRTIM1:
JMP MAINLOOP
;****************************************************
;****************************************************
;****************************************************
;****************************************************
DELAY_TIMES_XX: ; BUFFH=?
LDI BUFFM,15
LDI BUFFL,15
DLYTM10: NOP
NOP
SBIM BUFFL,1
BNZ DLYTM10
LDI WDTC,4 ; WDT 64MS
SBIM BUFFM,1
BNZ DLYTM10
SBIM BUFFH,1
BNZ DLYTM10
RTNI
;****************************************************
;****************************************************
ORG 800H
PORTBINT: STA PSH,1
LDI IRQ,0
LDA PBIRQ,0
BA3 RECEIVENT
JMP PORTBINTEN
RECEIVENT: LDA SINFLG,0
BNZ RECEIVEFNT
LDI TL1,0
LDI TH1,0
LDI SINFLG,1
JMP PORTBINTEN
RECEIVEFNT: SBI SINFLG,1
BNZ RECEIVEDAT
LDA TH1,0
STA TEMPH,0
LDA TL1,0
STA TEMPL,0
LDI TL1,0
LDI TH1,0
SBI TEMPH,2
BNC PORTBINTEN
SBI TEMPH,4
BC PORTBINTEN
LDI SINFLG,2 ; FONT OK
JMP PORTBINTEN
RECEIVEDAT: SBI SINFLG,2
BNZ PORTBINTEN
LDA TH1,0
STA TEMPH,0
LDA TL1,0
STA TEMPL,0
LDI TL1,0
LDI TH1,0
SBI TEMPH,2
BC PORTBINTEN
LDA TEMPH,0
BNZ PORTBINTXX
SBI TEMPL,3
BNC PORTBINTEN ; DAT: 03<TH1,TL1<14H OK
PORTBINTXX:
LDI TEMPH,7
SUB DTNUMH,1 ; DATNUM<70H
BC PORTBINTEN
LDI TEMPH,0
SBI TEMPL,11
BNC RECDATCHG
LDI TEMPH,1 ; DAT=0/1
RECDATCHG:
LDA DPH,0
STA BDPH,1
LDA DPM,0
STA BDPM,1
LDA DPL,0
STA BDPL,1
LDI DPH,1
LDA DTNUML,1
SHR
SHR
STA DPL,0
LDA DTNUMH,1
SHR
SHR
STA DPM,0
ADIM DPM,6
LDI TEMPL,3
AND DTNUMH,1
STA TEMPL,0
ADDM TEMPL,0
ADDM TEMPL,0
ADDM DPL,0
LDI TEMPL,3
AND DTNUML,1
STA TEMPL,0
BAZ RECDATNXT0
SBI TEMPL,1
BAZ RECDATNXT1
SBI TEMPL,2
BAZ RECDATNXT2
LDA TEMPH,0
BAZ RECDATNXTEN
LDI TEMPL,8
LDA INX,0
ORM TEMPL,0
STA INX,0
JMP RECDATNXTEN
RECDATNXT2: LDA TEMPH,0
BAZ RECDATNXTEN
LDI TEMPL,4
LDA INX,0
ORM TEMPL,0
STA INX,0
JMP RECDATNXTEN
RECDATNXT1: LDA TEMPH,0
BAZ RECDATNXTEN
LDI TEMPL,2
LDA INX,0
ORM TEMPL,0
STA INX,0
JMP RECDATNXTEN
RECDATNXT0: LDA TEMPH,0
STA INX,0
RECDATNXTEN:
LDA BDPH,1
STA DPH,0
LDA BDPM,1
STA DPM,0
LDA BDPL,1
STA DPL,0
LDI TEMPH,1
ADDM DTNUML,1
LDI TEMPH,0
ADCM DTNUMH,1 ; DATA NUMBER
PORTBINTEN: LDI PBIRQ,0
ORIM IE,1 ; ENABLE PORTB INT
LDA PSH,1
RTNI
;****************************************************
;****************************************************
;****************************************************
;****************************************************
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -