打印

关于单按键控制伺服电机的问题

[复制链接]
1421|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
王挺|  楼主 | 2010-11-19 00:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
简要说明:P1.4连接到一个按键,低电平有效;P0.0,P0.1,P0.2,P0.3通过74HC14后再通过ULN2003A驱动伺服电机
问题:为什么程序一运行到P0 = 0X00后就跑不动了,为什么按键标志位作为判断标准却没有反映,请大虾指教下:
程序一:
#include <reg51.h>
#define uchar unsigned char
sbit key_input = P1^4;
/*************************************************/
void delay(uchar i)
{
uchar j;
for( i; i>0; i-- )
  for ( j=255; j>0; j-- )
;
}//延时子程序
/*************************************************/
char key_scan(void)
{
char key_flag = 0;
while(1)
{
  if (key_input == 0)
  {
   delay(100);
   if (key_input == 0)
   {
    key_flag = 1;
   }
   while(!key_input);
   delay(100);
   while(!key_input);
  }
}
return key_flag;
}
/*************************************************/
void main()
{
P0 = 0x00;
key_input = 1;
while(1)
{
  if( key_scan() )
  {
   P0 = 0xfc;
   delay(255);
   P0 = 0xf9;
   delay(255);
   P0 = 0xf3;
   delay(255);
   P0 = 0xf6;
   delay(255);
  }
  else
  {
   P0 = 0xfc;
   delay(255);
   P0 = 0xf6;
   delay(255);
   P0 = 0xf3;
   delay(255);
   P0 = 0xf9;
   delay(255);
  }
}
}
程序二:
#include <reg51.h>
#define uchar unsigned char
sbit key_input = P1^4;
/*************************************************/
void delay(uchar i)
{
uchar j;
for( i; i>0; i-- )
  for ( j=255; j>0; j-- )
;
}//延时子程序
/*************************************************/
void main()
{
P0 = 0x00;
key_input = 1;
while(1)
{
  if( key_input==1 )
  {
   P0 = 0xfc;
   delay(255);
   P0 = 0xf9;
   delay(255);
   P0 = 0xf3;
   delay(255);
   P0 = 0xf6;
   delay(255);
  }
  else
  {
   P0 = 0xfc;
   delay(255);
   P0 = 0xf6;
   delay(255);
   P0 = 0xf3;
   delay(255);
   P0 = 0xf9;
   delay(255);
  }
}
}

相关帖子

沙发
王挺|  楼主 | 2010-11-19 00:05 | 只看该作者
程序一运行的P0 = 0X00就跑不了了,
程序二运行正常

使用特权

评论回复
板凳
王挺|  楼主 | 2010-11-21 12:12 | 只看该作者
解答!

使用特权

评论回复
地板
老鱼探戈| | 2010-11-22 09:32 | 只看该作者
把程序一的按键改成这样试试
char key_scan(void)
{char key_flag ;   //把赋值去掉  
if (key_input == 0)
{   delay(100);   i
f (key_input == 0)   {
key_flag = 1;   }   
while(!key_input);   
delay(100);   
while(!key_input);  }
return key_flag;}

使用特权

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

本版积分规则

5

主题

21

帖子

0

粉丝