程序有点怪

[复制链接]
1742|5
 楼主| hufa123 发表于 2010-3-3 17:42 | 显示全部楼层 |阅读模式
FOR, ui, TI
void delay(uint n)
{
int i;
for (i=0;i<n;i++);
}
/*按键采用中断方式,4个按键分别接在P1.5-6-7-8*/
void key2()
{
uchar key_value=0,c=0;
if(int0=1) //无心错用等号它还能仿真成功,改为双等号还没办法仿真成功,老天为什么?
{

int0=0;
c=~P1;
    key_value=(c&0xf0);
delay(1000);
   
c=~P1;
   if((key_value&c)!=0)
{
   do
  {
   
c=~P1;
  }  
         
  
  while((key_value&c)!=0);
   delay(1000);
    switch(key_value)
     {
      case 0x10:shuxian[2]=0x1;break;
      case 0x20:shuxian[2]=0x2;break;
      case 0x40:shuxian[2]=0x3;break;
      case 0x80:shuxian[2]=0x4;break;
     // default
     }
      

}
}  
}
void main()
{
init();

for(;;)
{
  key2();
}
}
void key1() interrupt 0
{

    int0=1;
}
不知道是硬件还是软件问题 还是本人有问题?
用KEIL仿真的时候能过 各个变量也正常变化 就不怎么回事,前辈指点下
杨工 发表于 2010-3-3 19:14 | 显示全部楼层
if(int0=1) //先赋值int0=1,再判断,结果为真。即不论int0是否为1,if判断都为真。
杨工 发表于 2010-3-3 19:22 | 显示全部楼层
请问为什么按键能触发外部中断INT0呢?
 楼主| hufa123 发表于 2010-3-3 20:30 | 显示全部楼层
与门电路 当有键按下时就触发进入中断 再进行扫描键盘 那能提高单片机的效率
杨工 发表于 2010-3-4 09:43 | 显示全部楼层
if(int0=1) //无心错用等号它还能仿真成功,改为双等号还没办法仿真成功,老天为什么?
从这句话看,似乎没有触发外部中断INT0
liao_fangxing 发表于 2010-3-4 16:14 | 显示全部楼层
检查下中断初始化 ………………个人意见
您需要登录后才可以回帖 登录 | 注册

本版积分规则

186

主题

393

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部