微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > keilC程序编译没有问题,可是调试时所有都无法赋值

keilC程序编译没有问题,可是调试时所有都无法赋值

时间:10-02 整理:3721RD 点击:
#include <AT89X52.H>
#include <stdio.h>
#define uint unsigned int
#define uchar unsigned char
sbit LOAD=P1^6; //选择P1.7作为CS
sbit DI=P1^4; //选择P1.5作为数据输入
sbit DCLK=P2^5;//选择P2.6作为时钟
sbit LOAD1=P1^7; //选择P1.7作为CS1
sbit DI1=P1^5; //选择P1.5作为数据输入1
sbit DCLK1=P2^6;//选择P2.6作为时钟1
uchar green[3][8];
uchar red[3][8];
uchar dis[20][4];
int val[20]={-888,-300,-250,-200,-150,-100,-75,-50,-30,-15,0,15,30,50,75,100,150,200,250,300};
int n;

uchar judge(int x) //判断正负
{
uchar z;
if (x<0)
{z=16;}
else
{z=18;}
return(z);
}
uint abs(int x)//绝对值
{
return(x<0?-x:x);
}
                                
void delay(uint time)
{
int i;
for(i=0;i<time;i++);
}

int green_light(int n)//LED红灯判断
{
  int i;
  if((n>0)&(n<9))
  {
   for(i=0;i<n;i++)
   green[0][i]=1;
   }
   if((n>8)&(n<17))
  {
   for(i=0;i<8;i++)
   green[0][i]=1;
   for(i=8;i<n;i++)
   green[1][i-8]=1;
   }

   if((n>16)&(n<20))
  {
   for(i=0;i<8;i++)
   green[0][i]=1;
   for(i=8;i<17;i++)
   green[1][i-8]=1;
   for(i=16;i<n;i++)
   green[2][i-16]=1;
   }
}

void display_452(int *v)//452数显程序分位
{
uchar i;
uchar temp1,temp2,temp3;
uint alevel;
for(i=0;i<=20;i++)
{
dis[i][0]=judge(v[i]);
alevel=abs(v[i]);
temp1=alevel/100;     //分位显示
temp2=(alevel/10)%10;
temp3=alevel%10;
if (temp1>0)
  {dis[i][1]=temp1;
   dis[i][2]=temp2;
   dis[i][3]=temp3;}
else
   {dis[i][1]=16;
    if(temp2>0)
       {dis[i][2]=temp2;
        dis[i][3]=temp3;}
    else{dis[i][2]=16;
          dis[i][3]=temp3;}
        }
}
}
void main()
{
uchar i,j;
n=11;

display_452(val);
while(1)
{
green_light(n);
for(i=0;i<3;i++)
  {
   for(j=0;j<8;j++)
   {
     red[i][j]=1-green[i][j];
   }
  }

}
}

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

网站地图

Top