如何通过51单片机控制ADC0809进行AD转换,并且通过P1口输出控制发光二极管显示转换结果?
这个程序和原理图有什么问题?为什么能看见P0口接受到转换结果,但P1口没有输出?
原理图如下:

代码如下:
ORG 0000H
MAIN:
MOV P1, #0FFH ; 初始化P1口(LED阴极连接时需置高)
MOV P0, #0FFH ; P0口设为输入模式
MOV P2, #00H ; 控制引脚初始化(START/ALE/OE低电平)
LOOP:
; 选择通道0(A=B=C=0,假设连接到P2.3-P2.5)
CLR P2.3 ; A=0
CLR P2.4 ; B=0
CLR P2.5 ; C=0
; 启动转换(ALE和START上升沿)
SETB P2.1 ; ALE=1
SETB P2.0 ; START=1
NOP ; 延时保持脉冲宽度
CLR P2.0 ; START=0(下降沿触发转换)
CLR P2.1 ; ALE=0
; 等待转换完成(EOC从低变高,假设EOC接P3.2)
WAIT_EOC:
JB P3.2, WAIT_EOC ; 等待EOC变低(转换开始)
WAIT_EOC_HIGH:
JNB P3.2, WAIT_EOC_HIGH ; 等待EOC变高(转换完成)
; 读取数据(OE使能)
SETB P2.2 ; OE=1
MOV A, P0 ; 从P0读取ADC数据
MOV P1, A ; 数据输出到P1控制LED
CLR P2.2 ; OE=0
SJMP LOOP ; 循环
END