pic单片机如何可以让while语句同时运行

pic单片机如何可以让while语句同时运行,第1张

第1种的作用是:一直循环while大括号内的语句,比如:

while(1)

{

a=b+c;

display();

}

程序就一直在循环执行a=b+c;display(),不会跳出while语句,执行下面的语句。除非while(1)括号里面不再为真时,才会跳出循环。(ps:1为真,0为假)

第2种的作用是:程序执行到此处为止,不会再执行while(1)下面的语句。比如:

void main()

{

a=b+c;

display();

while(1);

i++;

}

程序执行a=b+c;display();while(1)就会一直停留在while(1)这个语句这里,不会往下执行i++了,除非while(1)括号里面不再为真时,才会跳出循环。(ps:1为真,0为假)

(二) while(i–)语句的用法:

常常用在delay()延迟函数中。例如:

void delay(unsigned int i)

{

while(i–);

}

当主函数执行到延迟函数delay(参数)时,程序就会调用void delay(unsigned int i),从而执行延迟函数里面的语句,在这里则执行while(i–)语句,减到i=0时才会跳出while语句,从而跳出延迟函数,再去执行主函数中延迟函数的下一条语句。

(三) while(!key)语句的用法:

常用在独立按键试验中,用来检测按键是否松开。比如:

void keypro()

{

if(key==0)

{

led=~led;

while(!key);

}

}

当按键key按下时,key=0,执行led=~led;再执行while(!key)语句,因为key=0,所以!key=1,程序执行停留在while(!key)处,直到松开按键时,key=1,!key=0,才跳出while(!key)语句,去执行下一条程序。

总结:无论是三种形式中的哪一种,当while(表达式)语句中的表达式不为0时,程序就一直停留在while语句这里。当表达式为0时就不执行while语句。

其中(i–)里面是两个减号,只是电脑显示不出来

在你的C文件里引用EEPROM函数的头文件,eeprom_routinesh

然后在程序中使用

voideeprom_write(unsignedcharaddr,unsignedcharvalue);

unsignedchareeprom_read(unsignedcharaddr);

这两个函数了。

这两个函数一个读一个写。比如你想写0x10到地址为0x55的EEPROM,

就写:eeprom_write(0x55,0x10);

同理,如果想读取0x55地址处的值,

就写:ee_value=eeprom_read(0x55);

如果编译时编译器提示找不到eeprom_routinesh,可以在

X:\ProgramFiles\HI-TECHSoftware\PICC\981\include 目录下找,然后复制到自己项目文件夹下。

对了,我用的是MPLabIDE,编译器使用的是PICC。

#include<pich>

void delay(int x)

{

int a,b;

for(a=x;a>0;a--)

for(b=110;b>0;b--);

}

void main()

{

ANSEL=0;

CMCON0=0X07;

int a,b,c,d;

GPIO=0;

TRISIO0=1;

TRISIO1=1;

TRISIO2=0;

TRISIO3=0;

TRISIO4=0;

TRISIO5=1;

if(GPIO5==0)

{

//此处还没有加去抖动

while(1)

{

if((GPIO0==0)&&(GPIO1==0))

{

delay(5);

if((GPIO0==0)&&(GPIO1==0))

{

GPIO2=0;//点亮LED1

GPIO3=1;//点亮LED1

GPIO4=1;//点亮LED1

}

}

if((GPIO0==1)&&(GPIO1==0))

{

delay(5);

if((GPIO0==1)&&(GPIO1==0))

{

GPIO2=1;//点亮LED1

GPIO3=0;//点亮LED1

GPIO4=1;//点亮LED1

}

}

if((GPIO0==1)&&(GPIO1==1))

{

delay(5);

if((GPIO0==1)&&(GPIO1==1))

{ GPIO2=1;//点亮LED1

GPIO3=1;//点亮LED1

GPIO4=0;//点亮LED1

}

}

if((GPIO0==0)&&(GPIO1==1))

{

delay(5);

if((GPIO0==0)&&(GPIO1==1))

{

while(1)

{

for(a=1000;a>0;a--)

{

GPIO2=0;//点亮LED1

GPIO3=1;//点亮LED1

GPIO4=1;//点亮LED1

}

for(a=1000;a>0;a--)

{

GPIO2=1;//点亮LED1

GPIO3=1;//点亮LED1

GPIO4=1;//点亮LED1

}

}

}

}

}

}

if(GPIO5==1)

{

while(1)

{

for(d=3;d>0;d--)

{

for(c=5000;c>0;c--)

{

GPIO2=0;//点亮LED1

GPIO3=1;//点亮LED1

GPIO4=1;//点亮LED1

}

for(c=5000;c>0;c--)

{

GPIO2=1;//点亮LED1

GPIO3=1;//点亮LED1

GPIO4=1;//点亮LED1

}

}

delay(500);

for(d=3;d>0;d--)

{

for(c=20000;c>0;c--)

{

GPIO2=0;//点亮LED1

GPIO3=1;//点亮LED1

GPIO4=1;//点亮LED1

}

for(c=20000;c>0;c--)

{

GPIO2=1;//点亮LED1

GPIO3=1;//点亮LED1

GPIO4=1;//点亮LED1

}

}

delay(500);

}

}

}

以上就是关于pic单片机如何可以让while语句同时运行全部的内容,包括:pic单片机如何可以让while语句同时运行、pic单片机EEPROM怎么编写程序、帮我写个程序,用PIC12F683芯片等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9384187.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存