MCS-51单片机实验基础知识介绍
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
MCS-51单片机实验基础知识介绍
一、MCS-51单片机(51子系列) (2)
1. 基本结构 (2)
DIP封装管脚描述 (2)
存储器 (3)
输入/输出口 (4)
中断系统 (4)
定时器/计数器(T/C) (5)
2.寻址方式 (5)
3.指令系统(3大类共111条) (6)
指令系统介绍要点 (7)
助记符、操作数形式,对标志位的影响 (7)
数据传送(两个操作数、源操作数不变) (8)
数据传送(堆栈操作) (8)
数据传送(交换) (9)
算术运算 (9)
逻辑运算 (10)
控制程序转移 (10)
4.汇编语言程序编程 (11)
简单例程 (11)
伪指令 (12)
指令格式 (13)
程序基本格式 (13)
中断服务子程序格式 (14)
5.源程序编译→机器语言目标程序 (14)
二.EXP-51实验板 (15)
三. 接口方法 (16)
实验2 ADC/DAC (17)
实验3 键盘与数码显示接口 (17)
实验4 串行口通信 (18)
四. 单片机开发系统 (19)
1.单片机的开发 (19)
2.单片机开发工具、AEDK (19)
3.单片机开发系统组成 (20)
4.AEDK使用方法简介 (21)
5.程序编辑/调试主要步骤 (21)
一、MCS-51单片机(51子系列)
1.基本结构
DIP封装管脚描述
存储器
包括程序存储器(内/外64K)、内RAM和专用寄存器(SFR)
内部RAM128字节
工作寄存器区1-3,由程序状态字(PSW)的RS1/RS0两位定义。
专用寄存器(不包括PC)
专用寄存器复位状态:除Pn(n=0,3)寄存器和SP寄存器外,其它皆为00H
输入/输出口
中断系统
定时器/计数器(T/C)
2.寻址方式
3.指令系统(3大类共111条)
指令系统介绍要点
助记符、操作数形式,对标志位的影响
其中标志C(即CY)、OV、AC,均是程序状态字PSW中的位。
数据传送(两个操作数、源操作数不变)
数据传送(堆栈操作)
对DPTR的堆栈操作通过PUSH DPH 和PUSH DPL两条指令完成。
数据传送(交换)
算术运算
逻辑运算
控制程序转移
指令“JMP @A+DPTR”的转移地址=A+DPTR,一般情况下以DPTR之值作为基地址、A之值作为地址偏移量,实现程序的散转移。
4.汇编语言程序编程
简单例程
SAMPLE.ASM将存于外RAM的被加数+存于ROM的加数之和存到内RAM:
;汇编语言源程序SAMPLE.ASM
;标号: 助记符操作数;注释
ORG 0000H ;ORG是伪指令,不生成目标程序代码(机内码)
AJMP START
ORG 0050H
START:MOV R0,#30H
MOV DPTR,#0000H ;指针DPTR赋值
MOVX A,@DPTR ;取外RAM被加数
MOV R1,A
MOV DPTR,#00A0H
CLR A
MOVC A,@A+DPTR ;取ROM加数
ADD A,R1
MOV @R0,A ;和存30H、31H单元
INC R0
CLR A
MOV ACC.0,C ;上面ADD后会影响进位标志C
MOV @R0,A
SJMP$
END
SAMPLE.ASM经过编译后会生成几个中间文件,其中之一为如下的列表文件 SAMPLE.LST: 地址机内码标号: 助记符操作数;注释
ORG 0000H ;ORG是伪指令,不生成目标程序代码(机内码)
00000150 AJMP START
ORG 0050H
00507830 START: MOV R0,#30H
0052900000 MOV DPTR,#0000H ;指针DPTR赋值
0055E0 MOVX A,@DPTR ;取外RAM被加数
0056F9 MOV R1,A
00579000A0 MOV DPTR,#00A0H
005A E4 CLR A
005B93 MOVC A,@A+DPTR ;取ROM加数
005C29 ADD A,R1
005D F6 MOV @R0,A ;和存30H、31H单元
005E08 INC R0
005F E4 CLR A
006092E0 MOV ACC.0,C ;上面ADD后会影响进位标志C
0062F6 MOV @R0,A
006380FE SJMP $
END
程序存储器空间窗口显示了指令代码的存储状况
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 0000 01 50 FF FF FF FF FF FF FF FF FF FF FF FF FF FF 0010 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 0020 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 0030 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 0040 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 0050 78 30 90 00 00 E0 F9 90 00 A0 E4 93 29 F6 08 E4 0060 92 E0 F6 80 FE 00 FF 00 FF 48 D7 00 BF 04 FF 04 0070 FF 00 FF 00 7F 00 FE 00 FF 40 FF 01 FF 00 FF 00
上面的表格显示:
程序存储器地址0000H和0001H两个单元存的是指令“AJMP START”的机内码。从0050H 到0064H存的是从标号为“START”的指令“ MOV R0,#30H”开始,到伪指令“END”之前的指令“SJMP $”为止的所有指令的机内码。
伪指令