当前位置: 首页 > article >正文

【51单片机零基础-chapter2:灯独立点亮,自定义点亮,跑马灯点亮,函数】

在这里插入图片描述

在这里插入图片描述

设置字体
在这里插入图片描述

在这里插入图片描述
因为STC89C52不在keil软件里,只能用国外的
1.如果是keil4或5的老版本,则找ATMEL里面的at89c52系列
2.新版本,则microchip(因为2016年atmel被microchip收购了)

1 在这里插入图片描述

2 在这里插入图片描述

在这里插入图片描述
keil4里面没有new item
在这里插入图片描述
而keil5有,所以拿keil5举例
在这里插入图片描述
第一个必须要是main文件
第一个必须要是main文件
第一个必须要是main文件
第一个必须要是main文件
第一个必须要是main文件
第一个必须要是main文件
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

原来是缺少主函数,此时正确
在这里插入图片描述
LED灯
长脚正极短脚负极,如果一样长,则从灯泡内部看,大片为负极,小片一侧为正极

最后一个数字代表0的个数
472=47 00
102=10 00
115=11 00000
1001=100 0
比如滑动变阻器上面的103=10 000
在这里插入图片描述

cpu通过我们写的软件(程序)来写值,即控制寄存器来控制硬件电路(驱动器),寄存器为1则表示高电平,硬件电路来执行我们想完成的功能
cpu通过寄存器写值1,则1通过驱动器变为高电平(正),0则低电平
寄存器刚好八个为一组,每个寄存器对应一个p2口
在这里插入图片描述
引入头文件,右键insert,当然可以打开该头文件查看更多寄存器信息知识
在这里插入图片描述
因为创建的时候选择了否,没有hex文件,所以此时生成
在这里插入图片描述

在这里插入图片描述
并且会自动创建hex文件
在这里插入图片描述

打开stc-isp
选择stc89c52
在这里插入图片描述
选择串口
在这里插入图片描述
打开
在这里插入图片描述
目标文件夹
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
如果没有亮,更换
在这里插入图片描述
在这里插入图片描述
点亮第一个灯完毕
在这里插入图片描述
注意,单独列出一个句子和while1的效果一样,因为单片机执行完该文件会再次执行

#include <REGX52.H>
void main()
{
	//p2=1111 1110;from max to min,but this form is DEC not BIN
  /** using HEX will be ok, because 1111=f,1110=e for BINtoHEX*/
		P2=0xfe;
}

闪烁功能:利用ISP软件自带的函数delay,复制进U5
在这里插入图片描述

注意是毫秒
在这里插入图片描述

#include <REGX52.H>
#include <INTRINS.H>//use nop , need include intrins head file

void Delay500ms()		//@12.000MHz
{
	unsigned char i, j, k;
	_nop_();//nop is null sentence,show nothing to do , so used to delay time
	i = 4;j = 205;k = 187;
	do
	{
		do
		{
			while (--k);
		} while (--j);
	} while (--i);
}

void main()
{
		P2=0x55;
		Delay500ms();
		P2=0x55;
		Delay500ms();
}

自定义延时+流水灯
自定义延时:
先去生成1ms的延时代码
然后执行x次即总共延时xms

延时1ms
void Delay1ms()		//@12.000MHz
{
	unsigned char i, j;
	i = 2;
	j = 239;
	do
	{
		while (--j);
	} while (--i);
}

延时xms
#include <REGX52.H>
#include <INTRINS.H>//use nop , need include intrins head file

void Delay(unsigned int x)//传参,使延时1ms的函数执行x次
{
	while(x--){
		unsigned char i, j;
		i = 2;
		j = 239;
		do{while (--j);}
		while (--i);
	}
}


void main(){
	P2=0xFE;Delay(500);
	P2=0xFD;Delay(500);
	P2=0xFB;Delay(500);
	P2=0xF7;Delay(500);
	
	P2=0xEF;Delay(500);
	P2=0xDF;Delay(500);
	P2=0xBF;Delay(500);
	P2=0x7F;Delay(500);
}

http://www.kler.cn/a/466175.html

相关文章:

  • 专家混合(MoE)大语言模型:免费的嵌入模型新宠
  • 【大模型】7 天 AI 大模型学习
  • 3D Object Detection和6D Pose Estimation有什么异同?
  • 用python编写一个放烟花的小程序
  • R机器学习:神经网络算法的理解与实操,实例解析
  • ScheduledExecutorService详解
  • 每日一学——配置管理工具(Chef)
  • K8s高可用集群之Kubernetes集群管理平台、命令补全工具、资源监控工具部署、常用命令
  • 如何验证imap是否生效
  • 深入理解 Android 中的 ActivityInfo
  • 【Java基础】03.Java运算符
  • Linux 多线程(理论+实践)
  • Eplan 布局图中的宏/设备/安装板比例缩放
  • Qt qtcreator配置cmake
  • 【论文阅读】SCGC : Self-supervised contrastive graph clustering
  • 深度学习之计算机视觉相关数据集
  • Flink源码解析之:Flink On Yarn模式任务提交部署过程解析
  • 实现一个通用的树形结构构建工具
  • 电脑软件报错提示:找不到vcomp140.d的原因分析及解决办法
  • 文本区域提取和分析——Python版本
  • Nginx代理本地exe服务http为https
  • 22. 【.NET 8 实战--孢子记账--从单体到微服务】--记账模块--切换主币种
  • 图扑 HT 引擎 × 3DGS 高斯泼溅
  • 利用 AI 高效生成思维导图的简单实用方法
  • uniapp 自定义类微信支付键盘 (微信小程序)
  • PostgreSQL学习笔记(一):PostgreSQL介绍和安装