标题:
如何让下面的程序while只运行一次?
[打印本页]
作者:
gpm
时间:
2018-12-4 00:39
标题:
如何让下面的程序while只运行一次?
#include<stc89c51rc.h>
#define uchar unsigned char
#define uint unsigned int
#define light 3 //定义亮度
sbit SHCP=P3^6;//595的移位信号
sbit STCP=P3^5;//是595的锁存信号
sbit SDA=P3^4;//红数据
sbit IA=P1^0;//行控制线A
sbit IB=P1^1;//行控制线B
sbit IC=P1^2;//行控制线C
#define scan0 {IA=0;IB=0;IC=0;}
#define scan1 {IA=1;IB=0;IC=0;}
#define scan2 {IA=0;IB=1;IC=0;}
#define scan3 {IA=1;IB=1;IC=0;}
#define scan4 {IA=0;IB=0;IC=1;}
#define scan5 {IA=1;IB=0;IC=1;}
#define scan6 {IA=0;IB=1;IC=1;}
#define scan7 {IA=1;IB=1;IC=1;}
uchar line=0;
void rxd_data(); // 发送移动数据
uchar time_count=0; //计数
uchar reg=0;
/*****不影响其他端口的扫描*************************/
void scan(unsigned char Value)
{switch(Value)
{case 0: scan0;break;
case 1: scan1;break;
case 2: scan2;break;
case 3: scan3;break;
case 4: scan4;break;
case 5: scan5;break;
case 6: scan6;break;
case 7: scan7;break;
default:break;
}
}
/**************************************/
void Timer0Interrupt(void) interrupt 1 //定时器中断
{
TH0 = 0x04C;//定时50MS 这里的晶振是18.432M 测试无需理会晶振大小
TL0 = 0x000;
time_count++;
if(time_count>10)//发送一次数据
{
time_count=0;
line++; //下一行
if(line>8) //共8行
{
line=0; //重新移动
}
rxd_data();//发送数据
scan(line); //打开行扫描
STCP=1;//锁存
STCP=0;
}
}
/********************************************/
/*主函数*/
void main()
{ TMOD=0x01; //定时器0 16位定时定时器1方式2
TH0=0x4c; //50ms
TL0=0x00;
TR0=1; //开定时器计数
ET0=1; //开定时器中断
EA=1; //开中断
do
{
} while (1);
}
/***********************发送移动的数据****************************/
void rxd_data(void) //串行发送数据
{
uchar s;
uchar k;
for(s=0;s<4;s++)//发送4字节数据 一行4个字节
{
for(k=0;k<8;k++) //一个字节8位
{
SHCP=0; //上降沿移位595
SDA=1;
SHCP=1;
}
}
}
作者:
wojiaoguogai
时间:
2018-12-4 10:54
do
{
} while (0);
作者:
phang
时间:
2018-12-4 12:45
只运行一次,那可以不用while(),直接执行可以不?
作者:
cgc2003
时间:
2018-12-4 13:53
只运行一次,还是想用while(1),那么加多一个变量标识符。初始定义标识符 u8 charbuffer=0;
然后,while(1)
{
if(charbuffer<=1)
charbuffer++;
else
{
return; //或者break;
}
}
作者:
gpm
时间:
2018-12-4 16:38
phang 发表于 2018-12-4 12:45
只运行一次,那可以不用while(),直接执行可以不?
不行,试过
作者:
hzwenli6420
时间:
2018-12-5 11:16
while(1)
{
...
break;
}
作者:
1512166
时间:
2018-12-8 11:18
int i=1;while(i){...;i--;}
作者:
pophoney
时间:
2018-12-8 12:51
while 中加一个跳出语句即可
作者:
sdf535
时间:
2018-12-8 15:46
中间加break即可
作者:
qwertabcd
时间:
2018-12-8 17:29
break可以跳出来的
作者:
weichen1
时间:
2018-12-8 18:06
hzwenli6420 发表于 2018-12-5 11:16
while(1)
{
...
do while
作者:
day9520
时间:
2018-12-8 18:08
while(1)
{
...
break;
},break跳出循环
作者:
15377187683
时间:
2018-12-8 19:29
使用break跳出就好了
作者:
暖咖啡
时间:
2018-12-8 23:26
直接在whlie循环中间加一个break跳出来就行了
作者:
菠萝是只萌妹
时间:
2018-12-9 13:33
跳出一次就可以了
作者:
Wang-tg
时间:
2018-12-10 09:38
int Counter = 0;
int var = 1;//想要while运行几次改成几
while(1)
{
...//你的内容
Counter++;
if(Counter == var) //当Counter = var跳出while(1)
break;
}
简单明了,希望能帮到你
作者:
dreki
时间:
2018-12-10 10:12
使用break
作者:
zhangchao1993
时间:
2018-12-10 17:36
结束循环break不就行了
作者:
sdrfwerr
时间:
2018-12-10 23:11
在while前面加一个判断条件就行了
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1