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

共14条 1/2 1 2 跳转至

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

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

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

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-20 16:04:00     打赏
2楼
这个可能是编译器的问题,要所有的定义变量在最前端,

高工
2014-06-20 17:10:17     打赏
3楼

一般情况下

要先定义,再调用


高工
2014-06-20 21:05:39     打赏
4楼
先定义,后调用,应该这样

int i =300;

Timer0_init();


菜鸟
2014-06-20 21:11:17     打赏
5楼
应该就是编译环境的问题吧!在C语言和51单片机原理里面也没见提过类似的问题!谢谢了

菜鸟
2014-06-20 21:14:25     打赏
6楼
是调用在定义后面的!中断初始化里面没有 用到 i 这个变量  是后面的延时用到的

菜鸟
2014-06-20 21:16:50     打赏
7楼
变量 i  没有在Timer0_init()  调用哦  应该和1楼说的一样  是编译器的问题!

菜鸟
2014-06-20 21:16:54     打赏
8楼
变量 i  没有在Timer0_init()  调用哦  应该和1楼说的一样  是编译器的问题!

高工
2014-06-20 21:25:16     打赏
9楼
编译器的什么问题?

菜鸟
2014-06-20 21:32:02     打赏
10楼
编译器默认所有变量定义在main函数里的最前端。而不是只要在变量引用前定义就可以了。

共14条 1/2 1 2 跳转至

回复

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