自编的一个小程序,无法运行,请教大神 20
/************************************************************************************...
/**************************************************************************************
* 自动装球机 *
实现现象:下载程序后LED1指示灯闪烁
箱子到t1后气缸2伸出1秒后缩回,接着气缸3伸出1秒后缩回
注意事项:无
***************************************************************************************/
#include <reg52.h> //此文件中定义了单片机的一些特殊功能寄存器
#include <intrins.h>
sbit led1=P2^0; //将单片机的P2.0端口定义为led
sbit k1=P3^0; //感应箱子
sbit k2=P3^1; //感应球,没球时程序暂停
sbit qigang2=P2^1; //感应有箱子时,检查t2有球则汽缸伸出1秒后还原 检查t2没球时报警,气缸不动作,有球后继续动作
sbit qigang3=P2^2; //当汽缸2还原汽缸伸出1秒后还原
sbit baojing=P2^4;
/*******************************************************************************
* 函 数 名 : delay
* 函数功能 : 延时函数,i=1时,大约延时10us
*******************************************************************************/
void delay5s(void) //5秒延时器 误差 0us
{
unsigned char a,b,c;
for(c=165;c>0;c--)
for(b=100;b>0;b--)
for(a=150;a>0;a--);
}
void delay1s(void) //1秒延时器误差 0us
{
unsigned char a,b,c;
for(c=167;c>0;c--)
for(b=171;b>0;b--)
for(a=16;a>0;a--);
_nop_();
}
void Int1Init()
{
//设置INT1
IT1=1;//跳变沿出发方式(下降沿)
EX1=1;//打开INT1的中断允许。
EA=1;//打开总中断
}
void main1()
{
Int1Init(); // 设置外部中断1
while(1);
}
/*******************************************************************************
* 函 数 名 : main
* 函数功能 : 主函数
* led每5秒闪烁一次
*
*******************************************************************************/
void Int1() interrupt 2 //外部中断1的中断函数
{
if(k2==0) //t2为0时程序暂停
{
baojing=~baojing; //报警灯亮
}
}
void keypros()
{
if(k1==0) //检测按键K1是否按下
{
delay1s(); //消除抖动 一般大约10ms
if(k1==0) //再次判断按键是否按下
{
qigang2=~qigang2; //气缸伸出
delay1s();
qigang2=~qigang2; //气缸缩回
delay1s();
qigang3=~qigang3; //气缸伸出
delay1s();
qigang3=~qigang3; //气缸缩回
delay1s();
}
while(!t1); //检测按键是否松开
}
}
void main()
{
while(1)
{
led1=0;
delay5s(); //大约延时5s
led1=1;
delay5s(); //大约延时5s
void keypros();
}
}
上面是我编的一个小程序,现在情况是,程序运行时,只有led1会闪烁。按键功没有做用,请教我怎样改正,谢谢!!
在while里只运行Keypros程序没有问题,当加入了LED5秒闪烁后,Key就没有运行了。求教怎样让LED闪烁和Key都能有功能??? 展开
* 自动装球机 *
实现现象:下载程序后LED1指示灯闪烁
箱子到t1后气缸2伸出1秒后缩回,接着气缸3伸出1秒后缩回
注意事项:无
***************************************************************************************/
#include <reg52.h> //此文件中定义了单片机的一些特殊功能寄存器
#include <intrins.h>
sbit led1=P2^0; //将单片机的P2.0端口定义为led
sbit k1=P3^0; //感应箱子
sbit k2=P3^1; //感应球,没球时程序暂停
sbit qigang2=P2^1; //感应有箱子时,检查t2有球则汽缸伸出1秒后还原 检查t2没球时报警,气缸不动作,有球后继续动作
sbit qigang3=P2^2; //当汽缸2还原汽缸伸出1秒后还原
sbit baojing=P2^4;
/*******************************************************************************
* 函 数 名 : delay
* 函数功能 : 延时函数,i=1时,大约延时10us
*******************************************************************************/
void delay5s(void) //5秒延时器 误差 0us
{
unsigned char a,b,c;
for(c=165;c>0;c--)
for(b=100;b>0;b--)
for(a=150;a>0;a--);
}
void delay1s(void) //1秒延时器误差 0us
{
unsigned char a,b,c;
for(c=167;c>0;c--)
for(b=171;b>0;b--)
for(a=16;a>0;a--);
_nop_();
}
void Int1Init()
{
//设置INT1
IT1=1;//跳变沿出发方式(下降沿)
EX1=1;//打开INT1的中断允许。
EA=1;//打开总中断
}
void main1()
{
Int1Init(); // 设置外部中断1
while(1);
}
/*******************************************************************************
* 函 数 名 : main
* 函数功能 : 主函数
* led每5秒闪烁一次
*
*******************************************************************************/
void Int1() interrupt 2 //外部中断1的中断函数
{
if(k2==0) //t2为0时程序暂停
{
baojing=~baojing; //报警灯亮
}
}
void keypros()
{
if(k1==0) //检测按键K1是否按下
{
delay1s(); //消除抖动 一般大约10ms
if(k1==0) //再次判断按键是否按下
{
qigang2=~qigang2; //气缸伸出
delay1s();
qigang2=~qigang2; //气缸缩回
delay1s();
qigang3=~qigang3; //气缸伸出
delay1s();
qigang3=~qigang3; //气缸缩回
delay1s();
}
while(!t1); //检测按键是否松开
}
}
void main()
{
while(1)
{
led1=0;
delay5s(); //大约延时5s
led1=1;
delay5s(); //大约延时5s
void keypros();
}
}
上面是我编的一个小程序,现在情况是,程序运行时,只有led1会闪烁。按键功没有做用,请教我怎样改正,谢谢!!
在while里只运行Keypros程序没有问题,当加入了LED5秒闪烁后,Key就没有运行了。求教怎样让LED闪烁和Key都能有功能??? 展开
1个回答
杭州一知智能科技有限公司
2022-03-17 广告
2022-03-17 广告
电话机器人主要就是用来模拟人工通话的一组程序,一般由,CRM系统,语义识别,转换文字,话术体系,这是软的部分,再加上底层软交换和通信模块一起,合并起来就是一套完整的电话机器人系统。电话机器人可以代替真人进行电话工作的,像是电话营销、售后回访...
点击进入详情页
本回答由杭州一知智能科技有限公司提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询