哪位大侠帮忙看看问题在哪 为什么调试不出结果呢

2019-07-16 05:13发布

#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit diola=P2^5;
sbit dula=P2^6;     //申明段选锁存端
sbit wela=P2^7;     //申明位选锁存端
sbit adwr=P3^6;     //申明A/D的WR端口
sbit adrd=P3^7;     //申明A/D的RD端口
uchar code table[]={0x3f,0x06,0x5b,0x4f,
      0x66,0x6d,0x7d,0x07,
      0x7f,0x6f,0x77,0x7c,
      0x39,0x5e,0x79,0x71,};
void delayms(uint xms)
{
  uint i,j;
  for (i=xms;i>0;i--)
   for(j=110;j>0;j--) ;   //延时函数
   
}
void display(uchar bai,uchar shi,uchar ge)    //显示函数
{
  dula=1;
  P0=table[bai];
  dula=0;
  P0=0xff;
  wela=1;         //U2锁存器的最高位连接着ADC0804转换器的CS片选端,所以始终置低电平,使其有效
  wela=0x7e;
  wela=0;
  delayms(5);

  dula=1;
  P0=table[shi];
  dula=0;
  P0=0xff;
  wela=1;
  wela=0x7d;
  wela=0;
  delayms(5);

  dula=1;
  P0=table[ge];
  dula=0;
  P0=0xff;
  wela=1;
  wela=0x7b;
  wela=0;
  delayms(5);


}
void main()
{
  uchar a,A1,A2,A3,adval;
  P0=0;
  diola=0;

  wela=1;
  P0=0x7f;  //U2锁存器最高位置低电平,即ADC0804的CS片选端置低电平,选通。
  wela=0;
   diola=0;
  while(1)
  {
   wela=1;
   P0=0x7f;
   /*adwr=1;
   _nop_();*/  //   _nop_() 延时一个机器周期
   adwr=0;  //启动A/D转换器
   _nop_();
   adwr=1;
   delayms(10) ;
   wela=0;
   for(a=20;a>0;a--)
   {
    display(A1,A2,A3);
   }   
   P1=0xff;
   adrd=1;
   _nop_(); //延时一个机器周期
   adrd=0;  //打开ADC0804读使能
   _nop_(); //延时一个机器周期
   adval=P1;  //
   adrd=1;
   A1=adval/100;
   A2=A1%100/10;
   A3=adval%10;
  
  }



}

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。