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

初识 51

keil的使用: 

具体细节请移步我上一篇博客:创建第一个51文件-CSDN博客
hex -- 汇编语言实现的文件 -- 直接与单片机对接的文件
单片机 -- 一个集成电脑芯片
单片机开发版  -- 基于单片机的集成电路 

stc 89 c52RC  / RD + 系列单片机 命名规则:


89  -- 版本号?
C -- 工作电压: C:3.3 ~5.5V  LE :2.0~3.6 V
51 -- 程序空间大小  51 --4K 52  --8K  
RC --RAM 大小   RC-- RAM位为512  RD+ 1280
工作频率
工作温度范围
封装类型
管脚数

==================================
 


单片机的思维发散:

1.单片机编程是什么 -- 人类要求单片机干具体的活 -- 体现写好纸条贴冰箱-- 提箱女友扫地
2.单片机执行程序怎么理解 -- 女朋友看到纸条后,照做
3.单片机能做什么事 -- IO口供电, 窜口传输
4.引脚: 方便人堆单片机额IO口,窜口接东西
5.冬季CPU怎么找到IO口: 寻址 -- 头文件 

sfr指令 -- 描述硬件地址: sfr P0=Ox8o; P0=0;
sbit 指令 --对应可寻址空间的一个位,可理解为"'一组IO口 "的起始地址中的数据 sbit led2=P3^6;

C语言的一个字节, char 位8位

^ -- 访问 位

IO口 -- 推荐 使用P1~P3,P4  , 不建议使用P0口 -- 开漏输出 -- 可能会弄坏    
封装 -- LQFP44

IO口的输入 -- 把外面的东西传进来
IO口的输出  -- 把数据传到外面 
Such as:

sbit ifFire=P1^0;

int main()
{
int io_data;
//什么情况叫输入
io_data=ifFire; // 给变量赋值 -- 输入 or 这里引脚有数据啦,拿个变量来保存
if(io_idata == 0) {}
//什么情况输出
ifFire=1; // 赋予一个数值,引起IO电压变化,(1--高 0--低电平),此刻为输出来影响外界设备

return 0;
}


==============================================
test1 -- 点亮一盏灯 -- 给低电平即可
#include"reg52.h"


sbit led1=P3^7;
sbit led2=P3^6;

void main()
{
    
led1=0;
led2=0;
while(1);
}


test2 -- 让led 闪烁 -- 让led 高低电平迅速切换 -- 重复执行

#include"reg52.h"


sbit led1=P3^7;
sbit led2=P3^6;

void Delay500ms()        //@11.0592MHz
{
    unsigned char i, j, k;


    i = 4;
    j = 129;
    k = 119;
    do
    {
        do
        {
            while (--k);
        } while (--j);
    } while (--i);
}

void main()
{
    
led2=0; // led2 一直亮 
    
while(1) // led1 一直闪
{
                led1=0; 
    Delay500ms(); // 给个500ms的延迟间隔 -- 方便观察
    led1=1;
    Delay500ms();
}

========================================


按键控制灯 :

查询法while 控制灯:
判断sw1内按下:
KEY1和GND接通 -- 0

sw1没被按下:
未接通 -- 1 

key1 接到P2^1口


#include"reg52.h"


#include"reg52.h"


sbit led1=P3^7;
sbit key1=P2^1;    
sbit key2=P2^0;    

void main()
{
while(1)
{
 if(key1==0)
 {
 led1=0; 
 }
 if(key2==0)
 {
 led1=1; 
}
}    


}

========================================


消除抖动 


方法 -- 给个延时函数-- 判断是不是人按下的,还是抖动导致,人按下有个约50ms的反应时间

用到_nop(); // 添加头文件 #include<intrins.h>

#include"reg52.h"
#include<intrins.h>

sbit led1=P3^7;
sbit key1=P2^1;    
sbit key2=P2^0;    


void Delay500ms()        //@11.0592MHz
{
    unsigned char i, j, k;

    _nop_();
    i = 4;
    j = 129;
    k = 119;
    do
    {
        do
        {
            while (--k);
        } while (--j);
    } while (--i);
}


void main()
{
while(1)
{
if(key1==0)

    Delay500ms();
    if(key1==0){
      led1=0; 
    }
}
if(key2==0)
{
    Delay500ms();
    if(key2==0)
    led1=1; 
}
}    

}

=========================


通过一个按键控制灯的开关 ! -- 取反


led1 =!led1;

也可以 定义一个 标记变量 ledMark -- 0 1dai 代表led的电平

keil 编译器有点damn ,局部变量的定义要放在第一行

#include"reg52.h"
#include<intrins.h>

#define ON_STATUS 0
#define OFF_STATUS 1

sbit led1=P3^7;
sbit key1=P2^1;    
sbit key2=P2^0;    


void Delay500ms()        //@11.0592MHz
{
    unsigned char i, j, k;

    _nop_();
    i = 4;
    j = 129;
    k = 119;
    do
    {
        do
        {
            while (--k);
        } while (--j);
    } while (--i);
}


void main()
{
    int LedMark=OFF_STATUS;    

while(1)
{
if(key1==0)

    Delay500ms();
    if(key1==0){
      LedMark=ON_STATUS;    
    }
}
if(key2==0)
{
    Delay500ms();
    if(key2==0)
    LedMark=OFF_STATUS;    
}
if(!LedMark)
   led1=0;    
else 
    led1=1;    
}    


}


 

相关文章:

初识 51

keil的使用: 具体细节请移步我上一篇博客:创建第一个51文件-CSDN博客 hex -- 汇编语言实现的文件 -- 直接与单片机对接的文件 单片机 -- 一个集成电脑芯片 单片机开发版 -- 基于单片机的集成电路 stc 89 c52RC / RD 系列单片机 命名规则: 89 -- 版本号&#xff1f; C --…...

【回溯与邻里交换】纸牌三角

1.回溯算法 旋转有3种可能&#xff0c;镜像有2种 所以最后次数&#xff1a;counts/3/2 #include<iostream> using namespace std;int num[9]; int counts0; bool bools[9];//默认为false int dfs(int step){if(step9){//索引 if((num[0]num[1]num[2]num[3]num[3]num[4]n…...

微服务(基础篇-004-Feign)

目录 http客户端Feign Feign替代RestTemplate&#xff08;1&#xff09; Feign的介绍&#xff08;1.1&#xff09; 使用Feign的步骤&#xff08;1.2&#xff09; 自定义配置&#xff08;2&#xff09; 配置Feign日志的两种方式&#xff08;2.1&#xff09; Feign使用优化…...

Linux IRC

目录 入侵框架检测 检测流程图 账号安全 查找账号中的危险信息 查看保存的历史命令 检测异常端口 入侵框架检测 1、系统安全检查&#xff08;进程、开放端口、连接、日志&#xff09; 这一块是目前个人该脚本所实现的功能 2、Rootkit 建议使用rootkit专杀工具来检查&#…...

五、Elasticsearch 集成

目录 5.1 Spring Data 框架集成5.1.1 Spring Data 框架介绍5.1.2 Spring Data Elasticsearch 介绍5.1.3 Spring Data Elasticsearch 版本对比5.1.4 集成步骤 5.1 Spring Data 框架集成 5.1.1 Spring Data 框架介绍 Spring Data 是一个用于简化数据库开发的开源框架。其主要目…...

Qt 完成图片的缩放拖动

1. 事件和函数 主要使用事件paintEvent(QPaintEvent *event)和drawTiledPixmap函数实现绘图。 paintEvent事件在改变窗口大小、移动窗口、手动调用update等情形下会被调用。需先了解下绘图该函数的用法。 - QPainter::drawTiledPixmap(int x, int y, int w, int h, const QPi…...

Linux 内核工具 iptables 配置TCP/UDP端口转发(命令参考)

1、配置TCP端口转发 把本机20000/TCP端口转发到7.7.7.7:20000 iptables -t nat -A PREROUTING -p tcp --dport 20000 -j DNAT --to-destination 7.7.7.7:20000 iptables -t nat -A POSTROUTING -j MASQUERADE 2、配置UDP端口转发 把本机20000/UDP端口转发到7.7.7.7:20000 i…...

love 2d Lua 俄罗斯方块超详细教程

源码已经更新在CSDN的码库里&#xff1a; git clone https://gitcode.com/funsion/love2d-game.git 一直在找Lua 能快速便捷实现图形界面的软件&#xff0c;找了一堆&#xff0c;终于发现love2d是小而美的原生lua图形界面实现的方式。 并参考相关教程做了一个更详细的&#x…...

SpringBoot+ElasticSearch实现文档内容抽取、高亮分词、全文检索

需求 产品希望我们这边能够实现用户上传PDF、WORD、TXT之内得文本内容&#xff0c;然后用户可以根据附件名称或文件内容模糊查询文件信息&#xff0c;并可以在线查看文件内容。 一、环境 项目开发环境&#xff1a; 后台管理系统springbootmybatis_plusmysqles 搜索引擎&#…...

利用Redis实现简单的短信登录

在现代应用中&#xff0c;短信登录是一种常见的用户认证方式。它提供了一种便捷的登录方式&#xff0c;同时也增加了账户的安全性。在本文中&#xff0c;我们将介绍如何使用 Redis 实现短信登录的功能&#xff0c;并提供相应的 Java 实现层代码。 1、短信验证码的生成与存储当用…...

在 Linux 中通过 SSH 执行远程命令时,无法自动加载环境变量(已解决)

问题场景 目前我的环境变量都存储在 /etc/profile 文件中&#xff0c;当我通过远程 SSH 执行一些命令时&#xff0c;提示命令找不到&#xff0c;如下所示&#xff1a; 问题出现原因 这里找到了一张出自尚硅谷的图片&#xff0c;很好的解释了该问题&#xff1a; 这是由于 Linu…...

c++使用类的一些注意事项

前言&#xff1a; 本篇内容为前面的补充&#xff0c;介绍了我们使用类时需要注意些什么以及一些编译器的优化&#xff0c;可能有些理解不到位或者错误&#xff0c;请斧正。 目录 前言&#xff1a; 1.再谈构造函数 2.&#xff08;c98&#xff09;隐式类型转换中的编译器的优…...

C++蓝桥考级一级到十八级的考点内容整理

以下是C蓝桥考级一级到十八级的考点内容整理&#xff1a; C一级考点内容 C程序基本结构 初步了解C编程了解C程序基本结构&#xff1a;头文件、命名空间、主函数、基本输入输出 cin、cout C二级考点内容 数据类型与变量 掌握编程中数学表达式的计算方式基础数据类型、变量的…...

C++智能指针简单剖析

导读 最近在补看《C Primer Plus》第六版&#xff0c;这的确是本好书&#xff0c;其中关于智能指针的章节解析的非常清晰&#xff0c;一解我以前的多处困惑。C面试过程中&#xff0c;很多面试官都喜欢问智能指针相关的问题&#xff0c;比如你知道哪些智能指针&#xff1f;shar…...

mysql笔记:25. docker环境中mysql主从复制、主主复制实操

文章目录 一、准备工作1. 安装配置Docker2. 准备MySQL相关的配置和数据目录 二、基于日志点的主从复制1. 配置Master服务器1.1 修改配置文件1.2. 在docker中启动Master节点1.3. 创建用户并授权 2. 配置Slave1服务器2.1. 修改配置2.2. 启动服务2.3. 指定Master2.4. 开始复制 3. …...

大数据面试专题 -- kafka

1、什么是消息队列&#xff1f; 是一个用于存放数据的组件&#xff0c;用于系统之间或者是模块之间的消息传递。 2、消息队列的应用场景&#xff1f; 主要是用于模块之间的解耦合、异步处理、日志处理、流量削峰 3、什么是kafka&#xff1f; kafka是一种基于订阅发布模式的…...

深度学习入门简单实现一个神经网络

实现一个三层神经网络 引言测试数据 代码 引言 今天我们实现一个简单的神经网络 俩个输入神经元 隐藏层两个神经元 一个输出神经元 激活函数我们使用sigmoid 优化方法使用梯度下降 我们前期准备是需要把这些神经元的关系理清楚 x1&#xff1a;第一个输入 x2&#xff1a;第二个…...

win11 环境配置 之 Jmeter(JDK17版本)

一、安装 JDK 1. 安装 jdk 截至当前最新时间&#xff1a; 2024.3.27 jdk最新的版本 是 官网下载地址&#xff1a; https://www.oracle.com/java/technologies/downloads/ 建议下载 jdk17 另存为到该电脑的 D 盘下&#xff0c;新建jdk文件夹 开始安装到 jdk 文件夹下 2. 配…...

Windows下载使用nc(netcat)命令

‘nc’ 不是内部或外部命令&#xff0c;也不是可运行的程序&#xff1f; 点击链接地址&#xff0c;下载压缩包。 完成后解压 使用方式&#xff08;三种&#xff09;&#xff1a; 1、直接双击exe使用 2、把这个exe放到cmd启动的默认路径下 放到默认路径下&#xff0c;使用nc&a…...

istio 设置 istio-proxy sidecar 的 resource 的 limit 和 request

方式一 修改 configmap 查看当前 sidecar 的 cpu 和 memory 的配额 在 istio-sidecar-injector 中查找&#xff0c;修改后重启 pod 可以生效&#xff08;下面那个 proxy_init 配置不管&#xff0c;不知道是干嘛的&#xff09; 方式二 如果是通过 iop 安装的 istio&#xf…...

MAX31856在工业温控项目中的实战应用:从选型、电路设计到故障诊断避坑指南

MAX31856工业温控系统设计全流程&#xff1a;从芯片选型到抗干扰实战 工业温度监测系统的可靠性直接关系到生产安全与产品质量。在钢铁冶炼、化工反应等场景中&#xff0c;一个温度传感器的失效可能导致数百万损失。MAX31856作为工业级热电偶数字转换器&#xff0c;其45V过压保…...

Cartographer闭环优化里的‘分支定界’:一个机器人SLAM工程师的实战笔记与避坑心得

Cartographer闭环优化中的分支定界算法&#xff1a;工程实践与性能调优指南 在SLAM&#xff08;即时定位与地图构建&#xff09;领域&#xff0c;闭环检测的准确性直接决定了系统长期运行的稳定性。作为Cartographer算法的核心组件之一&#xff0c;分支定界&#xff08;Branch …...

抖音下载器底层架构解析:策略模式与异步编排的高性能实现

抖音下载器底层架构解析&#xff1a;策略模式与异步编排的高性能实现 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback su…...

书匠策AI课程论文一键生成?我替你们踩了一遍,真香预警!

各位论文困难户们&#xff0c;先别划走&#xff01; 今天不聊别的&#xff0c;就聊一个让我这个老博主都直呼"离谱"的东西——书匠策AI的课程论文功能。我知道你们一看到AI写论文就条件反射觉得是割韭菜&#xff0c;但这次&#xff0c;我是真的被圈粉了。 先说结论…...

MagiskBoot:Android启动镜像解构与重构引擎深度解析

MagiskBoot&#xff1a;Android启动镜像解构与重构引擎深度解析 【免费下载链接】Magisk The Magic Mask for Android 项目地址: https://gitcode.com/GitHub_Trending/ma/Magisk MagiskBoot作为Magisk生态系统的核心组件&#xff0c;专门负责Android启动镜像的多格式解…...

计算机视觉导航评估框架:从算法指标到用户体验的完整闭环

1. 项目概述&#xff1a;为什么我们需要一个“导航评估框架”&#xff1f;在计算机视觉辅助视障人士导航这个领域&#xff0c;我见过太多“实验室里的英雄”和“现实中的矮子”。一个算法在精心布置的走廊里识别障碍物准确率高达99.9%&#xff0c;但一到人潮涌动的火车站广场&a…...

为AI智能体构建持久化记忆系统:基于RAG与向量检索的实践

1. 项目概述&#xff1a;为AI智能体构建持久化记忆系统在AI智能体&#xff08;AI Agent&#xff09;的开发浪潮中&#xff0c;一个核心的痛点日益凸显&#xff1a;如何让智能体拥有持续、可靠的记忆能力&#xff1f;无论是基于Claude API、GPTs还是其他大语言模型构建的对话机器…...

告别混乱XML:Notepad++插件一键美化与智能纠错实战

1. 为什么我们需要XML格式化工具&#xff1f; 作为一个常年和XML打交道的开发者&#xff0c;我太清楚那种打开一个几千行XML文件时的绝望了——所有标签挤在一起&#xff0c;缩进混乱得像被猫抓过的毛线球&#xff0c;想找个节点得用CtrlF来回搜三遍。更可怕的是&#xff0c;有…...

构建多模型对比评测工具时集成Taotoken的统一接口

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 构建多模型对比评测工具时集成Taotoken的统一接口 在模型选型、效果验证或学术研究过程中&#xff0c;开发者或研究者常常需要并行…...

解放双手:D3KeyHelper让暗黑3游戏操作变得前所未有的简单

解放双手&#xff1a;D3KeyHelper让暗黑3游戏操作变得前所未有的简单 【免费下载链接】D3keyHelper D3KeyHelper是一个有图形界面&#xff0c;可自定义配置的暗黑3鼠标宏工具。 项目地址: https://gitcode.com/gh_mirrors/d3/D3keyHelper 还在为暗黑3中繁琐的技能循环和…...