reg52.h中文详细注解

TJA1145的‘局部网络’功能详解:在混合CAN/CAN FD网络中如何避免误唤醒 本文深入解析TJA1145芯片的局部网络功能,探讨其在混合CAN/CAN FD网络中的智能唤醒方案。通过详细的技术剖析和实战配置指南,帮助工程师避免误唤醒问题,优化网络功耗和性能。文章还提供了寄存器配置关键路径和混合网络实现方案,适合车载网络设计人员参考。 阅读详情
AI摘要

REG52.H是针对80C52和80C32微控制器的通用头文件,定义了包括P0-P3口、PSW、ACC、B、SP、DPL/DPH、PCON和TCON等在内的特殊寄存器。文件还涵盖了定时器/计数器和电源控制的相关寄存器,如TMOD和PCON,其中详细解释了定时器的工作模式和中断处理。对于开发和维护,使用此汉化版头文件可以提供中文提示,提高编程效率。

REG52.H是一个用于80C52和80C32微控制器的通用头文件。其中定义了各种特殊字节寄存器,如P0口、P1口、P2口、P3口、程序状态字寄存器、累加器、B特殊寄存器、堆栈指针寄存器和数字指针(低位/高位)等。此外,该头文件还定义了一些与定时器/计数器和电源控制相关的寄存器,例如PCON和TCON。定时器/计数器模式的选择由TMOD寄存器中的位控制。

现在将此文件汉化 然后用vscode 进行开发维护时,宏定义有中文提示 非常方面.
在程序编写过程中 只需要替换keil 安装目录下 的INC 头文件REG52.H

强烈建议大家使用
在这里插入图片描述

下面放出相关代码

/*--------------------------------------------------------------------------
REG52.H
 
Header file for generic 80C52 and 80C32 microcontroller.
Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc.
All rights reserved.
--------------------------------------------------------------------------*/
 
#ifndef __REG52_H__
#define __REG52_H__
 
/*  特殊字节(8位)寄存器 */
sfr P0 = 0x80;         // P0口特殊寄存器寻址位
sfr P1 = 0x90;         // P1口特殊寄存器寻址位
sfr P2 = 0xA0;         // P2口特殊寄存器寻址位
sfr P3 = 0xB0;         // P3口特殊寄存器寻址位
sfr PSW = 0xD0;         // 程序状态字寄存器
sfr ACC = 0xE0;         // 累加器
sfr B = 0xF0;         // B 特殊寄存器
sfr SP = 0x81;         // 堆栈指针寄存器
sfr DPL = 0x82;         // 数字指针(低位)
sfr DPH = 0x83;         // 数字指针(高位)
/*
电源控制寄存器
 
与串行口相关的只有SMOD ,其他的可以自己去查资料
-------------扩展资料---------------
SMOD:
在串口工作方式1,2,3中
是波特率加倍位
(产生高波特率时启用平时不用,比如用11.0592晶振产生57600波特率时就要设置成SMOD=1)
 
SMOD=1:
波特率加倍(PCON=0X80;)
SMOD=0:
波特率不加倍(PCON=0X80;)
(PCON=0X00;)
 
 
*/
sfr PCON = 0x87;
sfr TCON = 0x88; // 定时器/计数器 0 和 1 控制
 
 
/*
定时器/计数器 0 和 1 模式
 
GATE  C/T  M1  M0  GATE  C/T  M1  M0
--------------------------------------------
位                  符号          功能
TMOD.7/ GATE                  TMOD.7控制定时器1,置1时只有在INT1脚为高及TR1控制位置1       
                                    时才可打开定时器/计数器1。
TMOD.3/ GATE                  TMOD.3控制定时器0,置1时只有在INT0脚为高及TR0控制位置1       
                                    时才可打开定时器/计数器0。
TMOD.6/ C/T                  TMOD.6控制定时器1用作定时器或计数器,清零则用作定时器       
                                    (从内部系统时钟输入),置1用作计数器(从T1/P3.5脚输入)
TMOD.2/ C/T          TMOD.2控制定时器0用作定时器或计数器,清零则用作定时器       
                                    (从内部系统时钟输入),置1用作计数器(从T0/P3.4脚输入)
TMOD.5/TMOD.4 M1、M0         定时器定时器/计数器1模式选择
 
---------------------------------------------
 
0 0                  13位定时器/计数器,兼容8048定时模式,TL1只用低5位参与分频,TH1整个8位全用。
0 1                 16位定时器/计数器,TL1、TH1全用
1 0         8位自动重装载定时器,当溢出时将TH1存放的值自动重装入TL1.
1 1          定时器/计数器1此时无效(停止计数)。TMOD.1/TMOD.0 M1、M0 定时器/计数器0模式选择
0 0          13位定时器/计数器,兼容8048定时模式,TL0只用低5位参与分频,TH0整个8位全用。
0 1          16位定时器/计数器,TL0、TH0全用
1 0        8位自动重装载定时器,当溢出时将TH0存放的值自动重装入TL0
1 1         定时器0此时作为双8位定时器/计数器。TL0作为一个8位定时器/计数器,通过标准定时器0的控制位控制。TH0仅作为一个8位定时器,由定时器1的控制位控制。
 
 
*/
sfr TMOD = 0x89;
 
 
 
sfr TL0 = 0x8A;         // 定时器/计数器 0 低8位寄存器
sfr TL1 = 0x8B;         // 定时器/计数器 1低8位寄存器
sfr TH0 = 0x8C;         // 定时器/计数器 0高8位寄存器
sfr TH1 = 0x8D;         // 定时器/计数器 1高8位寄存器
sfr IE = 0xA8;         // 中断允许寄存器
sfr IP = 0xB8;         // 中断优先寄存器(低)
sfr SCON = 0x98; // 串口控制寄存器
sfr SBUF = 0x99; // 串口数据缓冲器
 
/*  8052扩展寄存器 */
sfr T2CON = 0xC8;  // 定时器/计数器2 控制
sfr RCAP2L = 0xCA; // 定时器/计数器2 重载/捕捉低位
sfr RCAP2H = 0xCB; // 定时器/计数器2 重载/捕捉高位
sfr TL2 = 0xCC;           // 定时器/计数器2 低位
sfr TH2 = 0xCD;           // 定时器/计数器2 高位
 
/*  位寄存器  */
 
/*  PSW (程序状态字寄存器) */
sbit CY = PSW ^ 7;        // 进位、借位标志。进位、借位CY=1;否则CY=0
sbit AC = PSW ^ 6;        // 辅助进位、借位标志。当D3向D4有借位或进位时,AC=1;否则AC=0
sbit F0 = PSW ^ 5;        // 用户标志位
sbit RS1 = PSW ^ 4; // 寄存器组选择控制位1
sbit RS0 = PSW ^ 3; // 寄存器组选择控制位0
sbit OV = PSW ^ 2;        // 溢出标志。有溢出OV=1,否则OV=0
sbit F1 = PSW ^ 1;        // 保留位,无定义
sbit P = PSW ^ 0;        // 8052 only 奇偶校验标志位,由硬件置位或清0;
                                  // 存在ACC中的运算结果有奇数个1时P=1,否则P=0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
/*  TCON (定时器/计数器 0 和 1 控制) */
 
/*定时器1溢出标志位。
 
当定时器1计满溢出时, 由硬件使TF1置“1”,并且申请中断。
进入中断服务程序后,由硬件自动清“0”,在查询方式下用软件清 “0”*/
sbit TF1 = TCON ^ 7;
/*定时器1运行控制位。
 
由软件清“0”关闭定时器1。
当GATE=1,且INT1为高电平时,TR1置“1”启动定时器1;
当GATE=0,TR1置“1” 启动定时器1*/
sbit TR1 = TCON ^ 6;
/*
定时器0溢出标志。
 
T0溢出中断标志。T0被允许计数以后,从初值开始加1计数,当产生溢出时,由硬件置
“1”TF0,向CPU请求中断,一直保持CPU响应该中断时,才由硬件清0(也可由查询
软件清0)。
*/
sbit TF0 = TCON ^ 5;
 
/*定时器0运行控制位。
 
由软件清“0”关闭定时器0。
当GATE=1,且INT0为高电平时,TR0置“1”启动定时器0;
当GATE=0,TR0置“1” 启动定时器0*/
sbit TR0 = TCON ^ 4;
 
/*
外部中断1请求标志。
 
 
外部中断1请求源(INT1/P3.3)标志。IE1=1,外部中断向CPU请求中断,当CPU响应该
中断时由硬件清“0”IE1。
 
*/
sbit IE1 = TCON ^ 3;
 
/*
外部中断1触发方式选择位。
 
IT1=0,INT1/P3.3引脚上的低电平信号可触发外部中断1。IT1=1,外部中断1为下降沿触发方式。
*/
sbit IT1 = TCON ^ 2;
/*
外部中断0请求标志。
 
外部中断0请求源(INT0/P3.2)标志。IE0=1外部中断0向CPU请求中断,当CPU响应外
部中断时,由硬件清“0”IE0(边沿触发方式)。
*/
sbit IE0 = TCON ^ 1;
 
/*
外部中断0触发方式选择位。
 
外部中断0中断源类型选择位。IT0=0,INT0/P3.2引脚上的低电平可触发外部中断0。
IT0=1,外部中断0为下降沿触发方式。
*/
sbit IT0 = TCON ^ 0;
 
/* IE (中断允许寄存器) */
 
/*
允许/禁止总中断
CPU的总中断允许控制位,EA=1,CPU开放中断,EA=0,CPU屏蔽所有的中断申请。
EA的作用是使中断允许形成两级控制。即各中断源首先受EA控制;其次还受各中断源自
己的中断允许控制位控制。
*/
sbit EA = IE ^ 7;
 
/*
8052 only 允许/禁止定时器2(T2)中断
 
定时/计数器T2的溢出中断允许位。ET2=1,允许T2中断;ET2=0,禁止T2中断。
*/
sbit ET2 = IE ^ 5;
 
/*
允许/禁止串口中断
 
串行口1中断允许位。ES=1,允许串行口1中断;ES=0,禁止串行口1中断。
 
*/
sbit ES = IE ^ 4;
 
/*允许/禁止T1溢出中断
 
定时/计数器T1的溢出中断允许位。ET1=1,允许T1中断;ET1=0,禁止T1中断。
 
*/
sbit ET1 = IE ^ 3;
/*
允许/禁止外部中断1[INT1].
 
外部中断1中断允许位。EX1=1,允许外部中断1中断;EX1=0,禁止外部中断1中断。
 
*/
sbit EX1 = IE ^ 2;
/*
允许/禁止T0溢出中断
 
ET0=1,允许T0中断;ET0=0禁止T0中断。
*/
sbit ET0 = IE ^ 1;
 
/*
允许/禁止外部中断0(INT0)
 
EX0=1,允许中断;EX0=0禁止中断。
*/
sbit EX0 = IE ^ 0;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
/* IP (中断优先寄存器低)
 
2. 中断优先级控制寄存器IP/XICON和IPH
传统8051单片机具有两个中断优先级,即高优先级和低优先级,可以实现两级中断嵌套。
STC89C52系列单片机通过设置新增加的特殊功能寄存器(IPH/XICON)中的相应位,可将中断优
先级设置为4个中断优先级;如果只设置IP,那么中断优先级只有两级,与传统8051单片机两
级中断优先级完全兼容。
一个正在执行的低优先级中断能被高优先级中断所中断,但不能被另一个低优先级中断所
中断,一直执行到结束,遇到返回指令RETI,返回主程序后再执行一条指令才能响应新的中
断申请。以上所述可归纳为下面两条基本规则:
⒈ 低优先级中断可被高优先级中断所中断,反之不能。
⒉ 任何一种中断(不管是高级还是低级),一旦得到响应,不会再被它的同级中断所中断
STC89C52系列单片机的片内各优先级控制寄存器的格式如下:
IPH: 中断优先级控制寄存器高(不可位寻址)
SFR name Address bit B7 B6 B5 B4 B3 B2 B1 B0
IPH B7H name PX3H PX2H PT2 PSH PT1H PX1H PT0H PX0H
XICON : 辅助中断控制寄存器 (可位寻址)
SFR name Address bit B7 B6 B5 B4 B3 B2 B1 B0
XICON C0H name PX3 EX3 IE3 IT3 PX2 EX2 IE2 IT2
IP : 中断优先级控制寄存器低 (可位寻址)
SFR name Address bit B7 B6 B5 B4 B3 B2 B1 B0
IP B8H name - - PT2 PS PT1 PX1 PT0 PX0
PX3H, PX3: 外部中断3优先级控制位。
当PX3H=0且PX3=0时,外部中断3为最低优先级中断(优先级0)
当PX3H=0且PX3=1时,外部中断3为较低优先级中断(优先级1)
当PX3H=1且PX3=0时,外部中断3为较高优先级中断(优先级2)
当PX3H=1且PX3=1时,外部中断3为最高优先级中断(优先级3)
PX2H, PX2: 外部中断2优先级控制位。
当PX2H=0且PX2=0时,外部中断2为最低优先级中断(优先级0)
当PX2H=0且PX2=1时,外部中断2为较低优先级中断(优先级1)
当PX2H=1且PX2=0时,外部中断2为较高优先级中断(优先级2)
当PX2H=1且PX2=1时,外部中断2为最高优先级中断(优先级3)
163
STC MCU Limited.
南通国芯微电子有限公司 总机:0513-5501 2928 / 2929 / 2966 传真:0513-5501 2969 / 2956 / 2947
STC89C52系列单片机指南 官方网站:[url]www.STCMCU.com[/url] 研发顾问QQ:800003751 STC — 全球最大的8051单片机设计公司
PT2H, PT2: 定时器2中断优先级控制位。
当PT2H=0且PT2=0时,定时器2中断为最低优先级中断(优先级0)
当PT2H=0且PT2=1时,定时器2中断为较低优先级中断(优先级1)
当PT2H=1且PT2=0时,定时器2中断为较高优先级中断(优先级2)
当PT2H=1且PT2=1时,定时器2中断为最高优先级中断(优先级3)
PSH, PS: 串口1中断优先级控制位。
当PSH=0且PS=0时,串口1中断为最低优先级中断(优先级0)
当PSH=0且PS=1时,串口1中断为较低优先级中断(优先级1)
当PSH=1且PS=0时,串口1中断为较高优先级中断(优先级2)
当PSH=1且PS=1时,串口1中断为最高优先级中断(优先级3)
PT1H, PT1: 定时器1中断优先级控制位。
当PT1H=0且PT1=0时,定时器1中断为最低优先级中断(优先级0)
当PT1H=0且PT1=1时,定时器1中断为较低优先级中断(优先级1)
当PT1H=1且PT1=0时,定时器1中断为较高优先级中断(优先级2)
当PT1H=1且PT1=1时,定时器1中断为最高优先级中断(优先级3)
PX1H, PX1: 外部中断1优先级控制位。
当PX1H=0且PX1=0时,外部中断1为最低优先级中断(优先级0)
当PX1H=0且PX1=1时,外部中断1为较低优先级中断(优先级1)
当PX1H=1且PX1=0时,外部中断1为较高优先级中断(优先级2)
当PX1H=1且PX1=1时,外部中断1为最高优先级中断(优先级3)
PT0H, PT0: 定时器0中断优先级控制位。
当PT0H=0且PT0=0时,定时器0中断为最低优先级中断(优先级0)
当PT0H=0且PT0=1时,定时器0中断为较低优先级中断(优先级1)
当PT0H=1且PT0=0时,定时器0中断为较高优先级中断(优先级2)
当PT0H=1且PT0=1时,定时器0中断为最高优先级中断(优先级3)
PX0H, PX0: 外部中断0优先级控制位。
当PX0H=0且PX0=0时,外部中断0为最低优先级中断(优先级0)
当PX0H=0且PX0=1时,外部中断0为较低优先级中断(优先级1)
当PX0H=1且PX0=0时,外部中断0为较高优先级中断(优先级2)
当PX0H=1且PX0=1时,外部中断0为最高优先级中断(优先级3)
中断优先级控制寄存器IP和IPH的各位都由可用户程序置“1”和清“0”。但IP寄存器可
位操作,所以可用位操作指令或字节操作指令更新IP的内容。而IPH寄存器的内容只能用字节
操作指令来更新。STC89C52系列单片机复位后IP和IPH均为00H,各个中断源均为低优先级中
断。
 
*/
sbit PT2 = IP ^ 5; // 定时/计数器T2优先级设定位。
sbit PS = IP ^ 4;  // 串行口优先级设定位;
sbit PT1 = IP ^ 3; // 定时/计数器T1优先级设定位;
sbit PX1 = IP ^ 2; // 外部中断0优先级设定位;
sbit PT0 = IP ^ 1; // 定时/计数器T0优先级设定位;
sbit PX0 = IP ^ 0; // 外部中断0优先级设定位;
 
/* P3 (第二功能) */
sbit RD = P3 ^ 7;        // 外部数据存储器读脉冲
sbit WR = P3 ^ 6;        // 外部数据存储器写脉冲
sbit T1 = P3 ^ 5;        // 定时器/计数器1外部输入
sbit T0 = P3 ^ 4;        // 定时器/计数器0外部输入
sbit INT1 = P3 ^ 3; // 外部中断0。
sbit INT0 = P3 ^ 2; // 外部中断1。
sbit TXD = P3 ^ 1;        // 串行数据输出口
sbit RXD = P3 ^ 0;        // 串行数据输入口
 
/* SCON(控制寄存器,它是一个可寻址的专用寄存器,用于串行数据的通信控制) */
 
/* 串行口工作方式控制位0。
 
工作方式的分类:
 
SM0----SM1----工作方式----说明     
0   0   0        移位寄存器
0   1   1        10位异步收发器(8位数据)
1   0   2        11位异步收发器(8位数据)
1   1   3        11位异步收发器(9位数据)
 
 
 
*/
sbit SM0 = SCON ^ 7;
/* 串行口工作方式控制位1。
 
工作方式的分类:
 
SM0----SM1----工作方式----说明     
0   0   0        移位寄存器
0   1   1        10位异步收发器(8位数据)
1   0   2        11位异步收发器(8位数据)
1   1   3        11位异步收发器(9位数据)
*/
sbit SM1 = SCON ^ 6;
sbit SM2 = SCON ^ 5; // 多机通信控制位。
sbit REN = SCON ^ 4; // 允许接收位。用于控制数据接收的允许和禁止,ren=1时,允许接收,ren=0时,禁止接收。
sbit TB8 = SCON ^ 3; // 发送接收数据位8。(校验位)
sbit RB8 = SCON ^ 2; // 接收数据位8。(校验位)
/*
// 发送中断标志位。
 
如果TI=1,表示已经结束一帧数据的发送,
 
可由软件查询TI标志,也可向CPU申请中断
 
(注意:TI在任何工作方式下,都必须由软件清0才能再次发送数据)
 
中断地址:0023H
 
由于TI和RI 的中断入口相同,所以接收和发送时,需要在中断函数查询TI和RI的值做判断处理
*/
sbit TI = SCON ^ 1;         
 
/*
// 接收中断标志位。
 
如果RI=1,表示一帧数据接收结束.
 
可由软件查询RI标志,也可向CPU申请中断.
 
(注意:RI在任何工作方式下,都必须由软件清0才能再次发送数据)
 
中断地址:0023H
 
由于TI和RI 的中断入口相同,所以接收和发送时,需要在中断函数查询TI和RI的值做判断处理
*/
sbit RI = SCON ^ 0;         
 
 
/*  P1(第二功能) */
sbit T2EX = P1 ^ 1; // 8052 only        定时/计数器2捕捉/重装入触发
sbit T2 = P1 ^ 0;        // 8052 only        定时/计数器2外部输入
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
/*  T2CON  (定时器/计数器2 控制) */
 
/*
定时器2 溢出标记
 
定时器2 溢出标志。定时器2溢出时置位,必须由软件清除。当RCLK或TCLK=1 时,
 
*/
sbit TF2 = T2CON ^ 7;
 
/*
定时器2 外部标记
 
定时器2外部标志。当EXEN2=1且T2EX的负跳变产生捕获或重装时,EXF2置位。定
时器2 中断使能时,EXF2=1将使CPU从中断向量处执行定时器2 中断子程序。EXF2
位必须用软件清零。在递增/递减计数器模式(DCEN=1)中,EXF2不会引起中断
*/
sbit EXF2 = T2CON ^ 6;       
 
/*
接收时钟标识
 
.0=串口时钟应用定时器1 溢出,  1=定时器 2
RCLK : RCLK置位时,定时器2的溢出脉冲作为串行口模式1和模式3的接收时钟。RCLK=0时,将定时器1的溢出脉冲作为接收时钟
*/
sbit RCLK = T2CON ^ 5;         
 
/*
发送时钟标志.
 
0=串口时钟应用定时器1 溢出,  1=定时器 2
TCLK : TCLK置位时,定时器2的溢出脉冲作为串行口模式1和模式3的发送时钟。TCLK=0时,将定时器1的溢出脉冲作为发送时钟
 
 
 
*/
sbit TCLK = T2CON ^ 4;       
 
/*
定时器 2 外部允许
 
定时器 2 外部使能标志。当其置位且定时器2未作为串行口时钟时,允许T2EX的负跳变产生捕获或重装。EXEN2=0 时,T2EX的跳变对定时器2无效
 
 
*/
sbit EXEN2 = T2CON ^ 3;       
sbit TR2 = T2CON ^ 2;         // 0=停止定时器, 1=开始定时器
 
/*
定时器/计数器选择
 
0 = 内部定时器(OSC/12 或OSC/6)
1 = 外部事件计数器(下降沿触发)
*/
sbit C_T2 = T2CON ^ 1;         
 
 
/* 重载/ 重装标志
 
0=重载, 1=捕捉选择
CP/RL2 : / 重装标志。置位:EXEN2=1 时,T2EX 的负跳变产生捕获。 清零:EXEN2=0 时,
定时器2溢出或T2EX 的负跳变都可使定时器自动重装。当RCLK=1 或TCLK=1时,该位无效且定时器强制为溢出时自动重装
 
 
 
 
*/
sbit CP_RL2 = T2CON ^ 0;
 
 
 
#endif
51 单片机头文件 reg51.h 和 reg52.h 详解 51 单片机头文件 reg51.h 和 reg52.h 定义特殊功能寄存器(SFR)和位地址。reg51.h 针对标准 8051,reg52.h 针对增强型 8052,后者增加定时器 2 支持和额外 RAM。二者均含程序状态字、累加器、I/O 端口、定时器 / 计数器、中断、串口等相关寄存器定义。reg52.h 扩展定时器 2 相关寄存器。使用时依单片机型号选择头文件,可通过直接操作 SFR 及 sbit 定义的位名称开发程序。 阅读详情

相关推荐

关于Keil开发C51单片机的头文件“REGX52.H“问题。其他类型的warning C318:can‘t open fine头文件也可以按照这个步骤来

上面步骤是"REGX52.H"的详细步骤,其他头文件打不开可以在INC中搜索一下 根据以上方法找到相应的文件夹将其添加后即可!INC的路径是在你安装keil的文件中的C51中的。我用的是宏晶STC的入门板子,最近在学习写代码的时候也是遇到了这个问题,这个"REGX52.H"是只能用大写的,我们也必须用大写。第三步 :打开后新建,选择你的安装keil的路径,到C51中找到INC,在选择Atmel后okok。其他类型的板子也可以按照最下面的步骤试试;第二步,我们点开魔法棒后按箭头步骤点击。

XIAO_LUGG的博客 1万+

单片机头文件reg52.h中文注释详解

/*-------------------------------------------------------------------------- REG52.H Header file for generic 80C52 and 80C32 microcontroller. Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc. All rights reserved. -----------------------

南木的博客 1万+

JADX反编译必须用JDK1.8:原理、避坑与完整配置指南

JADX是一款广泛用于Android APK反编译的开源工具,其核心依赖于Java字节码解析能力。理解class文件主版本号(major version)与JVM兼容性关系,是掌握JADX运行机制的基础——JADX基于ASM 7.x构建,仅支持class文件版本≤52,即严格限定运行环境为JDK 1.8(Java 8)。这一约束并非兼容性缺陷,而是字节码规范层面的硬性要求,直接决定GUI闪退、UnsupportedClassVersionError等高频问题的根因。技术价值在于轻量、纯Java、无需Andr

weixin_34288121的博客 406

51单片机入门学习 第二天

学习笔记:若要使系统正常运行,必须确保单片机的最小系统稳定工作。51 单片机的最 小系统由以下几部分组成:晶振电路、复位电路、电源电路、下载电路

m0_56740689的博客 2837

无线温度实验

无线温度实验 声明:实验来自专业课作业,程序只粘贴了部分。供大家学习交流。 一 、训练目的 1.熟悉Keil uVision4环境及在该环境下用C语言编写的应用程序。 2.熟悉无线单片机的编程逻辑,采集温度传感器数据并将数据发送出去;在另一个无线单片机上实现对温度数据的接收和显示。 3.熟悉无线模块NRF24L01和温度传感器DS18B20驱动程序的编写。 4.以无线温度传感器应用实验为例,通过查找资料,设计实验方案,编写相应的程序,调试实验结果。将理论知识与实践相结合,在实验中发现问题并解决问题,提高自主

qq_45871695的博客 1067

CC32xx引脚复用配置详解:从电气特性到低功耗管理的嵌入式设计实践

在嵌入式系统与微控制器开发中,引脚复用(Pin Mux)是连接芯片内部丰富外设与外部物理世界的关键桥梁,其核心原理在于通过内部多路复用器将单一物理引脚映射到多个数字或模拟功能。理解其背后的电气特性,如驱动强度、上下拉电阻及输出类型,对于确保信号完整性、降低功耗和防止干扰至关重要。这项技术的工程价值在于,它允许工程师在有限的芯片封装引脚内实现最大的设计灵活性,从而优化PCB布局并降低成本。其应用场景广泛覆盖了从传感器数据采集、人机交互接口到无线通信模块控制等各类嵌入式设备。本文聚焦于TI SimpleLink

weixin_30444105的博客 497

Springboot 自定义身份证验证注解

定义一个注解@Ident 实现注解方法IdentValidated /** * 身份证号码验证 */ @Constraint(validatedBy = { IdentValidated.class }) @Documented @Retention(RetentionPolicy.RUNTIME) @Target({ElementType.ANNOTATION_TYPE, ElementTy...

qq_40127376的博客 3621

FPGA矩阵转置DDR3优化:分块、地址映射与缓存一致性实战

矩阵转置是典型的内存带宽敏感型计算,在FPGA上部署时,其性能瓶颈往往不在逻辑运算,而在于DDR3存储器的物理访问特性。DRAM采用Bank-Row-Column三级地址结构,导致非连续访存会引发频繁的行激活(tRCD)与预充电(tRP)开销,大幅降低有效带宽。因此,必须基于Page Size、burst长度和数据宽度进行数学驱动的分块设计,并构建物理地址感知的地址生成器,避免逻辑地址递增带来的隐式Row切换。同时,AXI写响应死锁、BRAM端口冲突、温度漂移导致的PHY时序偏移,以及CPU与FPGA间Ca

weixin_33896726的博客 414

Hibernate4注解简单例子

  今天经理叫我和搭档做一个文件版本管理工具的Demo给客户,ORM要求需要使用Hibernate4,使用注解开发,之前一直都是在玩Mybatis,hibernate都忘光了...所以重新写了个Hibernate的例子来学习注解。   废话不多说,切入正题。首先建个java项目,引入如下jar包:      其中大部分jar包来自hibernate-release-4.2.13.Fin...

weixin_30378311的博客 89

基于STM32与RC522的RFID刷卡读写方案实战

在嵌入式系统与物联网应用中,射频识别(RFID)技术凭借非接触式通信的便捷性,广泛应用于门禁考勤、智能储物与身份认证等场景。其中,13.56MHz的M1卡(Mifare Classic)与RC522读写模块是当前最普及的入门组合。RC522作为NXP推出的低功耗射频读写芯片,支持SPI、I2C、UART多种主机接口,而SPI模式因其全双工同步通信和高数据传输速率,成为搭配STM32等MCU时的首选方案。本方案以STM32F103RCT6为主控,通过标准外设库配置SPI1接口,驱动RC522完成寻卡、防冲突、

weixin_34043301的博客 453

SpringBoot+Vue考试报名系统毕业设计全流程实战解析

在软件工程实践中,前后端分离架构已成为企业级应用开发的主流模式。SpringBoot作为后端框架,通过自动配置与内置容器大幅简化了项目搭建流程;Vue则凭借组件化开发与响应式数据绑定,为前端交互提供了高效解决方案。两者结合不仅提升了开发效率,也明确了系统分层与职责边界。在考试报名场景中,系统承载着用户管理、在线报名、审核流转等核心业务,其设计需重点关注事务一致性、并发控制及接口安全。本文从工程实践角度,完整讲解基于SpringBoot与Vue的考试报名系统的设计与实现,涵盖数据库建模、JWT认证、乐观锁应用

weixin_33766805的博客 453

kubernetes部署

【代码】kubernetes部署。

2302_81091378的博客 30

STC15万年历设计与DS1302驱动全解析:从硬件接线到避坑指南

在单片机嵌入式开发中,实时时钟(RTC)是许多计时类项目的核心模块。其基本工作原理是通过外部晶振维持计时,即使主控断电也能依靠备用电池继续走时。以8051内核单片机为例,像STC15这类1T增强型MCU,虽然运算速度远高于传统51,但内部没有自带可掉电保持的RTC,因此工程上常外接DS1302芯片。DS1302采用三线串行接口,数据以BCD码格式存储,掌握其时序和地址映射是驱动成功的关键。基于此类方案,可以构建常见的电子万年历系统,并配合LCD1602显示时间与按键调时。从硬件接线、寄存器读写、状态机设计到

weixin_34387468的博客 365

k8s service

建立ingress代理的微服务。#建立ingress。

2302_81827774的博客 248

51单片机REGX52.H文件[可运行源码]

本文详细介绍了江科大51单片机中使用的REGX52.H头文件,该文件适用于通用的80C52和80C32微控制器。文件中定义了各种寄存器和位寄存器,包括P0、P1、P2、P3等端口寄存器,以及PSW、ACC、B等特殊功能寄存器。此外,还包含了8052扩展的寄存器定义,如T2CON、RCAP2L等。文件通过sfr和sbit关键字对寄存器和位进行了声明,为开发者提供了方便的硬件操作接口。这些定义对于51单片机的程序开发和硬件控制至关重要。

SystemVerilog实战:AXI Stream协议从零搭建(附完整代码解析)

本文详细介绍了如何使用SystemVerilog从零搭建AXI Stream协议,包括核心信号解析、接口设计、主从设备实现及验证环境构建。通过完整的代码示例和工程实践技巧,帮助开发者掌握AXI Stream在FPGA/ASIC设计中的高效数据传输方法,特别适合视频处理和网络数据传输等应用场景。

weixin_29207439的博客 359

Windows MPIO 设备特定模块(DSM)开发实战:基于 MSDSM 示例驱动构建自有多路径存储支持

本指南以仓库中的 [MPIO DSM Sample](https://link.gitcode.com/i/5339b9eca9ee61fb0b43cb0ac950aa3c)(即 Microsoft 设备特定模块 MSDSM 示例)为主体,系统讲解 Windows 多路径 I/O(MPIO)框架下设备特定模块(Device Specific Module,DSM)的作用、构建流程、INF 安装文件

gitblog_01055的博客 357

STM32嵌入式开发实战:如何用miniLZO压缩算法节省70%存储空间(附完整工程)

本文详细介绍了如何在STM32嵌入式开发中使用miniLZO无损压缩算法实现高达70%的存储空间节省。通过对比分析不同轻量级算法,重点讲解miniLZO的内存优化配置、分块压缩策略和完整工程实现,帮助开发者有效解决嵌入式系统中的存储瓶颈问题。

ss78901的博客 881

Redis Desktop Manager 快速上手:如何 3 步连接并管理 Redis 数据库

Redis Desktop Manager(RESP.app)是一款跨平台、开源的 Redis 图形化管理工具。它用图形界面替代命令行操作,让你用鼠标完成浏览键、编辑数据、执行命令。适合想直观查看 Redis 数据的开发者和运维人员。 ## 项目速览 它基于 Qt 和 QML 开发,支持 Windows、macOS 和 Linux。工具可连接本地与远程 Redis 实例,支持 SSL/TLS

gitblog_00862的博客 131

TIA博途选型工具Selection Tool的基本使用方法介绍

TIA博途选型工具Selection Tool的基本使用方法介绍

Robot_PLC_HMI_Automation 4209

031、速度前馈与加速度前馈

摘要: 本文通过追剪机调试案例,阐述了速度前馈和加速度前馈在运动控制中的关键作用。前馈不是高级技巧,而是解决动态响应问题的必要手段:速度前馈通过预测速度变化提前补偿,加速度前馈则针对惯量变化提供力矩补偿。实现时需注意信号平滑处理,避免噪声放大。前馈与PID分工明确,前馈承担主要动态响应,PID处理残余误差。调试应先调前馈再微调PID,前馈增益需计算而非仅凭参数调整,并允许适当残余误差。前馈作为开环补偿不会影响系统稳定性,但需配合平滑的指令生成器使用。(149字)

m0_50546716的博客 284

MPC5643L评估板硬件设计解析:电源、时钟与启动配置实战指南

在嵌入式系统开发中,微控制器(MCU)是核心,而评估板则是连接芯片数据手册与最终产品设计的桥梁。其工作原理在于通过一套经过验证的硬件参考设计,将复杂的芯片电源管理、时钟系统和启动逻辑具象化,为开发者提供可靠的验证平台。这项技术的核心价值在于能极大降低硬件设计风险,缩短开发周期,让工程师能聚焦于驱动开发和应用程序本身。在汽车电子和工业控制等高可靠性应用场景中,深入理解评估板的硬件设计,尤其是电源管理和时钟配置,是掌握复杂MCU硬件需求、进行自主产品设计的关键一步。本文以ASD433A评估板为例,深入剖析其针对

weixin_34344403的博客 320

uniapp [全端兼容] - 详细实现全局修改设置字体大小功能效果,统一修改页面字号字体大小,一键改变字号整个项目立即生效,大中小字号预设、老年人大字模式场景,uniApp全平台兼容控制页面字号大小

uni-app,h5移动端网页,微信小程序,支付宝小程序,Android安卓,苹果ios,app,nvue,修改字体大小,一键调整UniApp字体大小,实时改变不用刷新,动态设置字体大小,uniapp全局修改字体字号大小,如何控制全局字号,可调整显示的字体,全项目生效,老年人大字模式,改变所有页面的字体,全局设置字体大小,实现小中大的字体切换,设置改变全局字体大小功能,如何做到全平台兼容,H5APP实现全局字体大小调整,不兼容报错,用户设置字号,全局设置应用字体大小,大中小字体修改,页面设置page-me

🏆 前端领域优质创作者 1万+
上一篇: VScode环境兼容keil C251
下一篇: 单片机开发框架
程序猿Debug
博客等级 码龄12年 14粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

程序猿Debug

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

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

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

打赏作者

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

抵扣说明:

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

余额充值