单片机C语言 keilc 编写的问题

2019-03-24 19:44发布

#include<stdio.h>#include<reg51.h>//实例12:用自增运算控制P0口8位LED流水花样#include<reg51.h>   //包含单片机寄存器的头文件/******************************************************函数功能:延时一段时间******************************************************/void delay(void) {   unsigned int i;   for(i=0;i<20000;i++)    ;}/******************************************************函数功能?:主函数******************************************************/void main(void)  {         P2=0X12;   unsigned char i;        for(i=0;i<255;i++)  //注意i的值不能超过255    {  P0=i;    //将i的值送P0口  delay(); //调用延时函数}}
这个程序我都看得懂  但是就是编译不通过  提示为:NEW.C(20): error C141: syntax error near 'unsigned' 但是若是我把程序的P2=0X12;这个放到下面   就ok了  这是正确的:#include<stdio.h>#include<reg51.h>//实例12:用自增运算控制P0口8位LED流水花样#include<reg51.h>   //包含单片机寄存器的头文件/******************************************************函数功能:延时一段时间******************************************************/void delay(void) {   unsigned int i;   for(i=0;i<20000;i++)    ;}/******************************************************函数功能?:主函数******************************************************/void main(void)  {        unsigned char i;   P2=0X12;   for(i=0;i<255;i++)  //注意i的值不能超过255    {  P0=i;    //将i的值送P0口  delay(); //调用延时函数}} 问这是怎么回事  是keilc的BUG么 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
8条回答
j1a2s3o4n
2019-03-25 01:56
有空看看C语言的书,局部变量必须定义在函数体的最前面,是不能在函数体里随意位置定义的,所以你把P2=0X12;从前面移到后面之后,i的定义位置变为函数体的最前面,编译器才会通过。

一周热门 更多>