
单片机
liming0931
不积小流,无以成江海
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
驱动库分享整理(1)——用于单片机中的小巧多功能按键支持库
按键在嵌入式开发中,是比较重要的,也是常见的外设,因此,很有必要学习,同事也要掌握编写基础的按摩驱动,通常情况下,最基本的情况下,都是使用状态机的框架来出来,因为尽管硬件电路上有滤波电路,但还是要软件滤波的。(软件滤波很多采集系统中都是用到的)。在学习过程中,可以自己尝试编写简单的单机,组合按键单机等,锻炼思维。当然网上有很多的按键驱动库,值得收藏,其中思想是比较好的,可以学习其思路,同事也可以在了解功能后,移植到自己的项目中。我这里就自己网上看到的,公众号分享的一些文章,特意整理一下,算是一个收集,原创 2021-02-13 11:22:58 · 2253 阅读 · 3 评论 -
简单的51单片机多任务操作系统(C51)
在网上看到这段代码,所以自己尝试了,可以跑起来,但是没有精确的定时功能,仅仅是任务的调度而已。数组中是11,而不是12。这里写错了。。。/*简单的多任务操作系统其实只有个任务调度切换,把说它是OS有点牵强,但它对于一些简单的开发应用来说,简单也许就是最好的.尽情的扩展它吧.别忘了把你的成果分享给大家.这是一个最简单的OS,一切以运行效率为重,经测试,切换一次任务仅20...原创 2018-08-12 09:41:42 · 19477 阅读 · 8 评论 -
51单片机PC程序计数器
PC是一个16位的计数器。用于存放和指示下一条要执行的指令的地址。寻址范围达64KB。PC有自动加1功能,以实现程序的顺序执行。PC没有地址,是不可寻址的,无法用指令对它进行读写。但在执行转移、调用、返回等指令时能自动改变其内容,以改变程序的执行顺序。 16bit,这是重点。...原创 2018-08-04 12:16:41 · 10065 阅读 · 0 评论 -
51单片机汇编程序实例二
ORG 0000H MOV 20H, #9 MOV DPTR, #BCDTAB MOV A, 20H MOVC A, @A+DPTR MOV 21H, A ANL A, #0fh ;逻辑与“按位逻辑与” SJMP $BCDTAB: DB 00H, 01H, 04H, 09H, 16H, 25HDB 36H, 49H, 64H, 81H END ...原创 2018-08-04 12:13:19 · 1576 阅读 · 0 评论 -
51单片机汇编程序——查表
;利用MOVCA,@A+PC指令编写一查平方表程序,;将片内30H~31H内的数查平方后送入40H~49H单元,;30H~39H预先存入数据为1,3,5,7,9,2,4,6,8,10. org 0000h mov 30h, #1 mov 31h, #2 mov 32h, #3 mov 33h, #4 mov 34h, #5 mov 35h, #6 mov 36h, #7 m...原创 2018-08-04 12:11:25 · 8065 阅读 · 0 评论 -
51单片机汇编程序实例一
;已知程序执行前有A=02H,SP=52H,(51H)=FFH,(52H)=aaH. ORG 0000H MOV A, #02H MOV 51H, #0xFF MOV 52H, #0xaa MOV SP, #52H POP DPH ;SP=51H POP DPL ;SP=50H mov dpl, #0xfe mov dph, #0x21 inc dptr in...原创 2018-08-04 12:09:34 · 11854 阅读 · 4 评论 -
51单片机外部中断INT0实例(汇编程序)
;普中51开发板;单片机的P3.2(INT0)引脚与按键K3脚连接;用汇编语言实现:按一次K1外部中断INT0响应一次,LED显示值加1(十进制),;前提是共阴数码LED第一位,需要设定,由P0口控制。 ORG 0000H LJMP START ORG 0003H LJMP INTT0 ORG 0600HSTART: SETB EA SETB EX0 ; 打开外...原创 2018-08-04 12:07:38 · 30923 阅读 · 3 评论 -
52单片机中定时/计数器2的研究 .
毕业设计要用到外部中断和定时器,定时器和外部中断都要三个,当时晕,定时器可以弄三个,但是外部中断不好弄。而且外部中断是下降沿中断的那种而且三个中断信号还有那种不是特别固定的关系,想了想中断扩展,想了很久也没想出个法子来。后来根据实际情况,找到52定时器2可以用作外部中断使用,特别是下降沿中断的那种。因为我做的东西刚好是中断后开始定时的那种,因此定时和中断也不冲突。 网上关于讲52单片转载 2013-12-27 14:53:50 · 2508 阅读 · 0 评论 -
单片机的调试的快捷方式
现在的单片机编程大多采用C语言,而写好语言后肯定有bug,不可能十全十美,而单片机往往有何外部硬件相连,有的可以在断电的时候可以调试,比如arm的j-link等,但是如果需要根据外部信息来调试的,那么调试起来比较麻烦,比如:根据某一个引脚的采样的电压的高低来动作,听说是可以调试的,但是需要熟悉开发环境keil、iar的调试功能,但是如果项目急的话,有没有时间去学习,下面的方法不失为一个快的捷径。原创 2013-01-28 13:25:16 · 891 阅读 · 0 评论 -
细节决定成败
慎用标志位(本人单片机菜鸟,高手请高抬贵手,欢迎指点!~)这里说的是合理谨慎的运用标志位,否则很容易出现错误,也很难debug。今天工作的时候,修改定时器定时功能的时候,得出的经验,这里说的与具体的单片机无关,是个通用的想法。以我今天修改的为例:PIC单片机的两个I/O引脚控制着两个LED灯(分别为蓝灯和红灯,这里以LED代替,避免涉及公司里的内容)的亮和灭。要求是蓝灯每5原创 2012-12-26 12:32:12 · 621 阅读 · 0 评论 -
51单片机查表指令
51单片机具有两条查表指令,用于从 ROM 中读出预存的数据: MOVC A, @A + PC MOVC A, @A + DPTR 问题:在“MOVC A,@A+DPTR”和“MOVC A,@A+PC”中,分别使用了DPTR和PC作基址,请问这两个基址代表什么地址?使用中有何不同? 答案: 使用@A+DPTR基址变址寻址时,DPTR为常数且是表格的首地址,A...转载 2018-08-04 12:17:19 · 12907 阅读 · 0 评论 -
51多任务系统,可以运行
根据网上的资料,采用定时器2自动装载模式。每10ms进一次中断。图中可以看出,调用rtos_wait(100)后,PC=PC+3=0x0163,SP=SP+2;把PC值压栈,可以参考LCALL addr16这条汇编指令PC是16位,所以需要两个8位的空间,因此SP需要加2。/*使用keil4可运行8个任务任务从rtos_wait()处切换,在定时时间到后从定...原创 2018-08-14 13:44:23 · 690 阅读 · 2 评论 -
掉电保护电路及使用方法
这个图是哔哩哔哩上面up主(Bernice_坚果丁)提供的,感觉不错,自己曾经也用过掉电保护,只是功能电路不一样,因此记录学习一下。1、smjb是TVS瞬态抑制二极管,作用如下:TVS(Transient Voltage Suppressors)二极管,即瞬态电压抑制器,又称雪崩击穿二极管,是采用半导体工艺制成的单个PN结或多个PN结集成的器件。TVS二极管有单向与双向之分,单向TVS...原创 2019-10-05 19:37:35 · 9128 阅读 · 1 评论 -
单片机开发之C语言编程基本规范
为了提高源程序的质量和可维护性,从而最终提高软件产品生产力,特编写此规范。本标准规定了程序设计人员进行程序设计时必须遵循的规范。本规范主要针对单片机编程语言和08编译器而言,包括排版、注释、命名、变量使用、代码可测性、程序效率、质量保证等内容。1.基本规则格式清晰、注释简明扼要、命名规范易懂、函数模块化、程序易读易维护、功能准确实现、代码空间效率和时间效率高、适度的可扩展性、单片机编...原创 2019-10-03 18:31:53 · 443 阅读 · 0 评论 -
主流单片机指令周期介绍
STM32单片机有三级流水线,指令周期不定的,arm给出的是1.25MIPS/Mhz,一个平均执行速度就是1Mhz的频率,每秒钟可以执行1.25M指令。72M,那么就是72*1.25MSTM32单片机多为单周期指令AVR单片机51是CISC结构的单片机,而AVR是RISC结构的,RISC结构基本上是一个时钟周期一条指令。avr一个时钟周期(晶振周期)执行一条指令,相对来说...转载 2019-09-17 18:14:53 · 2049 阅读 · 0 评论 -
CH340电路设计
版权声明:技术需要共享,但同时需要尊重原创者的辛劳,转载引用请注明出处。 https://blog.csdn.net/JAZZSOLDIER/article/details/66967735 最近选用USB转串口芯片进行开发调试,在调研了各主流芯片的之后,觉得 CH340 系列的性价比很高,而且技...转载 2018-09-21 10:43:46 · 6200 阅读 · 0 评论 -
USB转串口CH340接线方法
https://blog.csdn.net/wangjiaweiwei/article/details/49612207 USB转串口模块可以使用5V电压供电,需要将跳帽按下图安装。 USB转串口模块可以使用3.3V电压供电,需要将跳帽按下图安装。 可...转载 2018-09-21 10:42:19 · 44196 阅读 · 2 评论 -
关于计算机与MCU通信及MAX232、CH340T与PL2303的区别
原理:单片机的TXD、RXD是TTL电平,所以你得万变不离其宗的将其它信号转成TTL电平,只有这样给单片机下载程序才有可能成功!其中CH340、PL2303等芯片是直接将USB信号转换为TTL电平或者TTL电平转换为USB信号,而MAX232等芯片是将TTL转换为RS232信号或者将RS232信号转换为TTL.MAX232:外围电路简单,但是占用pcb面积大,不美观PL2303:水货多不稳定,...转载 2018-09-24 11:12:51 · 528 阅读 · 0 评论 -
单片机捕捉功能
输入捕捉:具有此功能的一个管脚,定时器在内部时钟的作用下在运行,此时管脚来了个中断,假如上升沿吧。在中断的作用下,定时器停止工作,此时可以读出定时器的数值,读出后再开启定时器,等待下次中断,再读取一次定时器数值,二次相减,就可求出二次中断的间隔时间输出比较:有一寄存器先存放你要定时的数,例如50.定时器在内部时钟下有0开始慢慢向上加,没加一次都会和那个寄存器比较,当等于那个寄存器值时 如50,...原创 2018-08-20 22:20:30 · 5946 阅读 · 0 评论 -
使用KEIL C51实现的简单合作式多任务操作系统内核(单片机实现版本)
基于网上网友的代码,自己在单片机上实现, 特此记录分享之。基于https://blog.csdn.net/yyx112358/article/details/78877523//使用KEIL C51实现的简单合作式多任务操作系统内核#include <regx52.H>#include <INTRINS.H>typedef unsigned char u...原创 2018-08-12 10:56:54 · 1266 阅读 · 0 评论 -
PWM调速原理
摘自:http://hi.baidu.com/caiag/item/6516cee06a36b612595dd874本文详细阐述pwm的原理: PWM(Pulse Width Modulation)控制——脉冲宽度调制技术,通过对一系列脉冲的宽度进行调制,来等效地获得所需要波形(含形状和幅值)。PWM控制技术在逆变电路中应用最广,应用的逆变电路绝大部分是PWM型,PWM控制技术正是转载 2012-12-09 21:10:53 · 7690 阅读 · 1 评论 -
Configuration Bits 设置
Configuration Bits 设置 编写程序,必须要对环境条件进行设置(Configuration Bits),比如WDT看门狗、晶振类型、代码保护、低压编程等等,每一种芯片的项目不一样,有多有少。正确设置非常重要,否则容易误烧芯片造成损失。 开发工具编译器一般都可以采用菜单方式设置,在编译程序时将设置字一并完成,烧写芯片同时完成CONFIG的烧入。然而,有时候编译的HEX转载 2012-11-28 16:14:04 · 1867 阅读 · 0 评论 -
单片机与嵌入式系统中C语言的位运算小记
好久没写博客了,实在因为工作了,没空,昨天编了个PIC的项目,对C语言里的位运算还是蛮有感悟的,特此记录一下。譬如说,在程序中定义了一个char类型的变量,purge_short_enable_flag,//bit-- start short circuit circle timing//bit--short circuit enable//bit--purge H2原创 2012-11-03 11:23:13 · 1344 阅读 · 1 评论 -
串口扩展方案总结
摘自:http://blog.csdn.net/dllbl/article/details/3712941行接口设备凭借其控制灵活、接口简单、占用系统资源少等优点,被广泛应用于工业控制、家庭安防、GPS卫星定位导航以及水、电、气表的抄表等领域。 在这些嵌入式系统中,可能会有很多从设备都通过串行接口与主机进行通信,如GPRS MODEM、红外发送和接收模块、RS485总线接口等。这使得开发 人员转载 2011-11-11 17:52:26 · 5894 阅读 · 0 评论 -
C51 bit和sbit的区别
摘自: http://blog.csdn.net/dllbl/article/details/3839262 bit和sbit都是C51扩展的变量类型。 bit和int char之类的差不多,只不过char=8位, bit=1位而已。都是变量,编译器在编译过程中分配地址。除非你指定,否则这个地址是随机的。这个地址是整个可寻址空间,RAM+FLASH+扩展空间。bit只有0和1两种值转载 2011-11-11 17:51:23 · 3282 阅读 · 0 评论 -
51单片机复位电路的设计
http://blog.163.com/dsp_lnint/blog/static/103167434200991210516407/ 单片机在可靠的复位之后,才会从0000H地址开始有序的执行应用程序。同时,复位电路也是容易受到外部噪 声干扰的敏感部分之一。因此,复位电路应该具有两个主要的功能: 1. 必须保证系统可靠的进行复位; 2. 必须具有一定的抗干扰的转载 2011-10-23 20:10:47 · 4053 阅读 · 0 评论 -
可重入函数与不可重入函数(转)
http://www.cnblogs.com/luvi/archive/2008/05/09/1190493.htmlhttp://www.keil.com/support/man/docs/c51/c51_le_reentrantfuncs.htm主要用于多任务环境中,一个可重入的函数简单来说就是可以被中断的函数,也就是说,可以在这个函数执行的任何时刻中断它,转入OS调度下去转载 2011-11-02 21:00:18 · 815 阅读 · 0 评论 -
C51:通用、存储器指针
http://www.8951.com/book/1jiaoUV13.htmC51编译器支持用星号(*)进行指针声明。你可以用指针完成在标准C语言中有的所有操作。另外,由于8051及其派生系列所具有的独特结构,C51编译器支持两种不同类型的指针:存储器指针和通用指针。通用指针通用或未定型的指针的声明和标准C语言中一样。如:char *s; /* string原创 2011-11-02 21:16:22 · 2737 阅读 · 0 评论 -
C51之局部变量和全局变量小记
若在C51中定义一个全局变量,编译器将在RAM中为该变量指定一个专用地址,在C程序中给变量赋的值将存入这个专用地址中,程序操作该变量是,首先从专用地址中取出存放的值,然后再进行计算。全局变量被定义在内存中的专门地址上,存储位置固定。对于频繁存取的重要变量但可以采用全局变量以减少代码的长度;由于全局变量总是占用内存,如果过多,或者把程序处理和计算中的一些中间变量也定义为全局变量,将大大消耗内存空间,原创 2011-11-02 20:33:38 · 7722 阅读 · 0 评论 -
C51存储器类型 MCS-51单片机物理存储器区域
1、 data区空间小,所以只有频繁用到或对运算速度要求很高的变量才放到data区内,比如for循环中的计数值。2、 data区内最好放局部变量。因为局部变量的空间是可以覆盖的(某个函数的局部变量空间在退出该函数是就释放,由别的函数的局部变量覆盖),可以提高内存利用率。当然静态局部变量除外,其内存使用方式与全局变量相同;3、 确保你的程序中没有未调用的函数。在Keil C里遇转载 2011-11-02 20:15:58 · 4688 阅读 · 0 评论 -
C51与汇编语言混合编程之一
1、函数内部混合编程若想在C语言函数内部使用汇编语言,应使用以下Cx51编译器控制命令:#pragma asm;;; Assembly code#pragma endasm? 功能作用:asm和endasm命令用于将其标记的汇编程序合并到.SRC文件中。这个带有asm和endasm块标记的源程序可看作是在线嵌入式汇编程序。从这点来说,此命令有些类似于#def转载 2011-11-03 13:17:30 · 3490 阅读 · 0 评论 -
KEIL C51高级编程之二
http://bbs.ednchina.com/BLOG_ARTICLE_42962.HTM 第一节 绝对地址访问C51提供了三种访问绝对地址的方法:1. 绝对宏:在程序中,用“#include”即可使用其中定义的宏来访问绝对地址,包括:CBYTE、XBYTE、PWORD、DBYTE、CWORD、XWORD、PBYTE、DWORD具体使用可看一看absa转载 2011-11-03 13:26:27 · 2553 阅读 · 0 评论 -
LED数码引脚图
七段LED数码管由七个条状和一个点状发光二极管管芯制成,叫七段数码管如下图所示,根据其结构的不同,可分为共阳极数码管和共阴极数码管两种。LED数码管中各段发光二极管的伏安特性和普通二极管类似,只是正向压降较大,正向电阻也较大。在一定范围内,其正向电流与发光亮度成正比。由于常规的数码管起辉电流只有1~2 mA,最大极限电流也只有10~30 mA,所以它的输入端在5 V电源或高于TTL高电平(3.5转载 2011-11-12 21:27:42 · 14000 阅读 · 0 评论 -
单片机心得
摘自http://blog.csdn.net/zhangluli/article/details/5122984相信很多爱好电子的朋友,对单片机这个词应该都不会陌生了吧。不过有些朋友可能只听说他叫单片机,他的全称是什么也许并不太清楚,更不用说他的英文全称和简称了。单片机是一块在集成电路芯片上集成了一台有一定规模的微型计算机。简称为:单片微型计算机或单片机(Single Chip Compute转载 2011-12-07 10:37:42 · 1594 阅读 · 0 评论 -
矩阵键盘的编程方法——读取键值
矩阵键盘的使用在单品机的学习当中十分广泛,可是对于许多新手,包括本人有时也是搞不明白,昨天晚上和今天早上的思考和同行们的讨论,终于有了点头绪,所以想记录下读取键盘的思路。在单片机的学习版中,矩阵键盘通常如下图设计: 下面就以按下S16键来讲解其思路:首先:P3的高位P3.4~P3.7输出为0,低位P3.0~P3.3输出为1;即P3=0x0F,当按下S16键后(有消抖动过程)原创 2012-02-24 10:56:29 · 19710 阅读 · 1 评论 -
intrins.h 简介
intrins.h 在C51单片机编程中,头文件INTRINS.H的函数使用起来,就会让你像在用汇编时一样简便.内部函数 描述 _crol_ 字符循环左移 _cror_ 字符循环右移 _irol_ 整数循环左移 _iror_ 整数循环右移 _lrol_ 长整数循环左移 _lror_ 长整数循环右移 _nop_ 空操作8051转载 2012-10-03 12:03:32 · 7632 阅读 · 0 评论 -
c8051f交叉开关
交叉开关的要点1、若设置P0、P1、P2、P3口为输出口时,交叉开关必须使能2、交叉开关寄存器必须在任何数字外设使能之前配置3、典型地,交叉开关寄存器在reset之后被系统配置,之后就不用去关心4、交叉开关设置设备的引脚5、每个交叉开关设置在器件的引脚都将是唯一的。如果在交叉开关中启用或禁用外设,引脚将改变。翻译 2012-05-03 12:27:34 · 2971 阅读 · 0 评论 -
8052所能测的最高频率
下面一段话是在网上摘录下来的,开了之后终于解开了我的频率计为何不能准确的测480KHz以上的信号了。The 8052 microcontroller has internal timers (T0, T1, and T2 if you are using an 8052), but they are limited to the speed of your microcontroller, w原创 2012-05-15 11:56:51 · 1031 阅读 · 0 评论 -
AT89S52之(定时器2)Timer2
在博客园里已经发布了。。。这里在发一下。。哈哈!~定时计数器2是一个16位定时/计数器,通过T2CON寄存器的C/T2位可以选择定时还是计数功能。定时器2 有3种操作模式:捕获、自动重新装载(递增或递减计数)和波特率发生器,这3种模式由T2CON 中的位进行选择,具体的选择方式见表1。定时器2有两个8为寄存器:TH2和TL2。在定时模式状态下,TL2寄存器每一个机器周期加1,。由于52单片翻译 2012-04-27 16:17:30 · 7038 阅读 · 0 评论 -
8052计数器(定时器0和计数器1)
之前由于同学的一个小实验,需要用到频率计,所以自己想搞一个出来,于是网上找了很多资料,简单的有用8052单片机的定时器和计数器的结合来测其信号的频率,还有的是c8051f的捕捉功能,想来想去,还是想用用自己熟悉的8052的计数器功能,毕竟平时都用的是定时器功能,很少用到计数器功能,以便更加深入的运用8052,以后再学习C8051F。搞了好几天,时钟没有结果,计数功能倒是有了,但是不能在1s原创 2012-05-14 10:49:21 · 4543 阅读 · 0 评论