干货 单片机编程实例大全
从一个详细的实例来知道单片机编程,你照着做就行了
我们要想使单片机工作,就需要编写程序,再将程序写入单片机,单片机在程序的控制下工作以完成指定的任务。没有程序的控制,单片机就无法工作。那么如何编写单片机程序呢?
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截止而不亮。
相关问答
想学习 单片机 ,有什么好的书籍推荐?五年之前那是在大学期间,距离现在大约有4年了吧,教我们单片机的老师要离我们而去了,因为她要去她的城市教书去了。怎么形容她呢?那是一个风度翩翩,很有才华...2...
单片机 考研参考书?学单片机一下书必看,选择自己最感兴趣的,这样学起来比较快,或者加入正规的系统学习班:《51单片机工程师是怎样炼成的:基于C语言+Proteus仿真》《单片机C语...
请问各位电信大神,电子信息工程专业小白如何才能成为 单片机 ...对于这个问题我今天就我自己是如何开始学单片机,如何开始上手,如何开始熟练这个过程给大家讲讲。先说说单片机,一般我们现在用的比较多的的MCS-51的...
单片机 如何连接华为云?你好,要将单片机连接到华为云,可以按照以下步骤进行操作:1.创建华为云账号并登录:前往华为云官方网站,注册一个账号并登录。2.创建物联网平台实例:在华...
单片机 学习书推荐?以下是几本推荐的学习单片机的书籍:1.《51单片机C语言程序设计与实践》:这本书详细介绍了51单片机的原理和应用,并提供了大量的实例和案例来帮助读者理解和...
推荐几本学习 单片机 的书籍?以下是几本推荐的学习单片机的书籍:1.《51单片机C语言程序设计与实践》:这本书详细介绍了51单片机的原理和应用,并提供了大量的实例和案例来帮助读者理解和掌...
51 单片机 开发板哪些牌子比较好?目前市面上比较好的51单片机开发板牌子有STC、AT89S52和Nuvoton。因为这几个品牌在生产51单片机的开发板方面有非常丰富的经验,并且产品质量有保证。STC的51单...
谁能介绍下几种 单片机 产品的应用实例?你的问题也太笼统了,单片机无论什么型号,都是起控制功能的作用,像人的大脑一样。通过搭接不同的功能外设构成不同的产品。单片机应用很广泛,生活中处处可见...
16位 单片机 与ARM嵌入式系统的问题如何解决?[回答]如果有单片机基础或感觉自己实力强就选后者,否则就从前者学起,然后自学后者.后者是前者的深入学习.ARM也是单片机的一种,属于32位的了,不过可以实...
单片机 串口通信怎么仿真[最佳回答]建议去我的领地5d6d的proteus论坛看看那里有很多单片机仿真实例,包括仿真图和源码搜5d6d和proteus2个关键词protues就是仿真软件...