打印

请教ADC0809的调试问题

[复制链接]
1907|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
omantou|  楼主 | 2008-4-8 17:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在进行ADC0809的调试,编程如下:
ORG 0000H
     AJMP MAIN
     ORG 13H
     AJMP INT
     ORG 23H
     AJMP SHUCHU
     ORG 30H
MAIN:MOV SCON,#40H    ;设置串口工作在方式1,8位的UART,
                      ;1位起始位和1为停止位
     MOV TMOD,#20H    ;波特率发射器T1工作在方式2
     MOV TH1,#0FDH    ;预置初值(按照波特率9600预置初值)
     MOV TL1,#0FDH    ;预置初值(按照波特率9600预置初值)
     SETB EA
     SETB EX1
     SETB ES
     SETB IE1         ;外部中断电平方式触发中断
     SETB TR1         ;启动定时器T1
     MOV DPTR,#0FEF8H ;AD转换IN0通道地址
     MOV A,#00H
     MOVX @DPTR,A     ;启动AD转换
HERE:SJMP HERE
 INT:MOVX A,@DPTR     ;接收转换数据
     MOV SBUF,A        ;送上位机显示
     SETB P3.3
     RETI
SHUCHU:CLR TI           ;发送完清TI
     NOP
     RETI
     END

  不管给IN0的模拟信号是+5V还是0V还是别的,或改变A的值,出来的结果都是00.不知道错在哪里。而且断电后,再上电,就不会再有任何显示,即使按了复位键。

  给ADC0809的时钟为500KHz,片选信号由P2.0给出,P2.0和/WR信号通过或非门给ST和ALE,P2.0和/RD信号通过或非门给OE,EOC通过非门吧信号给P3.3,作为查询ADC0809转换结束信号。

  请教问题出在哪里?

相关帖子

沙发
cumtnj| | 2008-4-8 18:20 | 只看该作者

打开串行接收允许位REN

     SETB EA    //开cpu中断允许
     SETB EX1    //开外部中断1
     SETB ES      //开串行口中断允许
     SETB IE1      //定时器T0中断允许
     SETB TR1       //启动定时器T1

开外部中断1???不知道要干什么;
不过你少了一步 
           SETB  REN    //打开串行接收

你少了这一步,所以串口是收不到数据的啦!

使用特权

评论回复
板凳
omantou|  楼主 | 2008-4-9 09:37 | 只看该作者

开外部中断1

开外部中断1是查询AD的转换结果是否结束,就是P3.3通过非门接ADC0809的

EOC管脚,当转换结束时EOC给出高电平,经过非门后变成底电平,产生中断信

号。

SETB  REN    //打开串行接收这句我加上去试试看,因为只是发送数据,所以

没有这句。

另外想请教下用万用表能看到EOC上的电压变化吗?

  

使用特权

评论回复
地板
omantou|  楼主 | 2008-4-10 13:40 | 只看该作者

请各位大虾指点下啊

使用特权

评论回复
5
OneMillion| | 2008-4-10 13:43 | 只看该作者

ADC0809 老古董...

使用特权

评论回复
6
omantou|  楼主 | 2008-4-10 21:18 | 只看该作者

是啊,老古董,没办法,还得用。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

13

主题

30

帖子

1

粉丝