P4M1 DATA 0B3H
P4M0 DATA 0B4H
P5M1 DATA 0C9H
P5M0 DATA 0CAH
ORG 0000H
LJMP MAIN
ORG 0100H
MAIN:
MOV SP, #5FH
MOV P0M0, #00H
MOV P0M1, #00H
MOV P1M0, #00H
MOV P1M1, #00H
MOV P2M0, #00H
MOV P2M1, #00H
MOV P3M0, #00H
MOV P3M1, #00H
MOV P4M0, #00H
MOV P4M1, #00H
MOV P5M0, #00H
MOV P5M1, #00H
MOV P1M0,#00H ;Set P1.0 as ADC input
MOV P1M1,#01H
MOV P_SW2,#80H
MOV DPTR,#ADCTIM ; Set ADC internal timing
MOV A,#3FH
MOVX @DPTR,A
MOV P_SW2,#00H
MOV ADCCFG,#0FH ;Set the ADC clock to the system clock/2/16
MOV ADC_CONTR,#80H ;Enable ADC module
LOOP:
ORL ADC_CONTR,#40H ;Start AD conversion
NOP
NOP
MOV A,ADC_CONTR ;Query ADC completion flag
JNB ACC.5,$-2
ANL ADC_CONTR,#NOT 20H ;Clear completion flag
MOV P2,ADC_RES ;Read ADC results
SJMP LOOP
END
17.5.2 ADC Basic Operation (Interrupt Mode)
C language code
//Operating frequency for test is 11.0592MHz
#include "reg51.h"
#include "intrins.h"
sfr ADC_CONTR = 0xbc;