📄 adc.asm
字号:
;-----------STC12C5410AD/AD转换程序---------------
;------------2008.8.28----------------------------
;-------------------------------------------------
ADC_CONTR EQU 0C5H
ADC_DATA EQU 0C6H ;ADC高8位
ERROR BIT P1.7 ;不合格
PASS BIT P1.6 ;合格
K1 BIT P1.5 ;充放电开关
K2 BIT P1.4 ;振子与外框的测试
K3 BIT P1.3
ADC_LOW2 EQU 0BEH ;低2位
P1M0 EQU 91H ;模式寄存器0
P1M1 EQU 92H ;模式寄存器1
ORG 0000H
LJMP MAIN
ORG 0030H
MAIN:MOV SP,#60H
MOV TMOD,#20H ;晶振11.0592,波特率9600,方式3
MOV SCON,#50H
MOV TH1,#0FDH
MOV TL1,#0FDH
MOV PCON,#00H
SETB TR1
setb p1.0
setb K1
CLR K2
CLR K3
MOV SP,#50H
SETB PASS
SETB ERROR
kk: ;--------------------------------启动内部模拟电源
MOV ADC_CONTR,#80H
LCALL DELAY_1MS
;---------------------- ---------设置P1.2位开漏
MOV A,#00000001B
ORL P1M0,A
ORL P1M1,A
;--------------------------------设置P1.2A位AD转换通道
MOV ADC_CONTR,#11100000B
;---------------------------------启动测量并转换
ORL ADC_CONTR,#00001000B ;*******
AD_CON: MOV A,#00010000B
ANL A,ADC_CONTR
JZ AD_CON
ANL ADC_CONTR,#11100111B ;转换结束,清ADC_FLAG,ADC_START
MOV A,ADC_DATA ;HIGH 8 BIT
ANL A,#3FH
RL A
RL A
ORL A,ADC_LOW2 ;LOW 2 BIT
;-------------------------------上传结果到PC机
LCALL SEND_BYTE
MOV A,ADC_DATA
ANL A,#0C0H
MOV R1,#6
STOP: RR A
DJNZ R1,STOP
LCALL SEND_BYTE
;--------------------------------恢复P1.0口
;MOV A,#11111110B
;ANL P1M0,A
;ANL P1M1,A
LJMP kk
SEND_BYTE:
CLR TI
PUSH ACC
MOV SBUF,A
SEND_FIN:JNB TI,SEND_FIN
CLR TI
POP ACC
RET
DELAY_1MS:MOV R7,#0FFH
LOOP1: NOP
NOP
DJNZ R7,LOOP1
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -