怎么能让这段程序执行一次后不再循环呢

2020-01-27 11:50发布

bit K1=P1^0;
sbit K2=P1^1;
//sbit K3=P1^2;
//sbit K4=P1^5;
//sbit K5=P1^6;

sbit OUT1=P3^4;
sbit OUT2=P3^3;
sbit OUT3=P3^1;
sbit OUT4=P3^0;
unsigned char n,b,a,i;

void main()
{
    TMOD=0X01;
    TH0=(65535-50000)/256;
    TL0=(65535-50000)%256;
    EA=1;
    ET0=1;
    TR0=1;
    while(K1==0);
        {
        n=1;
        n++;
        }
        }
void Timer0(void) interrupt 1 using 1 //定时器0中断处理
{
    TH0=(65535-50000)/256;
    TL0=(65535-50000)%256;
    n++;
        if(n>=20)
        {
        OUT1=0;OUT3=0;OUT2=1;
        }       
        if(n>=100)
        {
        OUT1=1;
        }
        if(n>=150)
        {
        OUT2=0;
        }       
        if(n>=200)
        {
        OUT2=1;OUT3=1;
        }

                                  //OUT3  总电源
        }
K1为外接启动信号,还有打算用K2作为备用中断信号接口,K2==0的时候也可以让out3=0,输出是低电平触发,
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
22条回答
wo55577276
1楼-- · 2020-01-28 09:10
使用标志位,执行一遍后将标志位清零或置一,然后通过判断标志位来控制while里面的是否执行
尝试过,但是可能语法还是不过关话说从开始编程到现在才3天的时间希望高手指导一下比如我用flag作为标志位,n=220的时候K1=1这样么 我的K1端口是始终处于低电平接通状态的,
wo55577276
2楼-- · 2020-01-28 10:21
多余的分号已经去掉了
wo55577276
3楼-- · 2020-01-28 12:03
如果不用while条件语句该怎么写呢,程序没有循环会不会跑飞呢
ourdemo
4楼-- · 2020-01-28 17:23
 精彩回答 2  元偷偷看……
wo55577276
5楼-- · 2020-01-28 21:12
ourdemo 发表于 2013-6-22 19:05
#include
sbit K1=P1^0;
sbit K2=P1^1;

这样改完了还是会自动的循环中断里面的语句,我现在的目的是想K1低电平导通然后中断里面的程序运行一次以后就不再重复运行了,这段代码我试过了,还是不行,
wo55577276
6楼-- · 2020-01-29 01:51
怎么能够直接跳出while或者进入一个跟输出无关的死循环也行

一周热门 更多>