找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4266|回复: 3
收起左侧

怎么让我按下启动程序只运行一次?51单片机程序请教

[复制链接]
ID:304151 发表于 2018-12-11 14:36 | 显示全部楼层 |阅读模式
怎么让我按下启动程序只运行一次  我试过去掉while(1)他就不执行之后的程序了
各位大佬出出主意谢谢了




#include <reg51.h>
#define        uchar unsigned char
#define        uint unsigned int


sbit LED=P1^0;
sbit LED1=P1^1;
sbit LED2=P1^2;
sbit LED3=P1^3;
sbit LED4=P1^4;
sbit LED5=P1^5;
sbit LED6=P1^6;
sbit LED7=P1^7;
sbit LED20=P2^0;
sbit LED21=P2^1;
sbit LED22=P2^2;
sbit LED23=P2^3;
sbit P3_4=P3^4;

uint time;
void initT0( )
{
TMOD = 0x01;                    //定时器0,工作方式1
TH0 = (65536-50000)/256;
TL0 = (65536-50000)%256;        //50ms中断一次   中断20次,1s  改数值等于改秒数  20=1s
EA = 1;
ET0 = 1;
TR0 = 1;
}

void T0int( ) interrupt 1
{
TH0 = (65536-65536)/256;
TL0 = (65536-65536)%256;
time++;
}


void main(void)
{
initT0();

if(P3_4==0)      //启动
{

while(1)         //循环程序
{
if(time==1)      //如果中断为1
{
LED=0;           //机械手得电
}
if(time==40)     //启动后2S
{
  LED1=0;        //导轨正
}
if(time==140)    //启动后7S(上一部后5S)
{
LED=1;           //机械手放
LED1=1;          //导轨正失电
LED2=0;          //导轨反
LED3=0;          //推杆正
}
if(time==240)    //启动后12S(上一部后5S)
{
LED2=1;          //导轨反失电
}
if(time==340)    //启动后17S(上一部后5S)
{
LED3=1;          //推杆正失电
LED4=0;          //右侧电机正
LED5=0;          //左侧电机正
}
if(time==360)    //启动后18S(上一部后1S,电机停1S)
{
LED4=1;          //右侧电机正失电
LED5=1;          //左侧电机正失电
}
if(time==380)    //启动后19S(上一部后1S)
{
LED6=0;          //右侧电机反
LED7=0;          //左侧电机反
}
if(time==400)    //启动后20S(上一部后1S)
{
LED6=1;          //右侧电机失电
LED7=1;          //左侧电机失电
LED20=0;         //推杆反
}
if(time==600)    //启动后30S(上一部后10S)
{
LED20=1;         //推杆反失电
LED21=0;         //下侧电机正
}
if(time==620)    //启动后31S(上一部后1S)
{
LED21=1;         //下侧电机正失电
}
if(time==640)    //启动后32S(上一部后1S)
{
LED22=0;         //下侧电机反
}
if(time==660)    //启动后33S(上一部后1S)
{
LED22=1;         //下侧电机反失电
time=0;          //中断清零
}

  }


}
}




回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表