学习笔记|基于Delay实现的LED闪烁|u16是什么|a--和--a的区别|STC32G单片机视频开发教程(冲哥)|第七集:实现LED闪烁

文章目录

  • 摘要
  • 软件更新
  • 什么是闪烁
    • Tips:u16是什么?
  • 语法分析:
    • 验证代码
    • Tips:a--和--a的区别(--ms 的用法)
      • 测试代码:

摘要

1.基于Delay实现的LED闪烁
2.函数的使用
3,新建文件,使用模块化编程

软件更新

打开时会提示有版本更新,需要及时更新为最新版本。选择立即下载,选择保存路径,运行。
目前最新的是6.92a版本,选择可执行文件,发送到桌面快捷方式。
学习笔记|基于Delay实现的LED闪烁|u16是什么|a--和--a的区别|STC32G单片机视频开发教程(冲哥)|第七集:实现LED闪烁_第1张图片
新版软件,资料下载里下载最新版手册(8-15):
学习笔记|基于Delay实现的LED闪烁|u16是什么|a--和--a的区别|STC32G单片机视频开发教程(冲哥)|第七集:实现LED闪烁_第2张图片

学习笔记|基于Delay实现的LED闪烁|u16是什么|a--和--a的区别|STC32G单片机视频开发教程(冲哥)|第七集:实现LED闪烁_第3张图片

什么是闪烁

根据百度百科释义。
闪烁是一个汉语词语,拼音:shǎn shuò。释义:指光亮晃动不定、忽明忽暗;(说话)稍微露出一点想法,但不肯说明确;物体忽隐忽现,变动不定;显露,现出。出自南朝·梁·王僧孺《中寺碑》:“日流闪烁,风度清锵。”
1.基于Delay实现的LED闪烁
学习笔记|基于Delay实现的LED闪烁|u16是什么|a--和--a的区别|STC32G单片机视频开发教程(冲哥)|第七集:实现LED闪烁_第4张图片

闹钟中间有两个点,两个点是不断的闪动,0.5秒点亮0.5秒熄灭0.5秒点亮0.5秒熄灭.
这一亮一灭的过程,利用Delay函数实现LEB的闪烁的过程。
1秒=1000毫秒=1000 000微秒,0.5s=500毫秒=500 000微秒

复制示例工程,改名为LED闪烁,添加以下语句:

#define MAIN_Fosc 24000000UL 定义IRC系统时钟24M,方便下载时选择,定义的名称写在前面。

定义IRC系统时钟,方便下载时选择,方便查看和修改。ISP中IRC频率和系统时钟的IRC频率应该保持一致,防止程序出现错误。
学习笔记|基于Delay实现的LED闪烁|u16是什么|a--和--a的区别|STC32G单片机视频开发教程(冲哥)|第七集:实现LED闪烁_第5张图片
学习笔记|基于Delay实现的LED闪烁|u16是什么|a--和--a的区别|STC32G单片机视频开发教程(冲哥)|第七集:实现LED闪烁_第6张图片

void delay_ms(u16 ms)
{
    u16 i;
    do{
        i = MAIN_Fosc / 6000;
        while(--i);
    }while(--ms);
}

Tips:u16是什么?

选中u16,右键选中:Go To Definition Of "u16’,转至u16的定义头文件stc.h:
学习笔记|基于Delay实现的LED闪烁|u16是什么|a--和--a的区别|STC32G单片机视频开发教程(冲哥)|第七集:实现LED闪烁_第7张图片
typedef unsigned int u16; //定义的名称写在后面,开头无“#”号,末位加“;”号。
我们的编译器(也就是这个KEIL C251)会把我们写的"u16"替换成“ unsigned int”。
取值范围是:u16 取值0-65535。
之后采用do…while循环:

 do{
          i = MAIN_Fosc / 6000;
          while(--i);
     }while(--ms);
//主while循环中加入延时代码,实现闪烁
		 P22 = 0; //设置低电平	(屠龙刀三板载led)
		 delay_ms(500);
		 P22 = 1; //设置低电平	(屠龙刀三板载led)
		 delay_ms(500);

如果需要两个等一起闪,修改代码:

		 P22 = 0; //设置低电平	(屠龙刀三板载led)
		 P24 = 0;
		 delay_ms(500);
		 P22 = 1; //设置低电平	(屠龙刀三板载led)
		 P24 = 1;
		 delay_ms(500);

delay很方便,但需要等待踏步结束后,才能接着往下走。

语法分析:

1.while
执行流程图:
学习笔记|基于Delay实现的LED闪烁|u16是什么|a--和--a的区别|STC32G单片机视频开发教程(冲哥)|第七集:实现LED闪烁_第8张图片

常用死循环while(1).
2.do
{

}while();

验证代码

do
			{
				printf("a的值: %d\r\n",a);
				a = a + 1;
			}while( a <20 );

执行结果:
学习笔记|基于Delay实现的LED闪烁|u16是什么|a--和--a的区别|STC32G单片机视频开发教程(冲哥)|第七集:实现LED闪烁_第9张图片
改成while循环:

			while( a <20 )
			{
				printf("a的值: %d\r\n",a);
				a++;
			}

执行结果:
学习笔记|基于Delay实现的LED闪烁|u16是什么|a--和--a的区别|STC32G单片机视频开发教程(冲哥)|第七集:实现LED闪烁_第10张图片
本例中作用相同。

Tips:a–和–a的区别(–ms 的用法)

测试代码:

			a =10;
			printf("a的值: %d\r\n",a);
			printf("a的值: %d\r\n",--a);  //先运算再输出
			printf("a的值: %d\r\n",a);

			a =10;
			printf("a的值: %d\r\n",a);
			printf("a的值: %d\r\n",a--); //先输出再运算
			printf("a的值: %d\r\n",a);

执行结果:
学习笔记|基于Delay实现的LED闪烁|u16是什么|a--和--a的区别|STC32G单片机视频开发教程(冲哥)|第七集:实现LED闪烁_第11张图片
4.#define的用法
#define 名称 需要定义的内容 编译器会自动替换

你可能感兴趣的:(STC32,学习,笔记,单片机)