- 博客(18)
- 收藏
- 关注
原创 51-UART串口
UART全双工穿行通信,具有两个独立的接收缓存器SBUF, 逻辑上共用一个SBUF,串口有四种工作方式,方式1为最常见,下面以方式1举例。直接上代码,不懂就去手册查看对应位作用,这里定时器1使用的8bit重装载,不许手动重载。Tx:写SBUF->移位寄存器->Tx发送。Rx:移位寄存器->SBUF->读SBUF。图中是跟串口相关的寄存器,但其实只需要配置。串口选择烧录的那个端口,波特率9600。比如想要9600波特率,直接带入公式。SM0、SM1:指定工作方式。SMOD:比特率是否加倍。
2025-05-02 17:55:19
305
原创 51-中断系统
以定时器0举例,需要打开ET0, EA ,这样中断请求才可以发送到内核,有些外设比如UART还需要再SCON中打开REN接收使能位。控制外设中断使能,比如定时器ET0 = 1,则允许定时器0溢出后向内核发送中断请求。则是总中断,控制中断请求通往内核的最后一扇大门,好比川流入海,入海前的闸口。IP寄存器中设置优先级的低位,IPH寄存器设置优先级的高位,11优先级最高。如图,左侧是外设,右侧是内核。定时器举例,其他类似。
2025-05-02 11:43:14
228
原创 51-定时器使用
51单片机的IO口大多是准双向模式,因此略过点灯大师步骤,顺带说一句,有些STC89C52的中文手册描述有问题,推荐去立创找到STC89C52RC的PDF手册。
2025-05-02 10:42:26
538
原创 Keil5开发环境搭建
本文使用开发板为STC89C52RC,开发工具为Keil5,Keil5安装教程网上搜一个即可,本文重在如何使用这块板子的外设功能。
2025-04-30 21:11:50
304
原创 linux学习记录_day3
概念:宏定义的本质就是给常量起一个其他的名字,当使用这个常量的时候,就可以使用这个名字去替代。宏定义的名字称之为:宏名,宏定义的值称之为:宏值。宏名也是一个标识符,需要符合标识符的定义规则,宏名全部用的大写字母宏定义格式:#define 宏名 宏值注意:1.宏定义是一个简单的,原样替换2.宏替换发生在预处理阶段demo:int main()//20 + 10 *2 原样替换return 0;
2024-05-30 19:52:04
871
原创 Leetcode66. 加一
这道题要考虑几种情况,1.若最后一位数字小于9,那么只需给其加1就可返回数组2.若最后一位为9,要考虑进位问题,前一位+1,并继续考虑是否上一位是否为9。此外若数组全为9还需要考虑数组大小溢出问题,需要开辟新的数组,但此时只需给新数组的首位置1即可。你可以假设除了整数 0 之外,这个整数不会以零开头。最高位数字存放在数组的首位, 数组中每个元素只存储。数组所表示的非负整数,在该数的基础上加一。输入数组表示数字 4321。输入数组表示数字 123。
2024-05-30 12:59:21
354
原创 Leetcode28. 找出字符串第一个匹配项的下标
"leeto" 没有在 "leetcode" 中出现,所以返回 -1。字符串的第一个匹配项的下标(下标从 0 开始)。第一个匹配项的下标是 0 ,所以返回 0。"sad" 在下标 0 和 6 处匹配。
2024-05-29 13:25:13
131
原创 LeetCode27. 移除元素
由于题目说不在意有效值k之外的数字,故可通过快慢指针,由快指针检索遍历,将不等于val的值交给慢指针存放到数组中。你的函数应该返回 k = 5,并且 nums 中的前五个元素为 0,0,1,3,4。你在返回的 k 个元素之外留下了什么并不重要(因此它们并不计入评测)。你在返回的 k 个元素之外留下了什么并不重要(因此它们并不计入评测)。你的函数函数应该返回 k = 2, 并且 nums。元素的顺序可能发生改变。注意这五个元素可以任意顺序返回。中的前两个元素均为 2。
2024-05-28 21:22:04
307
原创 LeetCode26. 删除有序数组中的重复项
首先看题干,非严格递增说明在元素递增中,有的元素可能不止一位,现在要求每个元素出现一遍,并且返回元素个数,这时可以使用快慢双指针进行检索删除,先排除numSize为空的情况,之后快慢指针由第二个元素开始出发,快指针每次循环地址加1向后索引,边界为小于numSize,当快指针指向元素与上一个元素不同时,说明此时指向递增元素,将该元素赋值给慢指针,慢指针向前走一步,继续等待快指针检索到递增元素,当检索完毕,慢指针的索引就是该数组中不重复元素的个数。,返回删除后数组的新长度。删除重复出现的元素,使每个元素。
2024-05-28 20:46:39
335
原创 计数问题
试计算在区间 1 到 n 的所有整数中,数字 x(0 ≤ x ≤ 9) 共出现了多少次?例如,在 1 到 11 中,即在 1,2,3,4,5,6,7,8,9,10,11 中,数字 1 出现了 4 次。2 个整数 n,x ,之间用一个空格隔开。1 个整数,表示 x 出现的次数。输入 11 1。输出 4。
2023-06-24 13:41:36
140
原创 c语言常量和字符串
此外,C语言中还有一些特殊的字符序列,称为转义字符,用于表示一些特殊字符或控制字符,如换行符(‘\n’)、制表符(‘\t’)、双引号(‘"’)、反斜杠(‘’)等。宏常量是在预处理阶段进行文本替换的,它们不会占用内存空间,而是直接替换为其对应的值。符号常量是通过宏定义来创建的具有常量值的符号。在c语言中,常量是不可改变的值,其值在程序执行期间保持不变。上述代码中,我们定义了一个名为Weekdays的枚举类型,它包含了一组星期的枚举常量。枚举常量的默认值从0开始递增,可以通过指定初始值来自定义枚举常量的值。
2023-06-24 12:44:40
1859
1
原创 c语言基础入门
本文将介绍C语言的发展史、第一个C语言案例、C语言的数据类型、变量类型和常量类型,以及作用域和生命周期的概念,并穿插一些代码案例来帮助理解。
2023-06-24 11:49:15
160
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人