📄 ad.asm
字号:
ORG 0000H
LJMP START
ORG 0020H
LJMP SERVE
ORG 0030H
START: MOV R0,#00H
MOV R1,#0FFH ;256个数据
MOV DPTR,#7FF7H ;给DPTR置的初值
MOV P1,#0FFH ;读取键值
MOV A,P1
CPL A
JZ START
LCALL D10MS
MOV A,P1
CPL A
ANL A,#0FFH
JZ START
MOV B,A
KEY: MOV A,P1
CPL A
ANL A,#0FFH
JNZ KEY ;判断是那个键按下,并执行相应操作
LCALL D10MS
MOV A,B
JB ACC.0,K1
JB ACC.1,K2
JB ACC.2,K3
JB ACC.3,K4
JB ACC.4,K5
JB ACC.5,K6
JB ACC.6,K7
JB ACC.7,K8
LJMP START
SETB IT1 ;脉冲触发方式
SETB EA ;开中断
SETB EX1
K1: MOV B,#01H
LJMP NEXT
K2: MOV B,#02H
LJMP NEXT
K3: MOV B,#03H
LJMP NEXT
K4: MOV B,#04H
LJMP NEXT
K5: MOV B,#05H
LJMP NEXT
K6: MOV B,#06H
LJMP NEXT
K7: MOV B,#07H
LJMP NEXT
K8: MOV B,#08H
LJMP NEXT
NEXT: MOV A,DPL
ADD A,B ;选择计数器通道
MOV DPL,A
MOVX @DPTR,A ;启动A/D转换
SJMP $
SERVE: MOVX A,@DPTR ;读数
MOVX @R0,A ;存数
INC R0 ;更新暂存单元
DJNZ R1,DONE ;N次采样是否结束
RETI
DONE: MOVX @DPTR,A ;转换完毕
RETI
D10MS: MOV R7,#10H ;10MS延时程序
DS11: MOV R6,#0FFH
DS22: DJNZ R6,DS22
DJNZ R7,DS11
RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -