📄 滚动示波器.asm
字号:
$MOD841
SP0 EQU 50H
KEY EQU P3.2
CLK81 EQU P3.5
DAT81 EQU P3.3
KEYVAL EQU 30H
CHAN EQU 0
CSEG
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
ORG 0000H
LJMP MAIN
ORG 0003H
LJMP INT0_INT
ORG 000BH
LJMP SERVE2
ORG 0033H
LJMP SERVE1
ORG 0060H
MAIN: MOV R0,#0FFH
CLR A
QING: MOV @R0,A
DJNZ R0,QING
MOV SP,#SP0
LCALL YS
LCALL INI8281
LCALL INI841
HERE: LJMP HERE
;-------------------------------------------
INI841: MOV ADCCON1,#0AAH
MOV ADCCON2,#CHAN
MOV ADCCON3,#07
MOV DACCON,#0DH
MOV TMOD,#01H
SETB EA
SETB EX0
SETB ET0
SETB PADC
SETB PT0
MOV T2CON,#00H
MOV TMOD,#01H
MOV 20H,#128
MOV 21H,#8
MOV 22H,#00H
MOV 23H,#00H
MOV RCAP2H,#0FFH
MOV RCAP2L,#28H
MOV TH2,#0FFH
MOV TL2,#28H
MOV TH0,#0FFH
MOV TL0,#28H
RET
;-----------------------------------------------
INI8281:SETB CLK81
SETB DAT81
MOV A,#12H
LCALL WTO81
MOV A,#80H
LCALL WTO81
RET
;----------------------------------
INT0_INT:CLR TR0
CLR EADC
LCALL QING_XRAM
MOV A,#93H
LCALL WTO81
LCALL RDKVAL
MOV A,KEYVAL
CJNE A,#00H,S1
LCALL FUNCTION1
LJMP S2
S1: CJNE A,#01H,S2
LCALL FUNCTION2
S2: RETI
;-----------------------------------
SERVE1: MOV R0,ADCDATAL
MOV A,ADCDATAH
ANL A,#0FH
MOV R1,A
MOV DAC0H,R1
MOV DAC0L,R0
MOV DPH,22H
MOV DPL,23H
MOV R6,20H
MOV R7,21H
MOV A,R1
MOVX @DPTR,A
INC DPTR
MOV A,R0
MOVX @DPTR,A
INC DPTR
PP1: DJNZ R6,OVER
MOV R6,#128
DJNZ R7,PP1
MOV DPTR,#0000H
MOV R7,#8
OVER: MOV 20H,R6
MOV 21H,R7
MOV 22H,DPH
MOV 23H,DPL
RETI
;-----------------------------------------
SERVE2: MOV TH0,#0FFH
MOV TL0,#28H
MOV DPH,22H
MOV DPL,23H
MOV R6,20H
MOV R7,21H
MOVX A,@DPTR
MOV DAC0H,A
INC DPTR
MOVX A,@DPTR
MOV DAC0L,A
INC DPTR
PP2: DJNZ R6,OVER1
MOV R6,#128
DJNZ R7,PP2
MOV DPTR,#0000H
MOV R7,#8
OVER1: MOV 20H,R6
MOV 21H,R7
MOV 22H,DPH
MOV 23H,DPL
RETI
;---------------------------------------------
FUNCTION1:LCALL QING_XRAM
SETB TR2
SETB EADC
RET
;-------------------------------
FUNCTION2:CLR EADC
MOV T2CON,#00H
MOV TH0,#0FFH
MOV TL0,#28H
SETB TR0
RET
;---------------------------------------------
QING_XRAM: MOV DPTR,#0000H
CLR A
QING1: MOVX @DPTR,A
INC DPTR
MOV R5,DPH
MOV R4,DPL
CJNE R5,#40H,QING1
CJNE R4,#00H,QING1
RET
;----------------------------------------
WTO81: MOV R6,#08H
WAT: CLR CLK81
LCALL DELAY1
SETB CLK81
JB DAT81,WAT
CLR CLK81
LCALL DELAY1
SETB CLK81
JNB DAT81,$
WTB81: RLC A
MOV DAT81,C
CLR CLK81
LCALL DELAY1
SETB CLK81
LCALL DELAY1
LCALL DELAY1
DJNZ R6,WTB81
SETB DAT81
RET
;-----------------------------------
RDKVAL: CLR CLK81
LCALL DELAY1
SETB CLK81
JB DAT81,$
CLR CLK81
LCALL DELAY1
SETB CLK81
MOV R6,#08H
RD1:
LCALL DELAY1
LCALL DELAY1
LCALL DELAY1
MOV C,DAT81
LCALL DELAY1
RLC A
CLR CLK81
LCALL DELAY1
SETB CLK81
DJNZ R6,RD1
MOV KEYVAL,A
RET
;---------------------------------
DELAY1: NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
RET
;----------------------------------------
YS: MOV R5,#00H
MOV R4,#50H
YS1: DJNZ R5,$
DJNZ R4,YS1
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -