打印

程序有点怪

[复制链接]
1226|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 | 只看该作者
与门电路 当有键按下时就触发进入中断 再进行扫描键盘 那能提高单片机的效率

使用特权

评论回复
5
杨工| | 2010-3-4 09:43 | 只看该作者
if(int0=1) //无心错用等号它还能仿真成功,改为双等号还没办法仿真成功,老天为什么?
从这句话看,似乎没有触发外部中断INT0

使用特权

评论回复
6
liao_fangxing| | 2010-3-4 16:14 | 只看该作者
检查下中断初始化 ………………个人意见

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

186

主题

393

帖子

2

粉丝