📄 编码发送.asm
字号:
BSET 1,DDRD
NOP
NOP
NOP
NOP
PD1_PA5: BRCLR 5,PTA,PD1_PA5LOW
PD1_PA5HIGH: LDA KS23COU
SUB #$40
BLO PD1_PA5HIGH2
MOV #$40,KS23COU
BRSET 2,KEYST2,PD1_PA5END
BSET 2,KEYST2
BSET 2,SYSSTU2
BRA PD1_PA5END
PD1_PA5HIGH2: INC KS23COU
BRA PD1_PA5END
PD1_PA5LOW: LDA KS23COU
BEQ PD1_PA5LOW2
DEC KS23COU
BRA PD1_PA5END
PD1_PA5LOW2: BRCLR 2,KEYST2,PD1_PA5END
BCLR 2,KEYST2
BCLR 2,SYSSTU2
PD1_PA5END:
PD1_PA6: BRCLR 6,PTA,PD1_PA6LOW
PD1_PA6HIGH: LDA KS24COU
SUB #$40
BLO PD1_PA6HIGH2
MOV #$40,KS24COU
BRSET 3,KEYST2,PD1_PA6END
BSET 3,KEYST2
BSET 3,SYSSTU2
BRA PD1_PA6END
PD1_PA6HIGH2: INC KS24COU
BRA PD1_PA6END
PD1_PA6LOW: LDA KS24COU
BEQ PD1_PA6LOW2
DEC KS24COU
BRA PD1_PA6END
PD1_PA6LOW2: BRCLR 3,KEYST2,PD1_PA6END
BCLR 3,KEYST2
BCLR 3,SYSSTU2
PD1_PA6END:
SCANPD1END: BCLR 1,PTD
BCLR 1,DDRD
NOP
NOP
NOP
NOP
*-------------------------------------------------------------
SCANPD2: BSET 2,PTD
BSET 2,DDRD
NOP
NOP
NOP
NOP
PD2_PA5: BRCLR 5,PTA,PD2_PA5LOW
PD2_PA5HIGH: LDA KS25COU
SUB #$40
BLO PD2_PA5HIGH2
MOV #$40,KS25COU
BRSET 4,KEYST2,PD2_PA5END
BSET 4,KEYST2
BSET 4,SYSSTU2
BRA PD2_PA5END
PD2_PA5HIGH2: INC KS25COU
BRA PD2_PA5END
PD2_PA5LOW: LDA KS25COU
BEQ PD2_PA5LOW2
DEC KS25COU
BRA PD2_PA5END
PD2_PA5LOW2: BRCLR 4,KEYST2,PD2_PA5END
BCLR 4,SYSSTU2
BCLR 4,KEYST2
PD2_PA5END:
PD2_PA6: BRCLR 6,PTA,PD2_PA6LOW
PD2_PA6HIGH: LDA KS26COU
SUB #$40
BLO PD2_PA6HIGH2
MOV #$40,KS26COU
BRSET 5,KEYST2,PD2_PA6END
BSET 5,KEYST2
BSET 5,SYSSTU2
BRA PD2_PA6END
PD2_PA6HIGH2: INC KS26COU
BRA PD2_PA6END
PD2_PA6LOW: LDA KS26COU
BEQ PD2_PA6LOW2
DEC KS26COU
BRA PD2_PA6END
PD2_PA6LOW2: BRCLR 5,KEYST2,PD2_PA6END
BCLR 5,SYSSTU2
BCLR 5,KEYST2
PD2_PA6END:
SCANPD2END: BCLR 2,PTD
bclr 2,DDRD
NOP
NOP
NOP
*-------------------------------------------------------------
SCANPD6: BSET 6,PTD
BSET 6,DDRD
NOP
NOP
NOP
NOP
PD6_PA5: BRCLR 5,PTA,PD6_PA5LOW
PD6_PA5HIGH: LDA KS27COU
SUB #$40
BLO PD6_PA5HIGH2
MOV #$40,KS27COU
BRSET 6,KEYST2,PD6_PA5END
BSET 6,KEYST2
BSET 6,SYSSTU2
BRA PD6_PA5END
PD6_PA5HIGH2: INC KS27COU
BRA PD6_PA5END
PD6_PA5LOW: LDA KS27COU
BEQ PD6_PA5LOW2
DEC KS27COU
BRA PD6_PA5END
PD6_PA5LOW2: BRCLR 6,KEYST2,PD6_PA5END
BCLR 6,SYSSTU2
BCLR 6,KEYST2
PD6_PA5END:
PD6_PA6: BRCLR 6,PTA,PD6_PA6LOW
PD6_PA6HIGH: LDA KS28COU
SUB #$40
BLO PD6_PA6HIGH2
MOV #$40,KS28COU
BRSET 7,KEYST2,PD6_PA6END
BSET 7,KEYST2
BSET 7,SYSSTU2
BRA PD6_PA6END
PD6_PA6HIGH2: INC KS28COU
BRA PD6_PA6END
PD6_PA6LOW: LDA KS28COU
BEQ PD6_PA6LOW2
DEC KS28COU
BRA PD6_PA6END
PD6_PA6LOW2: BRCLR 7,KEYST2,PD6_PA6END
BCLR 7,SYSSTU2
BCLR 7,KEYST2
PD6_PA6END:
SCANPD6END: BCLR 6,PTD
BCLR 6,DDRD
NOP
NOP
KBDSCANEND: CLI
*------------------------------------
S1TX: BRCLR 0,SYSSTU2,S1NO
S1PRO: BRSET 0,M1_M,S1END
BSET 0,M1_M
MOV #$0A,REMOTSTU
CLR CODECOUNT
Bclr 4,PTD
MOV #$02,T1CH0H
MOV #$ae,T1CH0L ;280US
LDA #$54 ;0101,1100 输出比较
STA T1SC0
BRA S1END
S1NO: BRCLR 0,M1_M,S1END
BCLR 4,PTD
BCLR 0,M1_M
CLR REMOTSTU
CLR CODECOUNT
LDA #$10
STA T1SC0
S1END:
S2TX: BRCLR 1,SYSSTU2,S2NO
S2PRO: BRSET 1,M1_M,S2END
BSET 1,M1_M
MOV #$0B,REMOTSTU
CLR CODECOUNT
Bclr 4,PTD
MOV #$02,T1CH0H
MOV #$ae,T1CH0L ;280US
LDA #$54 ;0101,1100 输出比较
STA T1SC0
BRA S2END
S2NO: BRCLR 1,M1_M,S2END
BCLR 4,PTD
BCLR 1,M1_M
CLR REMOTSTU
CLR CODECOUNT
LDA #$10
STA T1SC0
S2END:
S3TX: BRCLR 2,SYSSTU2,S3NO
S3PRO: BRSET 2,M1_M,S3END
BSET 2,M1_M
MOV #$0C,REMOTSTU
CLR CODECOUNT
Bclr 4,PTD
MOV #$02,T1CH0H
MOV #$ae,T1CH0L ;280US
LDA #$54 ;0101,1100 输出比较
STA T1SC0
BRA S3END
S3NO: BRCLR 2,M1_M,S3END
BCLR 2,PTD
BCLR 2,M1_M
CLR REMOTSTU
CLR CODECOUNT
LDA #$10
STA T1SC0
S3END:
S4TX: BRCLR 3,SYSSTU2,S4NO
S4PRO: BRSET 3,M1_M,S4END
BSET 3,M1_M
MOV #$0D,REMOTSTU
CLR CODECOUNT
Bclr 4,PTD
MOV #$02,T1CH0H
MOV #$ae,T1CH0L ;280US
LDA #$54 ;0101,1100 输出比较
STA T1SC0
BRA S4END
S4NO: BRCLR 3,M1_M,S4END
BCLR 4,PTD
BCLR 3,M1_M
CLR REMOTSTU
CLR CODECOUNT
LDA #$10
STA T1SC0
S4END:
S5TX: BRCLR 4,SYSSTU2,S5NO
S5PRO: BRSET 4,M1_M,S5END
BSET 4,M1_M
MOV #$04,REMOTSTU
CLR CODECOUNT
Bclr 4,PTD
MOV #$02,T1CH0H
MOV #$ae,T1CH0L ;280US
LDA #$54 ;0101,1100 输出比较
STA T1SC0
BRA S5END
S5NO: BRCLR 4,M1_M,S5END
BCLR 4,PTD
BCLR 4,M1_M
CLR REMOTSTU
CLR CODECOUNT
LDA #$10
STA T1SC0
S5END:
*************************************************************************
*************************************************************************
JMP main_loop
**************************************************************************
**************************************************************
* DUMMY_ISR - Dummy Interrupt Service Routine. *
* Just does a return from interrupt. *
**************************************************************
dummy_isr:
rti ; return
**************************************************************
* DUMMY_ISR - Dummy Interrupt Service Routine. *
* Just does a return from interrupt. *
**************************************************************
T1CH0_isr:
TONGBU: LDA T1SC0
BCLR 7,T1SC0
PSHH
INC CODECOUNT
LDA CODECOUNT
CMP #1T
BEQ JFLOP1
CMP #2T
BEQ JFLOP2
CMP #3T
BEQ JFLOP3
CMP #28T
BLO JFLOP2_600
CMP #28T
BEQ JFLOP_OVERT
CMP #39T
BHS JDATAGOOVER
BRA DATA_CHOISE
JFLOP1: JMP FLOP1
JFLOP2: JMP FLOP2
JFLOP3: JMP FLOP3
JFLOP2_600: JMP FLOP2_600
JFLOP_OVERT: JMP FLOP_OVERT
JDATAGOOVER: JMP DATAGOOVER
DATA_CHOISE: CMP #29T
BEQ REMOTEDATA4_0
CMP #30T
BEQ REMOTEDATA4_1
CMP #31T
BEQ REMOTEDATA3_0
CMP #32T
BEQ REMOTEDATA3_1
CMP #33T
BEQ REMOTEDATA2_0
CMP #34T
BEQ REMOTEDATA2_1
CMP #35T
BEQ REMOTEDATA1_0
CMP #36T
BEQ REMOTEDATA1_1
CMP #37T
BEQ REMOTEDATA0_0
CMP #38T
BEQ REMOTEDATA0_1
DATAGOOVER: CMP #39T
BEQ JFLOP_AGAIN
CMP #40T
BEQ JFLOPSTART
JMP TONGBUEND
JFLOP_AGAIN: JMP FLOP_AGAIN
JFLOPSTART: JMP FLOPSTART
REMOTEDATA4_0: BRSET 4,REMOTSTU,FLOP_600
BRA FLOP_200
REMOTEDATA4_1: BRA FLOP_OVERT
REMOTEDATA3_0: BRSET 3,REMOTSTU,FLOP_600
BRA FLOP_200
REMOTEDATA3_1: BRA FLOP_OVERT
REMOTEDATA2_0: BRSET 2,REMOTSTU,FLOP_600
BRA FLOP_200
REMOTEDATA2_1: BRA FLOP_OVERT
REMOTEDATA1_0: BRSET 1,REMOTSTU,FLOP_600
BRA FLOP_200
REMOTEDATA1_1: BRA FLOP_OVERT
REMOTEDATA0_0: BRSET 0,REMOTSTU,FLOP_600
BRA FLOP_200
REMOTEDATA0_1: BRA FLOP_OVERT
FLOP1: MOV #$04,T1CH0H
MOV #$98,T1CH0L ;480
LDA #$54 ;0101,0100
STA T1SC0
BRA TONGBUEND
FLOP2:
MOV #$07,T1CH0H
MOV #$A8,T1CH0L ;800
LDA #$58 ;0101,1000
STA T1SC0
BRA TONGBUEND
FLOP3: MOV #$07,T1CH0H
MOV #$A8,T1CH0L ;800
LDA #$54 ;0101,0100
STA T1SC0
BRA TONGBUEND
FLOP2_600: MOV #$01,T1CH0H
MOV #$EA,T1CH0L ;200
LDA #$5A ;0101,1010比较翻转且溢出翻转
STA T1SC0
BRA TONGBUEND
FLOP_200: MOV #$01,T1CH0H
MOV #$EA,T1CH0L ;200
LDA #$54 ;0101,1010比较翻转
STA T1SC0
BRA TONGBUEND
FLOP_600: MOV #$05,T1CH0H
MOV #$BE,T1CH0L ;600
LDA #$54 ;0101,1010比较翻转
STA T1SC0
BRA TONGBUEND
FLOP_OVERT: MOV #$07,T1CH0H
MOV #$A8,T1CH0L ;800
LDA #$54 ;0101,0100
STA T1SC0
BRA TONGBUEND
FLOP_AGAIN: MOV #$00,T1CH0H
MOV #$F5,T1CH0L ;100US
LDA #$58 ;0101,1000
STA T1SC0
BRA TONGBUEND
FLOPSTART: MOV #$02,T1CH0H
MOV #$ae,T1CH0L ;280US
LDA #$54 ;0101,1100
STA T1SC0
CLR CODECOUNT
TONGBUEND: PULH
rti ; return
**************************************************************
ORG FLBPR
DB $80
**************************************************************
* Vectors - Timer Interrupt Service Routine. *
* after a RESET. *
**************************************************************
org VectorStart
dw dummy_isr ; Time Base Vector
dw dummy_isr ; ADC Conversion Complete
dw dummy_isr ; Keyboard Vector
dw dummy_isr ; SCI Transmit Vector
dw dummy_isr ; SCI Receive Vector
dw dummy_isr ; SCI Error Vector
dw dummy_isr ; SPI Transmit Vector
dw dummy_isr ; SPI Receive Vector
dw dummy_isr ; TIM2 Overflow Vector
dw dummy_isr;dw T2CH1_isr ; TIM2 Channel 1 Vector
dw dummy_isr;dw T2CH0_isr ; TIM2 Channel 0 Vector
dw dummy_isr;dw T1OVR_isr ; TIM1 Overflow Vector
dw dummy_isr;dw T1CH1_isr ; TIM1 Channel 1 Vector
dw T1CH0_isr ; TIM1 Channel 0 Vector
dw dummy_isr ; ICG/CGM Vector
dw dummy_isr ; ~IRQ1 Vector
dw dummy_isr ; SWI Vector
dw main_init ; Reset Vector
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -