求C语言大神帮忙解决下下面程序的问题

#include <reg52.H>
//********数码管位代码表(P2口)**********//
unsigned char code dispbit[]={0x01,0x02,0x04,0x08};
//********数码管段代码表(P0口,共阴且高位接dp,低位接a笔段)**********//
unsigned char code dispcode[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,
0x7F};
unsigned char disp[8];
unsigned char temp[8];
unsigned char dispcount;
unsigned char T0count;
unsigned char timecount;
void initial();
void delay();
void dataDisplay();
bit flag;
sbit key=P3^4;
unsigned long x,freq;

//*********初始化模块**********//
void initial(void){
P0=0x3F;
P2=0xff;
TMOD=0x15;
TH0=0;
TL0=0;
TH1=(65536-4000)/256;
TL1=(65536-4000)%256;
TR1=1;
TR0=1;
ET0=1;
ET1=1;
EA=1;
}

//*********显示模块**********//
void dataDisplay(){
unsigned char i;
for(i=0;i<4;i++){
temp[i]=0;
}
i=0;
while(x/10){
temp[i]=x%10;
x=x/10;
i++;
}
temp[i]=x;
for(i=0;i<4;i++){
dispbuf[i]=temp[i];
}
for(dispcount=0; dispcount <4; dispcount ++)
{ P0=dispcode[dispbuf[dispcount]];
P2=dispbit[dispcount];
Delay();
}
}
//******************************************************//
/**************************延时函数************************************/
void delay(unsigned char t){
unsigned char k,j;
for(k=0;k<t;k++)
for(j=0;j<125;j++);
}
//******************************************************//

/
/*********定时中断服务程序1**********//
void t1(void) interrupt 3 using 0{
TH1=(65536-4000)/256;
TL1=(65536-4000)%256;
timecount++;
freq=T0count*65536+TH0*256+TL0;
while(timecount==10)
{TR0=0;TR1=0;
}
}
//******************************************************//
//*********定时中断服务程序2**********//
void t0(void) interrupt 1 using 0{
T0count++;
}
//******************************************************//
//*********主函数**********//
void main(void)
while(1)
{
if(key==1)
{ timecount=0;
T0count =0;
initial();
}
else
{ x=freq;
x=x*20;
dataDisplay(); }
}
运行下显示111.C(49): error C202: 'dispbuf': undefined identifier
111.C(52): error C202: 'dispbuf': undefined identifier

程序我没细看,提示是变量未定义,你这样改吧:

#include <reg52.H>
//********数码管位代码表(P2口)**********//
unsigned char code dispbit[]={0x01,0x02,0x04,0x08};
//********数码管段代码表(P0口,共阴且高位接dp,低位接a笔段)**********//
unsigned char code dispcode[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,
0x7F};
unsigned char disp[8]; 将此句改为 unsigned char dispbuf[8];
unsigned char temp[8];
unsigned char dispcount;
unsigned char T0count;
unsigned char timecount;

不明白再问我哦,谢谢!追问

这个改了错误更多了,求大神仔细看看啊(⊙o⊙)

追答

我明白了,你再把主函数加{}就OK(如下改后主函数),满意请采纳,谢谢;
另外提示你一个警告 延时子函数 调用时括号内一定要加一个unsigned char类型的t
例如调用时你可以这样写Delay(100);,这样就不会有问题了!

改后主函数如下
//*********主函数**********//
void main(void)

{ //**************注意要加上他,你的没有****************//

while(1)
{
if(key==1)
{ timecount=0;
T0count =0;
initial();
}
else
{ x=freq;
x=x*20;
dataDisplay(); }
}

} //**************注意要加上他,你的没有****************//

温馨提示:内容为网友见解,仅供参考
第1个回答  2014-06-27
说明没有这个变量:dispbuf
第2个回答  2014-06-27
就是,你都没定义
第3个回答  2014-06-27
dispbuf你定义了?追问

就是不会定义才问的

C语言菜鸟,请教各位高手下面的程序哪里出了问题?
你的思路太乱了, 只能在你的程序上改,include<stdio.h> void main(){ long int a;int p,s;int b1,b2,b3,b4,b5;scanf("%ld",&a);if(a>=1000000){ p = (a-1000000)*0.01;a = 999999;} p=0;s=a\/100000;switch(s){ case 9:case 8:case 7:case 6:p += (a-600000)*0...

c语言高手帮忙下,看看下面这个程序哪里出错
首先。。。y=3x-1;和y=2x-1;这里,明显是错误的,c语言中的变量不能以数字开头的,3x,2x明显不是变量,应该是想做乘法运算吧,如果是乘法运算的话应该有“*”。其次,else是自动跟上一个没配对掉的if组合,这样的话if(x>=10)y=3x-1;printf("=%d",y);else的写法就不对了,应该在if后...

谁能帮我解决下面的C语言问题啊,最好能说明解析过程。
解析:道理同第1题,执行switch(a),满足条件进入switch(b),接着满足条件执行case 0后语句,break跳出switch(b),由于跳出后没有语句break,因此接着执行switch(a)。记住一点:break语句只能跳出一个switch;3、至于这题,估计是你输错了,如果题目真这样,就是题目错了。编译都不可能通过,在...

C语言请大佬解答下面这个程序是怎么运行的?输入-125
主函数中输入-125后打印出-号,然后将-125取绝对值,用125调用函数fun——k==2,用2去除125余1,所以r=125%2中r为1。由于!1为0,所以跳过while循环进入for下一次循环。k==3,用3去除125余2,所以r=125%3中r为2。由于!2为0,所以再跳过while循环进入for下一次循环。k==4,用4去除125余1...

求C语言大神帮忙处理一下程序啊 编写求子串函数substr(s,n1,n2...
int n1,n2 ;(1) 输入主串; scanf("%s", str );(2) 输出主串; printf("%s\\n", str );(3) 输入开始位置与子串长度; scanf("%d %d", &n1, &n2 );(4) 输出取出的子串; printf( "%s\\n", substr(str,n1,n2) ;(5) 退出系统;exit(0);char *subst...

求C语言高手解决,程序有一处错误始终找不出来。下面是程序代码。回答好...
错误原因主要有:1、C语言是大小写敏感的,注意一些函数和关键字的大小写,如:If和if的区别2、变量的名称错误3、调用的库函数没有头文件,如:inportb\/outportb等。下面的程序可以编译,但是连接时出现库函数没有说明的问题,请添加inportb\/outportb对应的头文件!include <stdio.h> include <conio.h>...

C语言菜鸟 求解 下面这个程序哪里错了 怎样改
该程序的功能应该是将一个大于2的偶数分解成两个素数之和,所以输入的必须是偶数。两点错误如yang_jnu所说。int isprime(int n);后面多余分号,两个等号之间多空格。再有,main函数中的for(i=3;i<n\/2;i++)应改为for(i=2;i<=n\/2;i++)。源程序如下:include"stdio.h"include"math.h"int...

请C语言编程高手帮忙帮我看看下面的题目
① 倒填 ② 蛇形填数 ③ 回转填数 这个你应该看的懂吧 你在表中从1数到25就知道怎么填的了 然后再看程序 应该很简单的啊 你得把程序循环得层次弄清楚 例如③ 回转填数 int i,j,k=1,m,mi,mj,a[NUM][NUM],ind[4]={NUM-1,NUM-1,0,1}; \/*i为行号,j为列号,k当前填的数...

C语言题目求解决 要程序
\/\/第一题#include <stdio.h>#define N 255void str_delete(char s[],char x){int i,j,len;i=0;while(s[i]!='\\0'){if(s[i] == x){for(j=i+1;s[j]!='\\0';j++)s[j-1]=s[j];s[j-1]='\\0';i=0;}elsei++;}}int main(){char str[N],ch;printf("输入字符...

C语言问题,求大神解释以下程序ret,getchar有什么作用,最好能够详细点...
);这句,如果成功读取了a和b,那么scanf会返回2表示读入了两个数据。下面的循环就是表示如果读取的不是两个数,就重新提示用户输入a和b。至于getchar()是读入一个字符,getchar()可以读入包括换行符在内的ASCII码字符,用户在输入完a和b后一般会按一次回车,这个getchar就是用来读取这个回车符的。

相似回答