【keil】函数问题

/********************************************************************************;二进制... /********************************************************************************; 二进制加法试验 *; p1口八个灯作二进制加法。理解二进值的计算 *; 硬件连接:p1口8路指示灯 *; *;* 描述: *; p1口八个灯作二进制加法。理解二进值的计算 *;* 连接方法: JP11(P1)和J12(LED灯) 用8PIN排线连接起来 **********************************************************************************/#include <reg52.h>#include <intrins.h>sbit LED0 = P0^0 ;sbit LED1 = P0^1 ;sbit LED2 = P0^2 ;void delay1s(); //声明延时函数main(){
P0 = 0x2; unsigned char Num = 0xff; //提示有错误; 把这句话放在P0前就可以编译 为什么啊 while (1) { P1 = Num; delay1s(); //延时函数 Num--; } }/*******延时函数*************/void delay1s(void) //误差 0us{ unsigned char a,b,c; for(c=167;c>0;c--) for(b=171;b>0;b--) for(a=16;a>0;a--); _nop_(); //if Keil,require use intrins.h}
unsigned char Num = 0xff; //这句话放在那里的问题
展开
 我来答
ghost4063
2014-01-08 · TA获得超过6521个赞
知道大有可为答主
回答量:2940
采纳率:75%
帮助的人:2759万
展开全部
KEIL使用的是较老的C语言版本(具体哪个版本我忘了),这个版本中,必须把变量的定义放在实际的逻辑执行语句之前,否则就会报错。
你的错都是不了解C语言版本规范引起的,不用纠结。你程序如果是在VC中就不会报错了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友7bbac528f8
2014-01-08 · TA获得超过598个赞
知道小有建树答主
回答量:1706
采纳率:50%
帮助的人:946万
展开全部
unsigned char Num = 0xff放在main的上面就行
追问
恩,这也是对的,按照你的方法是全局变量,但是为什么P0=0x2;和unsigned char Num = 0xff 不能互换
追答
哦,那可能是你的编译器有缺陷的缘故,变量的申明需要放在最前面的。这也是习惯啊
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式