用户工具

站点工具


侧边栏

抱歉,您没有权限增加页面
3.单片机c语言:2.for循环延时闪烁灯

单片机C语言之for循环延时闪烁灯

这节我想补充下最基础的东西,变量和运算符,在程序执行过程中,其值不发生改变的量称为常量,其值可变的量称为变量。在程序中,常量是可以不经说明而直接引用的,而变量则必须先定义类型说明后使用。变量定义的一般形式为:类型说明符 变量名标识符;如:unsigned int num;基本数据类型的说明符,占用RAM大小和数值范围如下:

循环结构是程序中一种很重要的结构。其特点是,在给定条件成立时,反复执行某程序段,直到条件不成立为止。给定的条件称为循环条件,反复执行的程序段称为循环体。C语言提供了多种循环语句,可以组成各种不同形式的循环结构。1.用goto语句和if语句构成循环;2.用while语句;3.用do-while语句;4.用for语句;这节我们来看循环结构之For循环。

上节提到过,main函数中必须有个while(1)大循环,否则程序只会跑一遍便停止了,while语句的形式为:while(表达式){语句}, while语句的语义是:计算表达式的值,当值为真(非0)时, 执行循环体语句。可以看到while(1),1永远为1表达式一直成立,他的语句就会一直在里面循环。

for语句最简单的应用形式如下:for(循环变量赋初值;循环条件;循环变量运算) {语句}

循环变量赋初值总是一个赋值语句, 它用来给循环控制变量赋初值; 循环条件是一个关系表达式,它决定什么时候退出循环;循环变量运算,运算后的新值让循环条件判断是否继续成立,这三个部分之间用半角“;”分开。

例如:for(i=1; i< =100; i++){语句},先给i赋初值1,然后判断i是否小于等于100, 若是,则执行循环体语句一次,之后i++值增加1。再重新判断是否满足,循环体语句执行第二次, 直到条件为假,即i>100时,结束循环。

由于单片机每条指令的执行是需要时间的,下面我们来用for循环让单片机原地打转延时一会,让一个小灯闪烁起来。第一遍不需要看懂,照抄一遍,然后编译成功看到效果了再去看每句的意思,代码如下:

#include<stc12.h> //STC12系列头文件 复制到工程目录下

sbit LEDK = P1^4;// 定义一个IO口控制三极管基极
sbit LED1 = P0^0; //定义一个IO口驱动LED
void main(void)
{
  unsigned int i; //定义变量
  LEDK=0;  //置0使PNP型三极管导通LED负极接地
  P0=0x00;	//P0口电平初始化为0 关闭全部LED
  P0M1=0x00;
  P0M0=0xff; //P0口全部设置为推挽输出 见手册87页 IO口模式配置
  while(1)
  {
	LED1 = 1;//置高点亮LED
	for(i=0;i<60000;i++); //for一直跑6万次,延时一会
	LED1 = 0;//置低关闭LED
	for(i=0;i<60000;i++); //for一直跑6万次,延时一会

  }
}
以上代码完整工程在\STC51 Discovery\实验例程\基础实验\实验三

上面搞懂了,自己尝试写个流水灯吧,流程如下:先让第八个灯熄灭的同时点亮第一个延时一会,然后让第一个熄灭的同时点亮第二个延时一会,以此例推,直到第七个熄灭的同时点亮第八个延时一会。

告诉你个秘密,我有答案:完整工程在\STC51 Discovery\实验例程\基础实验\实验四

3.单片机c语言/2.for循环延时闪烁灯.txt · 最后更改: 2017/02/24 13:27 由 wawooo