单片机——程序的基本结构
第3章 STC15F2K60S2单片机的基本结构

D5 F0
D4 D3 D2 RS1 RS0 OV
D1 F1
D0 P
AC(PSW.6):辅助进位标志位 当执行加/减法指令时,如果低四位数向高 四位数产生进/借位,则AC置“1”,否则清 零。
10:15:52
11/109
位号 D7 D6 符号 CY AC
D5 F0
D4 D3 D2 RS1 RS0 OV
10:15:52
12/109
位号 D7 D6 符号 CY AC
D5 F0
D4 D3 D2 RS1 RS0 OV
D1 F1
D0 P
ቤተ መጻሕፍቲ ባይዱ
RS1,RS0(PSW.4~PSW.3):工作寄存 器组选择控制位,其详细介绍见后续内容。 OV(PSW.2):溢出标志位。指示运算过 程中是否发生了溢出,在执行指令过程中 自动形成。
10:15:52
3/109
以目前市场上常见的8051内核单片机STC15F2K60S2为例, 说明单片机的内部结构。STC12C5A60S2单片机主要集成 了以下资源:
增强型8051内核,单时钟机器周期,速度比传统8051内核单片机 快8~12倍 60KB Flash程序存储器;1KB数据Flash;2048字节的SRAM 3个16位可自动重装载的定时/计数器(T0、T1、T2) 可编程时钟输出功能 至多42根I/O口线 2个全双工异步串行口(UART) 1个高速同步通信端口(SPI) 8通道10位ADC 3通道PWM/可编程计数器阵列/捕获/比较单元 内部高可靠上电复位电路和硬件看门狗 内部集成高精度R/C时钟,常温工作时,可以省去外部晶振电路。
10:15:52
15/109
(2)控制器 控制器是CPU的大脑中枢,包括定时控 制逻辑、指令寄存器、译码器、地址指针 DPTR 及 程 序 计 数 器 PC 、 堆 栈 指 针 SP 、 RAM地址寄存器、16位地址缓冲器等。
51单片机填空题

【1】二、填空题(每空1分,共30分)1.一个完整的微机系统由硬件和软件两大部分组成。
2.8051 的引脚RST是IN脚(IN脚还是OUT脚),当其端出现高电平时,8051进入复位状态。
8051一直维持这个值,直到RST脚收到低电平,8051才脱离复位状态,进入程序运行状态,从ROM 0000 H单元开始取指令并翻译和执行。
3.半导体存储器分成两大类:RAM ROM,其中RAM 具有易失性,常用于存储临时性数据。
4.求十进制数-102的补码(以2位16进制数表示),该补码为9AH 。
5.PC存放_CPU将要执行的指令所在的ROM单元的地址,具有自动加1特性。
在8051中决定程序执行顺序的是PC还是DPTR PC ?它是16位?不是(是,不是)SFG?6.123= 01010010 B= 52 H。
7.8051内部有 4 个并行口,P0口直接作输出口时,必须外接上拉电阻;并行口作输入口时,必须先将口锁存器置1 ,才能读入外设的状态。
8.MCS-51的堆栈只可设置在内RAM低128B区,其最大容量为128B ,存取数据的原则是先进后出。
堆栈寄存器SP是8 位寄存器,存放堆栈栈顶的地址。
9.中断处理的全过程分为以下3个段:中断请求、中断响应、中断服务。
10.定时和计数都是对脉冲进行计数,定时与计数的区别是定时是对周期已知的脉冲计数;计数是对周期未知的脉冲计数【2】。
一、填空题(每空格1分,共10分)1.MCS—51布尔处理机的存储空间是_______。
2.P2口通常用作_______,也可以作通用的I/O口使用。
3.若由程序设定RS1、RS0=01,则工作寄存器R0~R7的直接地址为______。
4.8051的堆栈区一般开辟在_______。
5.所谓寻址,其实质就是_______。
6.存储器映象是_______。
7.定时器中断请求发生在_______。
8.中断响应时间是指______。
9.通过CPU对I/O状态的测试,只有I/O已准备好时才能进行I/O传送,这种传送方式称为_______。
单片机C51语言及程序设计

语句确定 存储类型2——指针变量所在的存储区类型,缺省时根据C51编译模式的
默认值确定 指针变量名——按C51变量名的规则选取
举例说明C51指针定义的用法 (SMALL编译模式下)
例1 char xdata a = ‘A’; char * ptr = &a;
static char m, n; //定义m和n为2个位于data区中的有符号字符型静态变量。
2. C51的指针
标准C语言指针的一般定义形式为: ➢ 定数义据了类一型个*指指向针由变“量数名据;类型”说明的变量的指针变 量; ➢ 被指向变量和指针变量位于C编译器默认的内存区域 中例。如: int a =’A’;
二、C51的标识符与关键字
• 标识符即特定的字符或字符串,用来给变量、函数、符号 常量、自定义类型等命名。用标识符给C语言程序中各种对 象命名时,要用字母、下划线和数字组成的字符序列,并 要求首字符是字母或下划线,不能是数字。字母的大小写 是有区别的。
• 通常下划线开头的标识符是编译系统专用的,因此在编写C 语言源程序时一般不使用以下划线开头的标识符,而将下 划线用作分段符。C51编译器规定标识符最长可达255个字 符,但只有前32个字符在编译时有效,因此标识符的长度 一般不要超过32个字符。
FF00
D5H
D0^4
RRSS11
D4H
D0^3
RRSS00
D3H
D0^2
OOVV
D2H
D0^1
FF11
D1H
D0^0
PP
D0H
两种位地址表达形式:绝对位地址、相对位地址
单片机的结构及工作原理

单片机的结构及工作原理
单片机是一种集成电路芯片,它由CPU核心、存储器、I/O端口、定时器/计数器、中断控制器以及其他外围电路组成。
单片机的工作原理如下:
1. 开机复位:单片机通电后,会执行复位操作。
当复位信号触发时,CPU会跳转到预定的复位向量地址,开始执行复位操作。
2. 初始化:执行复位操作后,单片机会进行初始化。
这包括设置输入/输出端口的初始状态、初始化定时器和计数器等。
3. 执行指令:一旦初始化完成,单片机会开始执行存储器中的指令。
指令通常存储在Flash存储器中,单片机会按照程序计
数器(PC)的值逐条执行指令。
4. 控制流程:单片机执行程序时会根据条件跳转、循环、分支等控制流程操作来改变指令执行顺序。
5. 处理输入输出:单片机可以从外部设备(如传感器、键盘等)读取输入信号,并根据程序逻辑给出相应的输出信号。
6. 中断处理:单片机具有中断控制功能,可以在特定条件下立即中断当前程序,并执行中断服务程序。
中断通常用于及时响应外界事件。
7. 系统时钟:单片机需要一个时钟源来同步指令和数据的处理。
时钟源可以是外部晶振、内部振荡器或者其他时钟源,它们提供基准频率给单片机。
单片机的工作基于时钟信号和电压供应,控制执行指令、处理输入输出等任务。
通过程序设计和外部电路连接,单片机可以应用于各种领域,如家用电器、自动化控制、通信等。
mcs-51系列单片机基本结构与工作原理

▪
1)电源引脚VCC和VSS
▪
VCC:40脚,电源端,+5V
▪
VSS:20脚,接地端(GND)
▪
2)时钟电路引脚
▪
XTAL1:19脚,外接晶振输入引脚。
▪
XTAL2:18脚,外接晶振输出引脚。
▪
3)控制线引脚
▪
共4根,其中3根为双功能
▪
①RST/VPD :9脚,复位/备用电源。
▪
RST---通过外接复位电路实现上电复位或按键复位。
直接寻址 寄存器寻址
(4)MOV 60H,@R1 直接寻址 寄存器间接寻址
表2-2 特殊功能寄存器SFR的名称及地址(一)
§ MCS-51的扩展应用
▪ 一、单片机Байду номын сангаас展的基本概念 ▪ 1、单片机最小系统:使单片机运行的最少器件构成的 ▪ 系统,就是最小系统。 ▪ 无ROM芯片:8031 必须扩展ROM,复位、晶振电路 ▪ 有ROM芯片:89C51等,不必扩展ROM,只要有复位、 ▪ 晶振电路 ▪ 2、扩展使用的三总线:
▪ 清零,用来选择8051的工作寄存器区。其选择方法见表2-1
▪ OV、( PSW.2)溢出标志位。当带符号数运算(加法或减法)结果超 ▪ 出范围(-127-+127)时,有溢出,OV=1;否则OV=0。 ▪ --、( PSW.1)用户定义标志位。 ▪ P、( PSW.0)奇偶校验位。在每个指令周期由硬件按累加器A中“1”的 ▪ 个数为奇数或偶数而为“1”或“0”。因此,P可用指示操作结果(累加器
direct
8 位内部RAM单元的地址
#data:
指令中的8 位常数。
#data16
指令中的16位常数。
51单片机基本结构详解

51单片机基本结构详解1.什么是单片机单片机是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU 、随机存储器RAM 、只读存储器ROM 、多种I/O 口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调试电路电路、模拟多路转换器、A/D 转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统。
图1-1 单片机外形图2.单片机的引脚排列常用的单片机有40个引脚,其排列和功能如图2-1所示。
外ROM读选通信号外接晶体引线端地址锁存控制引脚内外ROM选择引脚21222324252627282930313233343536373839402019181716151413121110987654321VSS XTAL1XTAL2T1/P3.5TO/P3.4TXD/P3.1RXD/P3.0RST/VPD P1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.0INT0/P3.2INT1/P3.3P2.0P2.1P2.2P2.3P2.4P2.5P2.6P2.7P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0VCC EA/VPP ALE/PROG PSEN RD/P3.7WR/P3.6电源引脚接地引脚复位信号P1口P0口P3口P2口图2-1单片机的引脚排列和功能3.单片机最小系统单片机最小系统是单片机正常工作的最小硬件要求,包括供电电路、时钟电路、复位电路,如图3-1所示。
图3-1 单片机的最小应用系统判断单片机芯片及时钟系统是否正常工作有一个简单的办法,就是用万用表测量单片机晶振引脚(18、19脚)的对地电压,以正常工作的单片机用数字万用表测量为例:18脚对地约2.24V ,19脚对地约2.09V 。
对于怀疑是复位电路故障而不能正常工作的单片机也可以采用模拟复位的方法来判断,单片机正常工作时第9脚对地电压为零,可以用导线短时间和+5V 连接一下,模拟一下上电复位,如果单片机能正常工作了,说明这个复位电路有问题。
单片机的基本构成

单片机(Microcontroller)是一种包含处理器核心、内存、输入/输出设备以及定时器等基本功能的集成电路。
它通常被用于嵌入式系统中,以执行特定的任务。
以下是单片机的基本构成要素:
1. 中央处理器(CPU):单片机的核心,负责执行指令和控制计算机的操作。
它可以是不同架构的,如ARM、AVR、PIC等。
2. 存储器:
- 程序存储器(Flash Memory):用于存储单片机的程序代码。
- 数据存储器(RAM):用于存储程序执行时的临时数据。
3. 输入/输出设备(I/O Devices):
- 数字输入/输出口:用于连接数字设备,如开关、LED等。
- 模拟输入/输出口:用于连接模拟传感器或设备。
4. 定时器和计数器(Timers and Counters):用于产生精确的时间延迟和计数操作。
5. 串行通信接口(Serial Communication Interface):用于与其他设备进行串行通信,如UART (通用异步收发器)、SPI(串行外设接口)、I2C(Inter-Integrated Circuit)等。
6. 中断系统(Interrupt System):用于处理紧急事件和实时响应。
7. 时钟电路(Clock Circuit):产生单片机的时钟信号,驱动其内部操作。
8. 电源管理电路:用于提供适当的电源电压和电流。
这些基本组件共同构成了单片机系统,使其能够执行特定的任务或控制应用。
不同型号和品牌的单片机具有不同的规格和功能,适用于各种应用领域。
单片机的结构及原理

单片机的结构及原理单片机(Microcontroller Unit,简称MCU)是一种小型、低成本且功能强大的微处理器。
它集成了中央处理器(CPU)、存储器(RAM、ROM)、输入/输出端口(I/O)、时钟电路以及各种外设接口等组成部分,可广泛应用于各个领域,如家用电器、工业自动化、汽车电子等。
一、单片机的结构单片机的基本结构包括如下组成部分:1. 中央处理器(CPU):负责处理各种指令和数据,是单片机的核心部件。
它通常由控制单元和算术逻辑单元组成,控制单元用于控制指令的执行,算术逻辑单元用于执行各种算术和逻辑运算。
2. 存储器(Memory):包括随机存储器(RAM)和只读存储器(ROM)。
RAM用于存储临时数据和程序运行时的变量,ROM用于存储固定的程序指令和常量数据。
3. 输入/输出端口(I/O):用于与外部设备进行数据交互,包括输入口和输出口。
输入口用于接收来自外部设备的信号或数据,输出口则用于向外部设备输出信号或数据。
4. 时钟电路(Clock):提供单片机运行所需的时钟信号,控制程序的执行速度和数据的处理。
5. 外设接口(Peripheral Interface):用于连接各种外部设备,如显示器、键盘、传感器等。
通过外设接口,单片机可以与外部设备进行数据交换和控制操作。
二、单片机的工作原理单片机的工作原理如下:1. 程序存储:单片机内部ROM存储了一段程序代码,也称为固化程序。
当单片机上电或复位时,程序从ROM中开始执行。
2. 取指令:控制单元从ROM中读取指令,并将其送入指令寄存器。
3. 指令译码:指令寄存器将读取的指令传递给控制单元,控制单元根据指令的类型和操作码进行译码,确定指令需要执行的操作。
4. 指令执行:控制单元执行译码后的指令,包括算术逻辑运算、数据传输、输入输出等操作。
5. 中断处理:单片机可响应外部中断信号,当发生中断时,单片机会中止当前的程序执行,转而处理中断请求。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
♨
✎
ORG 0000H LJMP STRAT ORG 0100H STRAT:MOV R1,#0 ; R1用于计数,R1清零 MOV DPTR,#TAB ; 设置表地址指针 GO:MOV A, R1 LOOP: MOVC A,@A+DPTR ;查表取显示码 CJNE A,#0FFH,OK ;不是结束码显示码送P0口 SJMP STRAT ;是结束码,重新开始 OK:MOV P0,A LCALL DEL ;延时1s INC R1 ;循环左移一次 SJMP GO (此处略延时程序DEL) TAB:DB 0FEH,0FDH,0FBH,0F7H,0EFH DB 0DFH,0BFH,7FH,0FFH ;LED点亮码,0FFH为结束码 .......... END
♨
✎
子程序
可以被调用的程序段称为子程序。在实际问题中,常常 会遇到在一个程序中有许多相同的运算或操作,例如多字节 的加、减、字符处理等。如果每遇到这些运算和操作,都从 头做起,则使程序非常繁琐且浪费内存。因此在实际应用中 ,通常把这些多次使用的程序段,按一定结构编好,存放在 内存中,当需要时,程序可以去调用这些独立的程序段。因
; IN为主程序或调用程序标号
┇
┇ SUB: PUSH PSW ;现场保护
PUSH ACC
子程序处理程序段 POP POP RET ACC PSW ;最后一条指令必须为RET ;现场恢复
♨
✎
【例4】编写一个通用子程序,实现N个单字节无符号数
之和(N < 100H)。调用该子程序完成将片内部30H~5FH 中存放的单字节无符号数求和,结果存入60H、61H单元 中(高位在前)。
addr11
addr16
♨
✎
在编写子程序时应注意以下问题
3、注意设置堆栈指针和现场保护 4、最后一条指令必须是RET指令 5、子程序可以嵌套,即子程序可 以调用子程序(最多8层) 6、在子程序调用时,还要注意参 数传递的问题
♨
✎
子程序的基本结构
MAIN: ┇
┇ LCALL SUB ;调用子程序SUB
几 种 基 本 结 构
顺序结构
分支结构
查表结构
子程序结构 循环结构
♨
✎
顺序结构
顺序结构程序:是一种 最简单、最基本的程序,按 照程序编写的顺序逐条依次 执行,直到程序结束。这是 程序的最基本的形式,任何 程序都离不开这种形式。
顺序结构
程序段A 程序段 B
♨
✎
【例1】 将片内RAM的20H单元中的压缩BCD码拆成两 个ASCII码存入21H、22H单元。高4位转换后存在21H单 元,低4位转换后存在22H单元。 方法一 分析:两个 BCD 码拼装在一个单元内叫压缩 BCD码。设20H 内为压缩 BCD 码59, 22H通过变换 BCD 码 “5” 为ASCII码 “35”;BCD 码 “9” 变换为ASCII 码 “39”。
;程序结束
♨
✎
♨
✎
♨
写和验证、可靠性高。
♨
✎
a
不管多么简单或复杂的程序, 总离不开若干顺序程序段所组成 的。如图1所示,A框和B框分别 代表不同的程序段, 是A、B顺 序执行。它是最简单、最基本的 程序结构,其特点是按指令的排 列顺序一条条地执行,直到全部 指令执行完毕为止。
A B
b
图2-7-1 顺序程序结构
♨
✎
基本结构
♨
✎
循环结构
在应用程序中,有时需要多次反复执行相同的操作, 只是操作的操作数不同,这时就可以采用循环程序结构。 循环程序可以显著缩短程序,减少程序所占用的存储空间, 使程序结构大大优化。
循环程序一般包括以下几部分:
(1)设置循环初值 初值等。 在进入循环之前,要设置循环次数、循环体工作单元的
(2)循环处理 循环体是循环程序需要反复执行的部分,是循环程序结构的 主体部分。 (3)循环修改 每执行一次循环,要对参数进行修改,使指针指向下一数据 所在的位置,为进入下一轮循环作准备。 (4)循环控制 应用程序的条件判断循环程序是否结束。
;保护现场 ;目的单元清0
;取数 ;求和 ;存和的低字节数 ;修改指针,指向和的高位地址 ;取进位位 ;存和的高字节数 ;修改指针,指向和的低位地址 ;修改指针,指向下一个单元 ;恢复现场
♨
✎
(2) 子程序如下:
ORG MAIN: MOV MOV MOV ACALL …… TOEND: END 0000H R0,#30H R1,#60H R2,#2FH SUB2 ;设置R0为入口指针寄存器 ;设置R1为出口指针寄存器 ;设置R2传递字节数
; 程序开始地址 ; 初值 1111 1110 送P0口 ; 低电平点亮LED ; 闪烁次数设置
; 延时0.5s ; LED熄灭0.5s ; LED点亮0.5s
♨
✎
LCALL DEL
DJNZ R5,LOOP1 RL A JMP LOOP DEL:MOV R1,#20 DL3: MOV R2,#50 DL2: MOV R3,#250 DL1: DJNZ R3,DL1 DJNZ R2,DL2 DJNZ R1,DL3 RET END ;闪烁没有到5次,返回继续 ;闪烁5次后转到下一个LED ;以下是0.5s延时子程序
♨
✎
分支结构
分支结构:程序中含有转移指令
分支 结构
无条件 分支 有条件 分支
N
条件
Y
程序段A 程序段 B
单分支 结构
多分支 结构
分支结构♨Leabharlann ✎分支程序的两类结构
开始
程序段1
开始
程序段1
条件满足吗?
Y
数字关键码
N
程序段2
程序段3
分支程序1
分支程序2
分支程序3
程序段2
结束
结束
(a)单分支结构
(b)多分支结构
图1-2
压缩BCD码转换成两个ASCII字符图
♨
✎
程序入口:20H 程序出口:21H、22H 根据分析图设计程序: MOV A, 20H ANL A, #0FH ;屏蔽高4位 ADD A, #30H ;得到低4位ASCII码 MOV 21H, A ;个位ASCII码送21H ANL 20H, #0F0H ;屏蔽低4位 MOV A, 20H ;送A SWAP A ;高位交换到低位 ADD A, #30H ;得到高4位ASCII码 MOV 22H,A ; 十位ASCII码送22H
此,字程序就是一种能完成某一特定任务的程序段。
♨
✎
子程序的设计
1、给每个子程序赋予名字
2、现场保护与恢复
3、参数的正确传递 4、子程序说明
♨
✎
在编写子程序时应注意以下问题
1、子程序应有入口地址(用标号) 2、主程序调用子程序 两个子程序调用指令:
(1)绝对调用指令:ACALL
(2)长调用指令:LCALL
♨
✎
分支结构
顺序结构程序只能解决一些简单的算术、逻辑运 算、传送操作等。实际控制问题往往要求计算机能根 据给定的条件进行判断,再选择不同的处理路径,从
而表现出某种智能。
程序要求改变程序执行顺序,即程序的流向有两个 或两个以上时,这种程序结构称为分支程序结构,分 支程序的特点是程序中包含有转移指令。根据分支出 口的不同分为简单分支程序和多路分支程序。
♨
✎
解:单片机中负数一般用补码表 示,只要能够判断x=0、 x<0和 x>0便能够方便实现函数。采用 JZ指令进行判断,程序流程图如 图2-1所示。
图2-7-2 程序流程图
♨
✎
START: MOV A,30H
JZ OUT
ANL A #80H JZ OUT1 MOV 31H, 30H SJMP OK
;x=0, 转移
;x≠0,判断正负号 ;x小于0,y=x
OUT: MOV 31H, #3
OUT1: MOV A, #5 ADD A , 30H
;x=0,则y=3
;x>0,y=5+x
MOV 31H, A
OK: SJMP $
♨
✎
查表结构
查表是把事先安排的数据按照一定的顺序编制成 表格存放在 ROM 中,然后根据输入的数据,从表格中
♨
✎
(1) 子程序如下:
ORG SUB2: PUSH MOV INC MOV LOOP: MOV ADD MOV DEC CLR ADDC MOV INC INC DJNZ POP RET 0100H PSW @R1,#0 R1 @R1,#0 A,@R0 A,@R1 @R1,A R1 A A,@R1 @R1,A R1 R0 R2,LOOP PSW
查出所需的结果。查表可以将复杂的问题变得简单。 MCS-51汇编指令系统提供了两条专用的查表指令: MOVC A,@A+PC 表格只能放在该指令的256个地 址单元内,地址需要调整。
MOVC A,@A+DPTR 基址寄存器DPTR能提供16位 基址,因此查表范围可达64KB空间,且表格的大小和 位置也可在64KB ROM中任意安排。
♨
2. 7 程序的基本结构
一、绪论 二、基本结构
1. 2. 3. 4. 5.
顺序结构 分支结构 查表结构 子程序结构 循环结构 ♨ ✎
绪论
在汇编语言程序设计中,普遍采用结构化程
序设计方法。任何复杂的程序都可由顺序结构、
分支结构、循环结构、子程序结构等程序构成。
结构程序设计的特点是程序的结构清晰、易于读
♨
✎
【例3】 根据项目一流水灯电路电路,采用查表方法实
现相同功能。 解: 用查表法实现流水灯,要设计一个LED点亮码表 格,根据8个LED点亮次序,制作数码表格,为了循环