产品概述

mp单片机 从一个详细的实例来知道单片机编程,你照着做就行了

小编 2024-10-09 产品概述 23 0

从一个详细的实例来知道单片机编程,你照着做就行了

我们要想使单片机工作,就需要编写程序,再将程序写入单片机,单片机在程序的控制下工作以完成指定的任务。没有程序的控制,单片机就无法工作。那么如何编写单片机程序呢?

1.从一个实例初步了解编程

上面这张图所示是一个边长为100m的正方形跑道,有一个人(称作甲)处于A点,如果要让甲到达B点,可以执行如下的程序:

起点 前进 50m

左转

前进 100m

左转

前进 50m

结束

甲逐条执行程序中的命令:先前进 50m,左转,然后前进100m,左转,再前进50m,结束,就可以到达B点。如果将上述程序改成:

起点 前进 50m

左转

前进 100m

左转

前进 50m

返回到 起点

结束

甲执行上述程序中的命令时会怎样呢?当他执行到第5行命令时,会到达B点,接着执行第6行命令,该命令使他又返回到起点(标号),甲于是又会执行第1行指令……由于执行到第6行的指令时又会返回执行第1行的命令,永远执行不到结束命令,所以,如果甲执行上述程序,就会不断在A、B点之间反复运动,不会停止。如果只要求甲在A、B点之间往返3次,上述程序应如何编写呢?读者可以思考一下,在后面的章节将会讲到这个问题。

2.分析一个单片机汇编语言程序

从前面的介绍初步了解了编程思想后,再来分析用到的汇编语言程序,程序如下:

MAIN: MOV P3,#0FFH

LOOP: MOV P1,P3

LJMP LOOP

END

为了更好地理解上面的程序,下面对照图所示的单片机应用电路来进行讲解。

第1 行指令“MAIN:MOV P3,#0FFH”的含义是将数据11111111(0FFH)送到P3 端口的8个寄存器,让P3端口的P3.0~P3.7这8个引脚全部为高电平。

“MAIN:”为标号,表示该行为主程序开始,这里也可省略,并不影响程序的运行;“MOV”为数据传送指令;“P3”表示单片机P3端口内部的8个寄存器;“#0FFH”中的“#”号表示它后面的“0FFH”是一个数据,而不是地址编号,“0FFH”是一个十六进制数,转换成二进制数就是11111111。

该行指令运行后,图中的单片机P3.0~P3.7这8个引脚内部的寄存器全部为高电平,相应的这8个引脚也为高电平。

第2行指令“LOOP:MOV P1,P3”的含义是将P3端口8个寄存器中的数据送到P1端口的8个寄存器中。

“LOOP:”为标号,用来标识指令“MOV P1,P3”,由于该标号后面的指令会被调用,所以不能省略。

由于第1行指令已经让P3端口8个寄存器内的数据全部为“1”,执行“MOV P1,P3 ”指令后,P1端口8个寄存器内的数据也全部为“1”,单片机的P1.0~P1.7这8个引脚全部为高电平,故发光二极管VD1~VD4全部不亮。

第 3 行指令“LJMP LOOP”的含义是返回执行标号LOOP所在行的指令。也就是说,当执行到该行指令后,又会返回去执行第2行指令“MOV P1,P3”,即不断将 P3 端口 8 个寄存器中的数据送到P1端口的8个寄存器中。

第4行指令“END”的含义是程序结束。由于执行到第 3 行指令时会自动返回执行第 2行指令,所以无法执行到第4行指令,即程序无法结束。

将上面的汇编语言程序汇编成机器语言程序并写入单片机后,在程序的控制下,单片机内部电路不断将P3端口8个寄存器中的数据送给P1端口的8个寄存器。

图示的单片机应用电路的工作过程分析如下。

在没有按下任何按键时,P3端口8个寄存器的数据都为“1”,所以P1端口8个寄存器的数据也为“1”,P1.0~P1.7这8个引脚都为高电平,发光二极管VD1~VD4全部不亮。

若按下S1按键,P3.2引脚变为低电平,P3.2端口内部寄存器的数据变为“0”,P3.7~P3.0端口的数据分别为11111011,在第2条指令的控制下,这些数据被送到P1端口,P1.7~P1.0端口的数据分别为11111011,其中P1.2端口的数据为“0”,P1.2引脚为低电平,于是它外接的发光二极管VD1有电流通过而发光。

如果松开S1按键,P3.2引脚变为高电平,P3.2端口的“1”送到P1.2端口,P1.2引脚为高电平,其外接的发光二极管VD1截止而不亮。

罗马仕20650电芯移动电源登场 体积小了很多

罗马仕最近推出了一款移动电源OM10,这款移动电源容量为10000mAh,但是外观一改罗马仕以往的风格,看起来非常小巧、便携。接下来就为大家带来这款移动电源的内部拆解。

一、罗马仕OM10移动电源外观

移动电源整体采用阻燃PC+ABS材质外壳,纯白色外观,正面印有品牌logo,右下角“10″表示移动电源的容量为10000mAh。

产品由罗马仕和七千猫联合出品。

这款移动电源周身比较圆润,上手体验很不错,在移动电源侧面有一颗电源按键,轻触可激活移动移动电源。

移动电源整体厚度约为一枚硬币的直径,属于比较轻便的类型。

充电接口方面,这款移动电源配备了两个USB-A接口、一个Type-C接口、一个Lightning接口以及一个MicroUSB接口,类型比较丰富,比较适用于目前的市场行情。

产品型号:OM10;容量:10000mAh;Type-C口、Lightning口以及MicroUSB口均支持5V/2.1A输入;两个输出接口分别支持5V/2.1A和5V/1A输出。

实测给华为mate9充电,功率约4.29W。

二、罗马仕OM10移动电源拆解

移动电源外壳通过卡扣连接,基本可以无损拆解,内部有三颗绿色圆柱形电池和一块PCB板,三颗电芯都贴有防震棉,PCB板与外壳通过螺钉固定。

外壳电量显示部分,使用了一款黑色半透明面板,将内部LED显示屏隐藏起来。

另外一半外壳内侧贴有防震棉。

三颗20650电芯,来自深圳卓能新能源股份有限公司;平台电压为3.6V;单颗电电池能量为12.06Wh,三颗电池即可组成10000mAh的移动电源。

PCB板与电池之间只用了一根导线连接,其中一个触点直接焊接在电池圆柱电池正极的镍带上,节省了一条导线。

PCB板正极焊点圆润饱满。

PCB板正面分布着USB-A接口、MicroUSB接口、贴片电感、LED显示屏以及一颗单片机。

单片机丝印7511AOK 1811 80920C,方案由深圳联芯微电子科技有限公司提供。

PCB板背面一览。

USB-A输出接口旁边有一颗思远半导体的芯片,型号MP5043。集成了开关充电管理模块、同步升压放电管理模块的移动电源管理等功能,另外,MP5043集成了串行码输出,方便MCU做外部扩展(如:数码管的应用)时,读取芯片的工作状态,节省整体方案的外围,精简了整体BOM。

深圳市思远半导体有限公司,是一家开发具有自主知识产权的数模混合信号集成电路设计企业,以为客户提供全方位、优质的电池管理系统级芯片解决方案为目标。作为移动电源SoC的持续耕耘者,已经累积稳定出货达到4亿颗!后续将不遗余力的推出更多优秀的SoC芯片,为客户提供更为简单可靠的方案!

思远半导体MP5043详细资料。

丝印XB8608A为电池保护IC,过充保护电压4.3V,过放保护电压2.4V,过流保护9A。左侧靠近Lightning有一个六脚芯片SY6128,超低静态待机电流(<15uA),支持Type C to Lightning线输入充电。

思远半导体SY6128详细资料。

拆解完毕。

充电头网拆解总结

在罗马仕这款移动电源中,采用了思远半导体MP5043电源管理芯片,具备双USB-A输出接口,最大输出5V2.1A,并且可实现电压自适应输出,即使用户插上两个大负荷设备,移动电源仍可以正常工作不会瞬间保护。电芯方面使用了国产的20650电芯,相比进口18650电芯来说,在实现相同功能的前提下,更具有成本优势。

相关问答

单片机 中LJMP和SJMP有啥区别啊,这两个程序中的LJMP和SJMP可以互换么?

LJMP是长转移,范围是在64K地址范围内。SJMP是短转移,转移地址范围在-128~127之间。程序中因为转移范围较小,两个指令都可互换LJMP是长转移,范围是在64K地址...

ljmp什么程序?

ljmp长转移指令的功能是:把指令码中的目标地址addr16装入程序计数器PC,使机器执行下一条指令时无条件转移到addr16处执行程序,不影响任何标志。51单片机指令...

rl 单片机 含义?

单片机RL指令,是左移指令(参加左移的是8个位,也就是一个字节)。是属于单片机的位移指令。RR指令:是右移指令(参加左移的是8个位,也就是一个字节)。相对...

单片机 汇编指令ACALL怎么用?

ALL是51汇编的子程序调用指令,其使用范围是±2K范围,超出这个范围的调用将会出错,这时可以使用LCALL即长调用语句。调用格式如下:ACALL标号(子程序名)例...

单片机 求大神指教ORG0000HLJMPMAINORG000BHLJMPTT0ORG1000HM...

[最佳回答]呵呵俺可以帮你解答(1)该程序的功能:就是利用定时计数器0定时,每当定时时间到,对P1.0求反,使P1.0产生连续不断的方波。(2)程序中三条SETB指令各起...

MP 430是用来干什么?

MSP430单片机:MP430单片机通讯我们准备使用MSP430F147单片机与神经元芯片3150通讯,单又可以使用嵌入式Modem和嵌入式以太网控制器和语音控制等CPU,我想问哪位...

【帮我看一道 单片机 的题,简单加法的.题目是:编写程序实现加...

[最佳回答]从这个程序可以看出你对51的内部结构不是很清楚.你的程序中ORG30HDW23H45HABH03H是将这几个数写在了程序存储器,也就是ROM里而下面你用的30H...

单片机 的中断源如何清零

中断请求源:(1)外部中断请求源:即外中断0和1,经由外部引脚引入的,在单片机上有两个引脚,名称为INT0、INT1,也就是P3.2、P3.3这两个引脚。在内部的T...

如何用51 单片机 的定时器中断功能输出一个8khz误差很小为1hz的方波?

频率为8khz,那么周期就应该为125us。选择模式1和2会有很大的误差,所以选择模式3。程序如下:ORG0000H;LJMPMAIN;ORG000BH;LJMPTL0INT;ORG001...

单片机 指令DJNZ的用法?

[回答]Sjmp实现原地跳转时只能用$,没听说过直接用绝对地址的数值来表示的。"D2"在源代码中是标号,但是编译器在将其翻译为机器代码时会自动计算出它的物理...

猜你喜欢