📄 xtkbser.asm
字号:
cpu "8051.tbl"
hof "int8"
;IEC: EQU A8H
PSW: equ 0D0h ;program status word.
IE: EQU 0A8H ;INTERRUPT ENABLE.
SBUF: EQU 99H ;SEND BUFFER.
SCON: EQU 98H ;SERIAL CONTROL.
TH1: EQU 8DH ;TIMER 1 HIGH.
TH0: EQU 8CH ;TIMER 0 HIGH.
TL1: EQU 8BH ;TIMER 1 LOW.
TL0: EQU 8AH ;TIMER 0 LOW.
TMOD: EQU 89H ;TIMER MODE.
TCON: EQU 88H ;TIMER CONTROL.
PCON: EQU 87H ;POWER CONTROL REGISTER.
DPH: EQU 83H ;DATA POINTER HIGH.
DPL: EQU 82H ;DATA POINTER LOW.
SP: EQU 81H ;STACK POINTER.
P0: EQU 80H ;PORT 0.
P1: EQU 90H ;PORT 1.
P2: EQU 0A0H ;PORT 2.
P3: EQU 0B0H ;port 3.
p4: EQU 0E8H ;port 4
p6: equ 0F8h ;port6.
Acc: equ 0E0h ;Acc.
;
;MCS-51 INTERNAL BIT ADDRESSES
;
CY: EQU 0D7H ;CARRY FLAG
AC: EQU 0D6H ;AUXILIARY-CARRY FLAG
F0: EQU 0D5H ;USER FLAG 0
RS1: EQU 0D4H ;REGISTER SELECT MSB
RS0: EQU 0D3H ;REGISTER SELECT LSB
OV: EQU 0D2H ;OVERFLOW FLAG
P: EQU 0D0H ;PARITY FLAG
PS: EQU 0BCH ;PRIORITY SERIAL PORT
PT1: EQU 0BBH ;PRIORITY TIMER 1
PX1: EQU 0BAH ;PRIORITY EXTERNAL 1
PT0: EQU 0B9H ;PRIORITY TIMER 0
PX0: EQU 0B8H ;PRIORITY EXTERNAL 0
EA: EQU 0AFH ;ENABLE ALL INTERRUPT
ES: EQU 0ACH ;ENABLE SERIAL INTERRUPT
ET1: EQU 0ABH ;ENABLE TIMER 1 INTERRUPT
EX1: EQU 0AAH ;ENABLE EXTERNAL 1 INTERR
ET0: EQU 0A9H ;ENABLE TIMER 0 INTERRUPT
EX0: EQU 0A8H ;ENABLE EXTERNAL 0 INTERR
SM0: EQU 09FH ;SERIAL MODE 0
SM1: EQU 09EH ;SERIAL MODE 1
SM2: EQU 09DH ;SERIAL MODE 2
REN: EQU 09CH ;SERIAL RECEPTION ENABLE
TB8: EQU 09BH ;TRANSMITT BIT 8
RB8: EQU 09AH ;RECEIVE BIT 8
TI: EQU 099H ;TRANSMIT INTERRUPT FLAG
RI: EQU 098H ;RECEIVE INTERRUPT FLAG
TF1: EQU 08FH ;TIMER 1 OVERFLOW FLAG
TR1: EQU 08EH ;TIMER 1 RUN CONTROL BIT
TF0: EQU 08DH ;TIMER 0 OVERFLOW FLAG
TR0: EQU 08CH ;TIMER 0 RUN CONTROL BIT
IE1: EQU 08BH ;EXT INTERR. 1 EDGE FLAG
IT1: EQU 08AH ;EXT INTERR. 1 TYPE FLAG
IE0: EQU 089H ;EXT INTERR. 0 EDGE FLAG
IT0: EQU 088H ;EXT INTERR. 0 TYPE FLAG
BDE: EQU 0dfH
org 0700h
seg7: DFB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,67H,77h,7ch,58h,5eh,79h,71h
org 0710h
Shifted: dfb 00,
org 30h
kbdata1: dfs 1
kbdata2: dfs 1
kbdata3: dfs 1
kbdata4: dfs 1
kbdata5: dfs 1
kbdata6: dfs 1
temp1: dfs 1
temp2: dfs 1
temp3: dfs 1
temp4: dfs 1
bcount: dfs 1
store1: dfs 1
store2: dfs 1
gap1: dfs 1
store3: dfs 1
store4: dfs 1
gap2: dfs 1
store5: dfs 1
store6: dfs 1
gap3: dfs 1
store7: dfs 1
store8: dfs 1
gap4: dfs 1
store9: dfs 1
storea: dfs 1
gap5: dfs 1
storeb: dfs 1
storec: dfs 1
gap6: dfs 1
gap7: dfs 1
timer1: dfs 1
org 0000h
LJMP start
org 0200h
start: mov sp,#20h
acall delay
mov store1,#3fh
mov store2,#3fh
MOV store3,#3fh
MOV store4,#3fh
mov store5,#3fh
mov store6,#3fh
mov gap1,#20h
mov gap2,#20h
mov gap3,#20h
mov gap4,#20h
mov gap5,#20h
mov gap6,#20h
mov gap7,#20h
mov temp1,#00
mov timer1,#00
acall delay
repeat: mov temp1,#00
acall rebyte
mov kbdata1,temp1
mov temp1,#00
acall rebyte
mov kbdata2,temp1
mov temp1,#00
acall rebyte
mov kbdata3,temp1
mov temp1,#00
acall rebyte
mov kbdata4,temp1
mov temp1,#00
acall rebyte
mov kbdata5,temp1
mov temp1,#00
acall rebyte
mov kbdata6,temp1
acall init
mov a,kbdata1
anl a,#0fh
acall Ascii
mov store1,temp1
mov a,kbdata1
SWAP A
anl a,#0fh
acall Ascii
MOV store2,temp1
mov a,kbdata2
anl a,#0fh
acall Ascii
mov store3,temp1
mov a,kbdata2
SWAP A
anl a,#0fh
acall Ascii
MOV store4,temp1
mov a,kbdata3
anl a,#0fh
acall Ascii
mov store5,temp1
mov a,kbdata3
SWAP A
anl a,#0fh
acall Ascii
MOV store6,temp1
mov a,kbdata4
anl a,#0fh
acall Ascii
mov store7,temp1
mov a,kbdata4
SWAP A
anl a,#0fh
acall Ascii
MOV store8,temp1
mov a,kbdata5
anl a,#0fh
acall Ascii
mov store9,temp1
mov a,kbdata5
SWAP A
anl a,#0fh
acall Ascii
MOV storea,temp1
mov a,kbdata6
anl a,#0fh
acall Ascii
mov storeb,temp1
mov a,kbdata6
SWAP A
anl a,#0fh
acall Ascii
MOV storec,temp1
acall TX_DATA
acall Debounce
clr tr1 ; stop timer
ajmp repeat ; data serial line.
;=============================================
Ascii: CJNE A,#0AH,NotEql
ADD A,#37H
MOV temp1,A
AJMP MSB1
NotEql: jc below
ADD A,#37H
MOV temp1,A
AJMP MSB1
below: add a,#30h
mov temp1,a
MSB1: ret
;=============================================
rebyte: jb p1+1,$ ;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -