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

摘要

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

软件更新

打开时会提示有版本更新,需要及时更新为最新版本。选择立即下载,选择保存路径,运行。
目前最新的是6.92a版本,选择可执行文件,发送到桌面快捷方式。
在这里插入图片描述
新版软件,资料下载里下载最新版手册(8-15):
在这里插入图片描述

在这里插入图片描述

什么是闪烁

根据百度百科释义
闪烁是一个汉语词语,拼音:shǎn shuò。释义:指光亮晃动不定、忽明忽暗;(说话)稍微露出一点想法,但不肯说明确;物体忽隐忽现,变动不定;显露,现出。出自南朝·梁·王僧孺《中寺碑》:“日流闪烁,风度清锵。”
1.基于Delay实现的LED闪烁
在这里插入图片描述

闹钟中间有两个点,两个点是不断的闪动,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频率应该保持一致,防止程序出现错误。
在这里插入图片描述
在这里插入图片描述

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:
在这里插入图片描述
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
执行流程图:
在这里插入图片描述

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

}while();

验证代码

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

执行结果:
在这里插入图片描述
改成while循环:

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

执行结果:
在这里插入图片描述
本例中作用相同。

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);

执行结果:
在这里插入图片描述
4.#define的用法
#define 名称 需要定义的内容 编译器会自动替换

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
STC32G是一款32位单片机,它是中国深圳市高科微电子有限公司(STC)生产的产品。STC公司是中国嵌入式芯片设计和制造领域的领先企业之一。 MODBUS是一种通信协议,广泛应用于工业自动化领域,用于在不同设备之间传输数据。它是一种简单可靠的协议,广泛用于监控、控制和数据采集等应用。 STC32G使用MODBUS协议进行数据通信,可以作为主设备或从设备与其他设备进行通信。它可以与其他支持MODBUS协议的设备进行数据交换,例如PLC、传感器、执行器等。 STC32G支持MODBUS RTU和MODBUS ASCII两种通信格式。MODBUS RTU是一种二进制格式,速度更快,常用于串口通信;MODBUS ASCII是一种基于ASCII码的格式,可读性更强,但传输速度较慢。 使用STC32G与其他设备进行MODBUS通信的步骤一般包括以下几个方面: 1. 在STC32G上设置MODBUS协议相关的参数,例如波特率、数据位、校验位等。 2. 根据设备的通信地址和功能码,编适当的程序代码,实现与其他设备的数据交换。 3. 使用串口、通信模块或网络等方式连接STC32G与其他设备。 4. 通过发送MODBUS请求命令和接收MODBUS响应命令来实现数据的读取和入。 总之,STC32G作为一款强大的32位单片机,结合MODBUS协议,可以实现与其他设备的数据通信和数据交换。它的使用可以广泛应用于工业自动化、智能控制系统等领域。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

打酱油的工程师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值