51单片机小程序C语言编译不通过,找不到原因
总是提示主程序中的J变量有问题,我找不到原因,编译不成功#include<STC12C2052AD.H>//采用P1直接驱动显示数字,不使用位定义P1各个接口,而是向P1...
总是提示主程序中的J变量有问题,我找不到原因,编译不成功
#include <STC12C2052AD.H>
//采用P1直接驱动显示数字,不使用位定义P1各个接口,而是向P1输入16进制数字来显示数字。
sbit h1 =P3 ^ 0; //设置LED点阵屏连接的I/O口
sbit h2 =P3 ^ 1; //设置LED点阵屏连接的I/O口
sbit h3 =P3 ^ 2; //设置LED点阵屏连接的I/O口
sbit h4 =P3 ^ 3; //设置LED点阵屏连接的I/O口
sbit key=P3 ^ 4; //设置按键
void init(void) //设置P3 I/O口为强推挽电阻,用意是:普通电流无法驱动数码管,因为电量不足,所以采用强推挽电阻设置,使用高电量驱动
{
P1M0 = 0x00;
P1M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0xff;//0xff
}
void m(int a)
{
int i,j;
for(i=a;i>0;i++);
// for(j=1;j>=0;j--);
}
char code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff}; //这是数码管段位十个数字的16进制码
void main()
{
init();
int i;
int j=0;
while(1){
if (key==0)
{
P1=table[j];
j=j+1;
if (j==10)
{
j=0;
}
}
}
} 展开
#include <STC12C2052AD.H>
//采用P1直接驱动显示数字,不使用位定义P1各个接口,而是向P1输入16进制数字来显示数字。
sbit h1 =P3 ^ 0; //设置LED点阵屏连接的I/O口
sbit h2 =P3 ^ 1; //设置LED点阵屏连接的I/O口
sbit h3 =P3 ^ 2; //设置LED点阵屏连接的I/O口
sbit h4 =P3 ^ 3; //设置LED点阵屏连接的I/O口
sbit key=P3 ^ 4; //设置按键
void init(void) //设置P3 I/O口为强推挽电阻,用意是:普通电流无法驱动数码管,因为电量不足,所以采用强推挽电阻设置,使用高电量驱动
{
P1M0 = 0x00;
P1M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0xff;//0xff
}
void m(int a)
{
int i,j;
for(i=a;i>0;i++);
// for(j=1;j>=0;j--);
}
char code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff}; //这是数码管段位十个数字的16进制码
void main()
{
init();
int i;
int j=0;
while(1){
if (key==0)
{
P1=table[j];
j=j+1;
if (j==10)
{
j=0;
}
}
}
} 展开
6个回答
展开全部
code是一个定义的前缀,也就是告诉你现在定义的数据是放在程序存储区。
ckcon我在c8051f系列单片机里面见过,是定时器的时钟源的配置寄存器
至于你的第三个问题,我还是菜鸟,没有做过
ckcon我在c8051f系列单片机里面见过,是定时器的时钟源的配置寄存器
至于你的第三个问题,我还是菜鸟,没有做过
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
刚才利用VC6.0调试了一下 你主程序但没有 P1 和table变量 ,编译通过可能问题出现在 table这个数组上吧。自己仔细看看哪里的声明
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
void main()
{
int i;
int j = 0;//先定义变量
init(); //再调用函数
while(1){
if (key==0) {
P1=table[j];
j=j+1;
if (j==10) {
j=0;
}
}
}
}
{
int i;
int j = 0;//先定义变量
init(); //再调用函数
while(1){
if (key==0) {
P1=table[j];
j=j+1;
if (j==10) {
j=0;
}
}
}
}
追问
请问这是为什么?
我调用的函数与主函数之间没有数值传递啊,为什么我换个位置就好了?而且确实好了
追答
随时、随地的定义变量,这是C++的做法。
C,变量必须在最前面定义,之后,才能用。
只有高版本的 KEIL ,才支持 C++。
一般,都不行。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
void m(int a)
{
int i,j;
for(i=a;i>0;i++);
// for(j=1;j>=0;j--);
}
好像错了。。int i=0;
int j=0;
{
int i,j;
for(i=a;i>0;i++);
// for(j=1;j>=0;j--);
}
好像错了。。int i=0;
int j=0;
追问
这里是做调试用的,我在主函数里面没有调用,把这个函数删除掉也同样编译不成功
追答
那就给main函数的int i = 0;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
编译提示的错误是什么?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询