智能车制作
标题:
碰到一个很好玩的问题、、高手进来看看咯
[打印本页]
作者:
a959845298
时间:
2011-9-30 21:51
标题:
碰到一个很好玩的问题、、高手进来看看咯
我只把代码的位置交换了一下 却出现了不同的编译结果 请看下面
unsigned char x=0;
flag=0;
unsigned char i,j,temp,tab[]={0xfe,0xfd, 0xfb,0xf7};
报告错误
然后下面就可以通过
unsigned char x=0;
unsigned char i,j,temp,tab[]={0xfe,0xfd, 0xfb,0xf7};
flag=0;
作者:
a959845298
时间:
2011-9-30 21:53
我的原程序中断查询键盘
#include <hidef.h> /* common defines and macros */
#include "derivative.h" /* derivative-specific definitions */
unsigned char a[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F ,0x77,0x7C,0x39,0x5E,0x79,0x71,0x76};
unsigned char flag;
void delay(unsigned char n)
{
unsigned char j;
for(j=1000;j>0;j--)
for(n;n>0;n--);
}
void main(void)
{
TIOS_IOS0=0;
TCTL4=0x01;
TIE_C0I=1;//开通道0,上升沿捕捉
DDRB=0xff;
DDRK=0x0f;
TSCR1_TEN=1;
EnableInterrupts;
for(;;) {
_FEED_COP(); /* feeds the dog */
} /* loop forever */
/* please make sure that you never leave main */
}
#pragma CODE_SEG __NEAR_SEG NON_BANKED
void interrupt 8 tim0()
{
DisableInterrupts;
TFLG1_C0F=1;
PORTK=0x0f;
delay(5);
if(PORTK&0xf0)
{
unsigned char x=0;
unsigned char i,j,temp,tab[]={0xfe,0xfd, 0xfb,0xf7};
flag=0;
for(i=0;i<4;i++)
{
x=0;
temp=0x01;
PORTK=tab[i];
delay(10);
for(j=0;j<4;j++)
{
if(PORTK&temp)
x=i*4+j;
flag=1;
break ;
}
temp=temp<<1;
if(flag=1)
{
break;
}
}
PORTB=a[x];
}
EnableInterrupts;
}
作者:
a959845298
时间:
2011-9-30 21:58
中间程序有点小错误、、、if(PORTK&temp)
x=i*4+j;
flag=1;
break ;
漏了一个括号
作者:
wangzm
时间:
2011-9-30 22:57
回复
1#
a959845298
在c中,要先定义变量,给所有变量定义完后,才能做其他的,比如给变量赋值,你的报错的程序中,第一条为定义变量,第二条为给变量赋值,第三条又为定义变量,所以是错的。而没报错的程序中,前两条为定义变量,第三条为给变量赋值,所以是正确的。
作者:
tongyonghua123
时间:
2011-10-6 22:53
楼上说的好
作者:
wscjun
时间:
2011-10-30 21:23
学习
作者:
starjiajia
时间:
2011-11-1 22:29
这与开发环境有关
作者:
chiusir
时间:
2011-11-8 11:47
函数内部一般需要先声明变量,然后才能运算。在函数外部全局部分,只能声明及初始化,不能做运算,一般都是这种情况,呵呵。
欢迎光临 智能车制作 (http://111.231.132.190/)
Powered by Discuz! X3.2