51单片机 01 LED

devtools/2025/2/2 15:43:17/

一、点亮一个LED

在STC-ISP中单片机型号选择 STC89C52RC/LE52RC;如果没有找到hex文件(在objects文件夹下),在keil中options for target-output- 勾选 create hex file。

如果要修改编程 :重新编译-下载/编程-单片机重新启动

#include <REGX52.H>
void main()
{P2=0xFE;   //1111 1110   注意是大写P// P2=0x55; 间隔亮LED小灯while(1){}
}

二、LED闪烁

这里我的keil中我STC database出现了于是我就选了STC89C52RC。

RC后缀单片机的系统频率是 11.0592mhz

#include <STC89C5xRC.H>
#include <INTRINS.H>void Delay500ms()		//@11.0592MHz
{unsigned char i, j, k;_nop_(); // need .h filei = 4;j = 129;k = 119;do{do{while (--k);} while (--j);} while (--i);
}void main(){while(1){P2=0xFE;Delay500ms();P2=0xFF;Delay500ms();}
}

三、LED 流水灯

LED和蜂鸣器共用P2引脚,所以会响(正常现象)

#include <STC89C5xRC.H>
void Delay500ms()		//@11.0592MHz
{unsigned char i, j, k;// _nop_(); // can delete this sentensei = 4;j = 129;k = 119;do{do{while (--k);} while (--j);} while (--i);
}void main()
{while(1){P2=0xFE;Delay500ms();P2=0xFD;Delay500ms();P2=0xFB;Delay500ms();P2=0xF7;Delay500ms();P2=0xEF;Delay500ms();P2=0xDF;Delay500ms();P2=0xBF;Delay500ms();P2=0x7F;Delay500ms();}
}

四、流水灯代码优化版

unsigned char: 适用于 8 位数据(如 P2 寄存器),内存占用小,与硬件匹配度高。

注意在 delay 函数中选择的值是500,所以要用unsigned int。

左移运算符 << 会将二进制数向左移动一位,右边空出的位用 0 填充。

按位或运算符 | 会将两个二进制数的每一位进行或运算。|0x01:将最低位置1。

#include <STC89C5xRC.H>
void Delayms(unsigned int x)		//@11.0592MHz
{unsigned char i, j;while(x){i = 2;j = 199;do{while (--j);} while (--i);x--;}
}void main()
{unsigned char pattern =0xFE;while(1){P2=pattern;Delayms(500);pattern=(pattern<<1)|0x01; //() is more distinctif(pattern==0xFF) pattern=0xFE;}
}

C51数据类型 


http://www.ppmy.cn/devtools/155473.html

相关文章

索引的底层数据结构、B+树的结构、为什么InnoDB使用B+树而不是B树呢

索引的底层数据结构 MySQL中常用的是Hash索引和B树索引 Hash索引&#xff1a;基于哈希表实现的&#xff0c;查找速度非常快&#xff0c;但是由于哈希表的特性&#xff0c;不支持范围查找和排序&#xff0c;在MySQL中支持的哈希索引是自适应的&#xff0c;不能手动创建 B树的…

Python3 【闭包】项目实战:5个新颖的学习案例

Python3 【闭包】项目实战&#xff1a;5个新颖的学习案例 以下是 5个闭包应用项目&#xff0c;涵盖实际场景并附带完整代码、解释和测试案例。 项目1&#xff1a;待办事项列表&#xff08;Todo List&#xff09; 功能&#xff1a;使用闭包管理待办事项的添加、删除和展示。 …

Shell特殊状态变量以及常用内置变量总结

目录 1. 特殊的状态变量 1.1 $?&#xff08;上一个命令的退出状态&#xff09; 1.2 $$&#xff08;当前进程的 PID&#xff09; 1.3 $!&#xff08;后台进程的 PID&#xff09; 1.4 $_&#xff08;上一条命令的最后一个参数&#xff09; 2.常用shell内置变量 2.1 echo&…

14JavaWeb——SpringBoot原理

SpingBoot原理 在前面十多天的课程当中&#xff0c;我们学习的都是web开发的技术使用&#xff0c;都是面向应用层面的&#xff0c;我们学会了怎么样去用。而我们今天所要学习的是web后端开发的最后一个篇章springboot原理篇&#xff0c;主要偏向于底层原理。 我们今天的课程安…

MATLAB语言的测试开发

MATLAB语言的测试开发 引言 MATLAB&#xff08;矩阵实验室&#xff09;是一种高性能的技术计算语言&#xff0c;广泛用于工程、科学、数学和经济等各个领域。其强大的计算能力和丰富的工具箱&#xff0c;使得MATLAB在数据分析、算法开发、模型建立以及仿真等方面得到了广泛应…

笔记:同步电机调试时电角度校正方法说明

电角度校正原理&#xff1a; 电机在额定转速附近时&#xff0c;零扭矩开管&#xff0c;查看U2-31是否在0上下波动&#xff08;均值在/-50以内即可&#xff09;&#xff0c;若有偏差&#xff0c;关管后&#xff0c;校准电角度&#xff08;均值每偏差50&#xff0c;调整1度&…

十分钟快速上手 markdown

前言 本人利用寒假期间&#xff0c;将自己所学的markdown的知识&#xff0c;以及将自己常用的一些操作和注意事项记录下来&#xff0c;希望能够帮助大家 一、markdown是什么 Markdown 是一种轻量级标记语言&#xff0c;说白了就是可以让你利用最简单的语法达到最好的排版效果…

【Uniapp-Vue3】解决uni-popup弹窗在安全区显示透明问题

我们在使用uni-popup时&#xff0c;如果想要给弹出内容添加一个背景颜色&#xff0c;我们会发现在安全区域是不显示该背景颜色的。 首先根据如下的目录结构找到uni-popup.vue文件 在该文件中找到bottom配置&#xff0c;将红箭头所指代码注释掉 下面的安全区域就没有了&#xff…