微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 新手求大神解答,ADC0809的程序 ,错误在哪里,谢了

新手求大神解答,ADC0809的程序 ,错误在哪里,谢了

时间:10-02 整理:3721RD 点击:
ADC0809的程序 ,错误在哪里,谢了
#include <reg52.h>               
#include "delay.h"
#include "intrins.h"
#include "display.h"
#define nop() _nop_()
               
unsigned char temp ,temp1,temp2,getdata ;//ADC转换值
  bit ReadADFlag;
sbit  CLK = P3^1; /*定义ADC控制端口*/
sbit ST = P3^2;
sbit OE = P3^0 ;
sbit EOC = P3^0 ;

void Init_Timer1(void)
{
TMOD |= 0x10;          //使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响                     

EA=1;            //总中断打开
ET1=1;           //定时器中断打开
TR1=1;           //定时器开关打开
}
/*------------------------------------------------
                 定时器中断子程序
------------------------------------------------*/
void Timer1_isr(void) interrupt 3
{
TH1=(65536-65506  )/256;                  //重新赋值 2ms
TL1=(65536-65506  )%256;
CLK=~CLK;
}


void main()
  {
         Init_Timer0();
         Init_Timer1( )  ;
     DelayMs(20);
          
          EA=0;
      temp=0;
      OE=0;

    while(1)
       {
            if(ReadADFlag)
        {
       ReadADFlag=0;
           ST=0;
           _nop_();
           ST=1;
           _nop_();
           ST=0;
       if(EOC==0)
        {
                       
                 _nop_();
               OE=1;
                 _nop_();
                          
              getdata=P3;
                 temp=getdata*5/255;
                            
                  TempData[0]=dofly_DuanMa[temp/100];   
               TempData[1]=dofly_DuanMa[(temp%100)/10];
               TempData[2]=dofly_DuanMa[(temp%100)%10];
                     OE=0;
              EA=1;
                       
           DelayMs(100);   
        }
                 }
                }                    
          
   }

你把if(EOC==0)改为while(EOC!=0);然后去掉if的那双括号试一下!

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top