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

【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 filevoid Delay500ms()		//@12.000MHz
{unsigned char i, j, k;_nop_();//nop is null sentence,show nothing to do , so used to delay timei = 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 filevoid 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.mrgr.cn/news/82644.html

相关文章:

  • 5.C语言流程控制语句详解:if、switch、while、for、break、continue等
  • 起重机检测数据集VOC+YOLO格式2316张1类别
  • mac 使用zip2john破解zip压缩包密码
  • sqlserver sql转HTMM邮件发送
  • 《探秘计算机视觉与深度学习:开启智能视觉新时代》
  • SpringMVC(六)拦截器
  • 1.1.3 插入排序
  • GNU链接器简介
  • MAC环境安装(卸载)软件
  • 数据结构C语言描述8(图文结合)--哈希、哈希冲突、开放地址法、链地址法等实现
  • Oracle Dataguard(主库为 Oracle 11g 单节点)配置详解(2):配置主数据库
  • Kraft模式安装Kafka(含常规、容器两种安装方式)
  • 【操作系统不挂科】操作系统期末考试题库<1>(单选题&简答题&计算与分析题&应用题)
  • ARM CCA机密计算安全模型之固件更新
  • 代码实战:基于InvSR对视频进行超分辨率重建
  • Unity-Mirror网络框架-从入门到精通之Benchmark示例
  • 1.1.2.1 选择 + 冒泡排序
  • Oracle 11g rac + Dataguard 环境调整 redo log 大小
  • 与 Oracle Dataguard 相关的进程及作用分析
  • 1.1.7 master公式的使用
  • 1.2.1 归并排序
  • 智能工厂的设计软件 应用场景的一个例子:为AI聊天工具添加一个知识系统 之13 方案再探之4:特定于领域的模板 之 div模型(完整版)
  • 三子棋游戏
  • web漏洞之文件包含漏洞
  • 模型训练二三事:参数个数、小批量、学习率衰减、输入形状
  • SCAU期末笔记 - 数据库系统概念往年试卷解析