📄 base2.asm
字号:
ORG 0000H
AJMP START
ORG 002EH
KSEG EQU 30H
KBUF EQU 36H
KBUFF EQU 35H
DCTL EQU 40H
SEG: DB 'C-+0E321D654SUTM',0
MENU10: DB '数字存储 示波器',0
MENU40: DB ' 请按确定键继续',0
MENU11: DB '触发方式: ',0
MENU21: DB '扫描速度: ',0
MENU31: DB '垂直分辨率:',0
MENU12: DB '连续',0
MENU13: DB '单次',0
MENU22: DB '200ms',0
MENU23: DB ' 20ms',0
MENU24: DB ' 2ms',0
MENU25: DB '200us',0
MENU26: DB ' 20us',0
MENU32: DB ' 1V',0
MENU33: DB ' 0.1V',0
MENU34: DB ' 10mV',0
MENU35: DB ' 1mV',0
MENU41: DB '存贮',0
MENU42: DB '显示',0
MENU43: DB ' ',0
MENU44: DB '波形一',0
MENU45: DB '波形二',0
ORG 0080H
START: MOV SP, #07FH
MOV TMOD, #01H
MOV IE, #82H
MOV 09H, #KSEG
MOV TH0, #00H
MOV TL0, #00H
MOV DCTL, #00H
MOV R0, #KSEG
DP: MOV @R0, #30H
INC R0
CJNE R0, #KBUF, DP
MOV R4, #2
LCDRST: MOV R5, #255
ACALL LCDELAY
DJNZ R4, LCDRST
;基本指令集
; MOV A, #30H ; A5=1,A4=8位数据,A2=扩展指令集(不可同时改变)
; ACALL LCTRL
MOV A, #0CH ; A3=1,A2=开显示,A1=开光标,A0=光标位反白
ACALL LCTRL
MOV A, #01H ; 显示复位
ACALL LCTRL
MOV R5, #20
ACALL LCDELAY
; MOV A, #06H ; A2=1,A1=光标右移,A0=画面移动(A1=1左移)
; ACALL LCTRL
; MOV A, #02H ; 地址归位
; ACALL LCTRL
; MOV A, #14H ; A4=1,A3=0游标移动,1画面移动.A2=0左移1右移(只移光标)
; ACALL LCTRL
; MOV A, #40H ; A6=1,A5~A0=CGRAM
; ACALL LCTRL
; MOV A, #80H ; A7=1,A6~A0=DDRAM
; ACALL LCTRL
;扩充指令集
; MOV A, #01H ; 待机模式
; ACALL LCTRL
; MOV A, #02H ; A1=1,A0(SR)=1允许输入垂直卷动位,0允许输入IRAM,CGRAM
; ACALL LCTRL
; MOV A, #04H ; A2=1,A1~A0选择整行反白显示(设置一次反白,再设一次恢复)
; ACALL LCTRL
; MOV A, #08H ; A3=1,A2=0睡眠模式
; ACALL LCTRL
; MOV A, #35H ; A5=1,A4=8bit,A2=扩展指令集,A1=绘图显示
; ACALL LCTRL
; MOV A, #01H ; A6=1,SR=1:A5~A0垂直卷动位,SR=0:A3~A0 ICONRAM
; ACALL LCTRL
; MOV A, #01H ; A7=1,第一次A6~A0垂直位址,第二次A3~A0水平位址
; ACALL LCTRL
MOV DPTR, #MENU10 ;欢迎界面
ACALL STRDISP
MOV A, #90H
ACALL LCTRL
MOV DPTR, #MENU20
ACALL STRDISP
MOV A, #88H
ACALL LCTRL
MOV DPTR, #MENU30
ACALL STRDISP
MOV A, #98H
ACALL LCTRL
MOV DPTR, #MENU40
ACALL STRDISP
MUK: ACALL KINT
MOV A, DCTL
CJNE A, #'E', MUK
MOV A, #80H ;显示界面
MOV DPTR, #MENU11
ACALL STRDISP
MOV DPTR, #MENU12
ACALL STRDISP
MOV A, #90H
ACALL LCTRL
MOV DPTR, #MENU21
ACALL STRDISP
MOV DPTR, #MENU22
ACALL STRDISP
MOV A, #88H
ACALL LCTRL
MOV DPTR, #MENU31
ACALL STRDISP
MOV DPTR, #MENU32
ACALL STRDISP
MOV A, #98H
ACALL LCTRL
JSK: ACALL KINT
MOV A, DCTL
CJNE A, #'M', J1
ACALL MSET
SJMP JSK
J1: CJNE A, #'T', J2
ACALL TSET
SJMP JSK
J2: CJNE A, #'U', J3
ACALL USET
SJMP JSK
J3: CJNE A, #'S', J4
ACALL SSET
SJMP JSK
J4: CJNE A, #'D', JSK
ACALL DSET
SJMP JSK
MSET: PUSH ACC
PUSH PSW
SETB RS1
MOV A, #34H ; A5=1,A4=8位数据,A2=扩展指令集(不可同时改变)
ACALL LCTRL
MOV A, #04H ; A2=1,A1~A0选择整行反白显示(设置一次反白,再设一次恢复)
ACALL LCTRL
MOV A, #30H ; A5=1,A4=8位数据,A2=扩展指令集(不可同时改变)
ACALL LCTRL
MOV A, R1
MOV R0, A
MSK: ACALL KINT
MOV A, DCTL
CJNE A, #'C', MS1
AJMP MSC
MS1: CJNE A, #'E', MS2
AJMP MSE
MS2: CJNE A, #'+', MS3
AJMP MSA
MS3: CJNE A, #'-', MS4
AJMP MSD
MS4: SJMP MSK
MSA: CJNE R0, #1, MSA1
DEC R0
MSA1: INC R0
MOV A, #86H
ACALL LCTRL
MOV DPTR, #MENU13
ACALL STRDISP
SJMP MSK
MSD: CJNE R0, #0, MSD1
INC R0
MSD1: DEC R0
MOV A, #86H
ACALL LCTRL
MOV DPTR, #MENU12
ACALL STRDISP
SJMP MSK
MSE: MOV A, R0
MOV R1, A
CJNE A, #0, MSE0
CLR P3.0
SJMP MSED
MSE0: CJNE A, #1, MSE1
SETB P3.0
SJMP MSED
MSE1: MOV R1, #0
SJMP MSC
MSC: MOV A, R1
JB ACC.0, MSC1
MOV A, #86H
ACALL LCTRL
MOV DPTR, #MENU12
ACALL STRDISP
SJMP MSED
MSC1: MOV A, #86H
ACALL LCTRL
MOV DPTR, #MENU13
ACALL STRDISP
MSED: MOV A, #34H ; A5=1,A4=8位数据,A2=扩展指令集(不可同时改变)
ACALL LCTRL
MOV A, #04H ; A2=1,A1~A0选择整行反白显示(设置一次反白,再设一次恢复)
ACALL LCTRL
MOV A, #30H ; A5=1,A4=8位数据,A2=扩展指令集(不可同时改变)
ACALL LCTRL
MOV DCTL, #00H
POP PSW
POP ACC
RET
TSET: PUSH ACC
PUSH PSW
SETB RS1
MOV A, #34H ; A5=1,A4=8位数据,A2=扩展指令集(不可同时改变)
ACALL LCTRL
MOV A, #05H ; A2=1,A1~A0选择整行反白显示(设置一次反白,再设一次恢复)
ACALL LCTRL
MOV A, #30H ; A5=1,A4=8位数据,A2=扩展指令集(不可同时改变)
ACALL LCTRL
MOV A, R3
MOV R2, A
TSK: ACALL KINT
MOV A, DCTL
CJNE A, #'C', TS1
AJMP TSC
TS1: CJNE A, #'E', TS2
AJMP TSE
TS2: CJNE A, #'+', TS3
AJMP TSA
TS3: CJNE A, #'-', TS4
AJMP TSD
TS4: SJMP TSK
TSA: CJNE R2, #4, TSA1
DEC R2
TSA1: INC R2
ACALL TSDS
SJMP TSK
TSD: CJNE R2, #0, TSD1
INC R2
TSD1: DEC R2
ACALL TSDS
SJMP TSK
TSE: MOV A, R2
MOV R3, A
CJNE A, #0, TSE0
CLR P1.0
CLR P1.1
CLR P1.2
SJMP TSED
TSE0: CJNE A, #1, TSE1
SETB P1.0
CLR P1.1
CLR P1.2
SJMP TSED
TSE1: CJNE A, #2, TSE2
CLR P1.0
SETB P1.1
CLR P1.2
SJMP TSED
TSE2: CJNE A, #3, TSE3
SETB P1.0
SETB P1.1
CLR P1.2
SJMP TSED
TSE3: CJNE A, #4, TSE4
CLR P1.0
CLR P1.1
SETB P1.2
SJMP TSED
TSE4: MOV R3, #0
SJMP TSC
TSC: MOV A, R3
MOV R2, A
ACALL TSDS
SJMP TSED
TSED: MOV A, #34H ; A5=1,A4=8位数据,A2=扩展指令集(不可同时改变)
ACALL LCTRL
MOV A, #05H ; A2=1,A1~A0选择整行反白显示(设置一次反白,再设一次恢复)
ACALL LCTRL
MOV A, #30H ; A5=1,A4=8位数据,A2=扩展指令集(不可同时改变)
ACALL LCTRL
MOV DCTL, #00H
POP PSW
POP ACC
RET
TSDS: MOV A, #96H
ACALL LCTRL
MOV A, R2
ADD A, R2
ADD A, R2
JMP @A+PC
MOV DPTR, #MENU22
SJMP TSDD
MOV DPTR, #MENU23
SJMP TSDD
MOV DPTR, #MENU24
SJMP TSDD
MOV DPTR, #MENU25
SJMP TSDD
MOV DPTR, #MENU26
TSDD: ACALL STRDISP
RET
USET: PUSH ACC
PUSH PSW
SETB RS1
MOV A, #34H ; A5=1,A4=8位数据,A2=扩展指令集(不可同时改变)
ACALL LCTRL
MOV A, #06H ; A2=1,A1~A0选择整行反白显示(设置一次反白,再设一次恢复)
ACALL LCTRL
MOV A, #30H ; A5=1,A4=8位数据,A2=扩展指令集(不可同时改变)
ACALL LCTRL
MOV A, R5
MOV R4, A
USK: ACALL KINT
MOV A, DCTL
CJNE A, #'C', US1
AJMP USC
US1: CJNE A, #'E', US2
AJMP USE
US2: CJNE A, #'+', US3
AJMP USA
US3: CJNE A, #'-', US4
AJMP TSD
US4: SJMP USK
USA: CJNE R4, #4, USA1
DEC R4
USA1: INC R4
ACALL USDS
SJMP USK
USD: CJNE R4, #0, USD1
INC R4
USD1: DEC R4
ACALL USDS
SJMP USK
USE: MOV A, R2
MOV R3, A
CJNE A, #0, USE0
CLR P1.3
CLR P1.4
SJMP TSED
USE0: CJNE A, #1, USE1
SETB P1.3
CLR P1.4
SJMP USED
USE1: CJNE A, #2, USE2
CLR P1.3
SETB P1.4
SJMP USED
USE2: CJNE A, #3, USE3
SETB P1.3
SETB P1.4
SJMP USED
USE3: MOV R5, #0
SJMP USC
USC: MOV A, R5
MOV R4, A
ACALL USDS
SJMP USED
USED: MOV A, #34H ; A5=1,A4=8位数据,A2=扩展指令集(不可同时改变)
ACALL LCTRL
MOV A, #06H ; A2=1,A1~A0选择整行反白显示(设置一次反白,再设一次恢复)
ACALL LCTRL
MOV A, #30H ; A5=1,A4=8位数据,A2=扩展指令集(不可同时改变)
ACALL LCTRL
MOV DCTL, #00H
POP PSW
POP ACC
RET
USDS: MOV A, #8EH
ACALL LCTRL
MOV A, R4
ADD A, R4
ADD A, R4
JMP @A+PC
MOV DPTR, #MENU32
SJMP USDD
MOV DPTR, #MENU33
SJMP USDD
MOV DPTR, #MENU34
SJMP USDD
MOV DPTR, #MENU35
USDD: ACALL STRDISP
RET
SSET: PUSH PSW
PUSH ACC
SETB 00H
SETB P3.2
MOV A, #9BH
ACALL LCTRL
MOV DPTR, #MENU41
ACALL STRDISP
CLR P3.2
POP PSW
POP ACC
RET
DSET: PUSH PSW
PUSH ACC
JNB 00H, DEND
MOV A, #9EH
ACALL LCTRL
JB P3.3, DCAN
SETB P3.3
MOV DPTR, #MENU42
ACALL STRDISP
SJMP DEND
DCAN: CLR P3.3
MOV DPTR, #MENU43
ACALL STRDISP
DEND: POP ACC
POP PSW
RET
KINT: PUSH PSW
PUSH ACC
SETB RS0
ACALL KS
JZ KEND
ACALL KDELAY
ACALL KS
JZ KEND
MOV P2, #07FH
MOV R0, #0CH
ACALL KP
JZ KMEM
MOV P2, #0BFH
MOV R0, #08H
ACALL KP
JZ KMEM
MOV P2, #0DFH
MOV R0, #04H
ACALL KP
JZ KMEM
MOV P2, #0EFH
MOV R0, #0H
ACALL KP
JZ KMEM
AJMP KEND
KMEM: MOV DPTR, #SEG
MOV A, R0
MOVC A, @A+DPTR
MOV DCTL, A
SJMP KEND
KEND: POP ACC
POP PSW
KEND1: ACALL KS
JNZ KEND1
MOV TL0, #00H
MOV TH0, #00H
SETB TR0
RETI
KP: MOV A, P2
JNB ACC.3, KL1
JNB ACC.2, KL2
JNB ACC.1, KL3
JNB ACC.0, KL4
SJMP KPED
KL1: INC R0
KL2: INC R0
KL3: INC R0
KL4: MOV A, #0
KPED: RET
KS: MOV P2, #0FH
MOV A, P2
CPL A
ANL ACC, #0FH
RET
KDELAY: MOV R4, #25
DL1: MOV R3, #100
DL2: DJNZ R3, DL2
DJNZ R4, DL1
RET
STRDISP:MOV R7, #0
MENI: MOV A, R7
MOVC A, @A+DPTR
JZ MENO
ACALL LDATA
INC R7
SJMP MENI
MENO: RET
LCTRL: CLR P3.6
SETB P3.7
MOV P0, A
NOP
NOP
NOP
NOP
CLR P3.7
ACALL LBUSY
RET
LDATA: SETB P3.6
SETB P3.7
MOV P0, A
NOP
NOP
NOP
NOP
CLR P3.7
ACALL LBUSY
RET
LCDELAY:ACALL LBUSY
DJNZ R5, LCDELAY
RET
LBUSY: MOV R6, #255
LB1: DJNZ R6, LB1
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -