单片机编程之汇编语言基础-常用指令和程序模式
出处:电子发烧友 发布于:2023-07-24 15:32:28
单片机编程语言编写程序,即可使用单片机C语言编程,也可以使用单片机汇编语言。C语言编程具有模块化管理特性、可移植性高,适合编写较大的程序。但作为单片机程序设计,许多单片机ARM、很多新产品的单片机也是先需要经过汇编语言编译器之后才有C语言编辑器的。所以学好单片机汇编语言也是很重要的编程语言课程。
此外,单片机有通用型和专用型之分。专用型是厂家为固定程序专门开发的一种单片机,其程序在研发时已经写入,后期不可以修改。通用型单片机则是我们可以平常自主学习与编织程序的单片机,其程序需要自己写入,可以更改。单片机根据其基本操作处理位数不同,还可以分为:1位、4位、8位、16、32位单片机。
正文:
在此我们主要讲解美国ATMEL公司的89C 51单片机。
一、89C51单片机PDIP(双列直插式)封装引脚图:
其引脚功能如下:
P0口(p0.0—p0.7):为双向三态口,可以作为输入/输出口。但在实际应用中通常作为地址/数据总线口,即为低8位地址/数据总线分时复用。低8位地址在ALE信号的负跳变锁存到外部地址锁存器中,而高8位地址由P2口输出。
P1口(p1.0—p1.7):其每一位都能作为可编程的输入或输出线。
P2口(p2.0—p2.7):每一位也都可作为输入或输出线用,当扩展系统外设时,可作为扩展系统的地址总线高8位,与P0口一起组成16位地址总线。对89c51单片机来说,P2口一般只作为地址总线使用,而不作为I/O线直接与外设相连。
P3口(p3.0—p3.7):其为双功能口,作为功能使用时,其功能与P1口相同。当作为第二功能使用时,每一位功能如下表所示。
P3口第二功能
XTAL1(xtal2):外接 晶振一脚,分别接晶振的一端。
Gnd: 电源地。
Vcc:电源正级,接+5V。
PROG\ALE:地址锁存控制端
PSEN:片外程序 存储器读选通信号输出端,低电平有效。
EA\vpp:访问外部程序储存器控制信号,低电平有效。当EA为高电平时访问片内存储器,若超出范围则自动访问外部程序存储器。当EA为低电平时只访问外部程序存储器。
二. 常用指令及其格式介绍:
1、指令格式:
[标号:]操作码 [ 目的操作数][,操作源][;注释]
例如:LOOP:ADD A,#0FFH ;(A)←(A)+FFH
2、常用符号:
Ri和Rn:R表示工作寄存器,i表示1和0,n表示0~7。
rel:相对地址、地址偏移量,主要用于无条件相对短转移指令和条件转移指令。
#data:包含于指令中的8位立即数。
#data16:包含于指令中的16位立即数。
addr16:16位目的地址。
direct:直接寻址的地址。
bit:内部数据存储器RAM和特殊功能寄存器SFR中的可直接寻址位地址。
@:间接寻址寄存器或基地址寄存器的前缀。
(X):表示X中的内容。
((X)):表示由X寻址的单元中的内容,也就是(X)作地址,该地址的内容用((X))表示。
3、常用伪指令:
ORG:规定目标程序段或数据块的起始地址。 格式:ORG+空格+地址 例如:ORG 0000H
END:结束指令,放在程序的末尾,单独使用,一段程序只用。
DB(定义字节):从指定地址单元开始,定义若干字节存储单元并赋初始值。
4、常用寻址方式:
直接寻址: MOV A,30H
立即数寻址:MOV A,#20H
寄存器间接寻址:MOV A,@Ri(i=1,2)
基址加变址寄存器寻址:MOV A,@A+DPTR
寄存器寻址:MOV A,Rn(n=0—7)
5、指令大集合:
传送类指令:
传送类指令:
逻辑操作类指令:
控制转移类指令:
位操作类指令:
三、一般常用程序模式:
1、开始程序:ORG 0000H
JMP 0030H
ORG 0030H
…
…
2、软件延时子程序:YANSHI: MOV R7,#25
D1: MOV R6,#50
D2: MOV R5,#200
DJNZ R5,$
DJNZ R6,D2
DJNZ R7,D1
RET
若12M晶振则延时时长约为:25×50×200×2×10-6s,若为6M晶振则延时时长为:25×50×200×2×2×10-6s
3、硬件延时子程序:(1)查询方式:
YANSHI: MOV TMOD,#01H
MOV R0,#20
UP: MOV TH0,#3CH
MOV TL0,#0B0H
SETB TR0
JNB TF0,$
CLR TF0
DJNZ R0,UP
RET
此延时程序为20(R0)×50ms,即为一秒,若需要更长的延时只需要改变R0的值。
4、中断程序:外部定时器0中断
ORG 0000H
JMP 002CH
ORG 0003H
JMP ZHONGDUAN
ORG 002CH
MAIN: MOV TCON,#01H
MOV IP,#01H
MOV IE,#81H
…
…
ZHONGDUAN: PUSH A
PUSH PSW
SETB RS0
CLR RS1
…
…
POP PSW
POP A
RETI
若不需要对主程序的值进行保护则中断的子程序只需直接载入中断主程序需要执行的子程序便可。
上一篇: 51单片机抗干扰技术
下一篇: 工程师在选择PIC单片机时需要了解的一些特性
版权与免责声明
凡本网注明“出处:维库电子市场网”的所有作品,版权均属于维库电子市场网,转载请必须注明维库电子市场网,https://www.dzsc.com,违反者本网将追究相关法律责任。
本网转载并注明自其它出处的作品,目的在于传递更多信息,并不代表本网赞同其观点或证实其内容的真实性,不承担此类作品侵权行为的直接责任及连带责任。其他媒体、网站或个人从本网转载时,必须保留本网注明的作品出处,并自负版权等法律责任。
如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系,否则视为放弃相关权利。
- Microchip 发布PIC16F13145系列MCU,促进可定制逻辑的新发展2024/4/23 15:34:17
- 什么是MCU2024/3/25 17:05:40
- 了解GD32单片机和STM32单片机2024/3/13 14:17:13
- STM32F103单片机概述2024/3/13 14:13:33
- 什么是DSP?DSP的分类2024/1/22 16:38:45
- 电源技术
- 单片机与DSP
- 汽车电子/智能驾驶
- 动力电池/充电桩
- 物联网技术
- 传感技术
- 嵌入式系统/ARM技术
- 光电显示/LED照明
- 家电/消费电子
- 模拟技术
- 元器件应用
- 通信与网络
- EDA/PLD/PLC
- PCB技术
- 工业电子
- 安防监控
- 电子维修
- 电子测量
- 基础电子
- 其它
- 医疗电子
- RFID技术
- 编码器的工作原理及作用1
- 超强整理!PCB设计之电流与线宽的关系2
- 电脑蓝屏代码大全3
- 国标委发布《电动汽车安全要求第3部分:人员触电防护》第1号修改单4
- 三星(SAMSUNG)贴片电容规格对照表5
- 通俗易懂谈上拉电阻与下拉电阻6
- 电容单位7
- 继电器的工作原理以及驱动电路8
- 跟我学51单片机(三):单片机串口通信实例9
- 一种三极管开关电路设计10
- 电动汽车电子系统架构
- 如何轻松安全地管理您的电池组
- LVDS 收发器提升汽车照明性能的三种方式
- p 型半导体中电子自旋的“舞蹈”
- 电动车电池怎样修复_电动车电池修复方法
- 三种隐藏任务栏图标方法
- hd和bd哪个好?hd和bd的区别
- 用指针万用表检测三极管
- 排阻的详细说明
- WeEn - 助推“超级充电”,瑞能半导体给出了最优解