这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 仅仅是调换 两个语句的顺序就出错了 求解析!!!!!!!!!

共5条 1/1 1 跳转至

仅仅是调换 两个语句的顺序就出错了 求解析!!!!!!!!!

菜鸟
2014-06-20 14:52:35     打赏

程序如下:仅仅是调换下面这两句的 就会出错了!不知道什么原因!

int i =300;

Timer0_init();


换为:

Timer0_init();

int i =300;

就会出错!

总体程序:

#include <reg52.h>
#include <intrins.h>


#define uchar unsigned char 
#define uint unsigned int 


#define N 3100

sbit CLK=P2^0;
sbit EN=P2^2 ;
sbit KEY_en=P2^3;
sbit LED_en=P2^6;

void Timer0_init(void)
{
TMOD=0x01;
EA=1 ;
ET0=1;
TR0=1;
TH0=(65536-N)/256;
TL0=(655636-N)%256;
}


void Timer0(void)  interrupt 1
{
TH0=(65536-N)/256;
TL0=(655636-N)%256;
CLK=~CLK;
}


void main(void)
{
int i =300;
Timer0_init();
EN = 0;
LED_en=1;
while(1)
{
if(KEY_en==0)
  {
while(i--);
if(KEY_en==0)
{
EN=!EN;
  LED_en=!LED_en;
}
}
}
}


院士
2014-06-21 06:52:25     打赏
2楼
这个是编译器的某种限制。 变量声明必须放在前面,于是调换过来后,编译器就报错了。 估计楼主使用的是keil,使用iar软件就不会有这样的问题。

高工
2014-06-21 08:19:51     打赏
3楼

楼上正解,我以前在两个编译器之间切换的时候就遇到过这个问题


高工
2014-06-23 00:34:29     打赏
4楼
这个和编译器有关。变量的定义需要再函数的开头。用KEIL是这样

高工
2014-06-23 11:42:15     打赏
5楼
不能怪编译器,C语言是不支持这种写法的。C++才行。

共5条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]