菜鸟求教一个adc0809问题
时间:12-12
整理:3721RD
点击:
这个程序在proteus中模拟没有问题,但是在电路中就不能用。串口部分没有问题,因为直接给一个数,电脑都能接收到。但是模拟转换好像根本就不起作用,不知何故。输出一直是FF,从来不变。
时序问题研究了几天了,实在不知道是什么原因了。clock用的是单片机四分频。请各位给看看,哪里出了问题。
附后是程序,先谢了。
EOC EQU P0.6
START EQU P0.7
OE EQU P0.5
ORG 0000H
LJMP MAIN
ORG 030H
MAIN: MOV R2, #07H
MAIN1: MOV P2, R2
CLR START
CLR OE
SETB EOC
ACALL DELAY
SETB START
ACALL DELAY
CLR START
ACALL DELAY
JNB EOC, $
SETB OE
ACALL DELAY
MOV R4, P1
CLR OE
ACALL DELAY
ACALL SEND
ACALL DELAY
DJNZ R2,MAIN1
AJMP MAIN
SEND: MOV TMOD, #00100000B;计数器工作方式2,8位自动加载计数
MOV TH1, #0FDH ;设置波特率为19200
MOV TL1, #0FDH
MOV PCON, #10000000B;设置smod为1
SETB TR1
MOV SCON, #01000000B
MOV A, R4
MOV SBUF, A
JNB TI, $
CLR TI
ACALL DELAY
RET
DELAY: MOV R6,#0D0H ;10MS延时子程序
DL1: MOV R7,#19H
DL2: DJNZ R7,DL2
DJNZ R6,DL1
RET
END
时序问题研究了几天了,实在不知道是什么原因了。clock用的是单片机四分频。请各位给看看,哪里出了问题。
附后是程序,先谢了。
EOC EQU P0.6
START EQU P0.7
OE EQU P0.5
ORG 0000H
LJMP MAIN
ORG 030H
MAIN: MOV R2, #07H
MAIN1: MOV P2, R2
CLR START
CLR OE
SETB EOC
ACALL DELAY
SETB START
ACALL DELAY
CLR START
ACALL DELAY
JNB EOC, $
SETB OE
ACALL DELAY
MOV R4, P1
CLR OE
ACALL DELAY
ACALL SEND
ACALL DELAY
DJNZ R2,MAIN1
AJMP MAIN
SEND: MOV TMOD, #00100000B;计数器工作方式2,8位自动加载计数
MOV TH1, #0FDH ;设置波特率为19200
MOV TL1, #0FDH
MOV PCON, #10000000B;设置smod为1
SETB TR1
MOV SCON, #01000000B
MOV A, R4
MOV SBUF, A
JNB TI, $
CLR TI
ACALL DELAY
RET
DELAY: MOV R6,#0D0H ;10MS延时子程序
DL1: MOV R7,#19H
DL2: DJNZ R7,DL2
DJNZ R6,DL1
RET
END
按你这么说,理论上是可行咯。那么估计不是软件问题,应该是电路问题。可以用示波器选择测量P1口的波形,看是否总线能够读写,再测量穿口感是否正常通信了。总之就是在这个链路上的节点都测一下,肯定能发现问题所在