关于adc0809 eoc总是低电平的问题

2019-07-15 19:01发布

为什么eoc总是低电平啊?我的clk是20k,start也没问题(用示波器测的),软件应该也没问题,仿真测试可行
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
4条回答
Harry呦呦
2019-07-16 00:27
这是源程序#include<reg52.h> #include<intrins.h> #define uchar unsigned char #define uint  unsigned int unsigned char code tab[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};                        sbit ST=P3^0; sbit EOC=P3^1; sbit OE=P3^2; sbit CLK=P3^3;  /**********延时函数************/ void delaynms(uchar i) {         uchar j;         while(i--)         {                 for(j=125;j>0;j--)                 ;         } }  /*********系统初始化***********/ void Init_Time() {         EA = 1; //开总中断         TMOD = 0x02; //设定定时器T0工作方式2     TH0=236;     TL0=236;         TR0=1;//启动定时器T0         ET0=1; }  /***********T0中断服务程序************/ void t0(void) interrupt 1 using 0 {         CLK=~CLK; }  /***********AD转换函数**********/ uint AD() {                 uint ad_data=0;         OE=0;         ST=0;         delaynms(1);         ST=1; //启动AD转换         delaynms(1);         ST=0;         delaynms(1);         while(EOC==0);         OE=1;         ad_data=P1;         OE=0;         return ad_data; } /*******数码管显示******/ void display(uint ad_data) {         P0=tab[ad_data/100];         P2=0xbf;         delaynms(1);         P0=tab[ad_data%100/10];         P2=0xdf;         delaynms(1);         P0=tab[ad_data%10];         P2=0xef;         delaynms(1);         P2=0xFF; }  /**********主函数*******/ void main() {         Init_Time();         while(1)         {                                           display(AD());         } }

一周热门 更多>