📄 adc 0831.asm
字号:
CS BIT P2.0
CLK BIT P2.4
DO BIT P2.5
AD_TMP EQU 30H
PWM BIT P3.7 ;PWM输出位
SW BIT P3.2 ;开关状态位
DIR BIT P3.6 ;方向控制位
ORG 00H
MAIN: LCALL AD_CONV
SETB SW ;判断开关状态
JB SW,POS ;开关位为1,则正转
AJMP NEG ;开关位为0,则反转
POS: SETB DIR
SETB PWM ;PWM输出,正转
MOV A,AD_TMP
LCALL DELAY
CLR PWM
MOV A,#255
SUBB A,AD_TMP
LCALL DELAY
SJMP MAIN
NEG: CLR DIR
CLR PWM ;PWM输出,反转
MOV A,AD_TMP
LCALL DELAY
SETB PWM
MOV A,#255
SUBB A,AD_TMP
LCALL DELAY
SJMP MAIN
;********************************************************
;AD转换子程序,转换值存放在AD_TMP中
;转换值范围为0-255之间
;********************************************************
AD_CONV:SETB CS
CLR CLK
NOP
NOP
CLR CS
NOP
NOP
SETB CLK
NOP
NOP
CLR CLK ;片选信号有效,启动ADC0831
NOP
NOP
SETB CLK
NOP
NOP
CLR CLK ;开始转换
NOP
NOP
SETB CLK
NOP
MOV R0,#08H
AD_READ:CLR CLK ;下降沿,串行数据移出一位
MOV C,DO ;读取DO端数据
RLC A
SETB CLK
NOP
NOP
DJNZ R0,AD_READ
SETB CS ;数据读完,片选置高,结束一次转换
MOV AD_TMP,A ;转换结果写入AD_TMP
RET
;*******************************************************
;延时子程序
;根据AD转换的结果,确定延时常数
;*******************************************************
DELAY: MOV R6,#5
D1: DJNZ R6,D1
DJNZ ACC,D1
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -