没写完。 把中央处理器CPU(Central Processing Unit)、存储器(Memory)、定时器/计数器、中断、输入/输出I/O(Input/Output)接口电路等功能部件集成在一块集成电路芯片上的微型计算机。 计算机的核心部件 由运算器和控制器组成 主要完成计算机的运算和控制功能 PSW👇 指令寄存器中存放指令代码。CPU执行指令时, 由程序存储器中读取的指令代码送入指令存储器, 经译码器译码后由定时与控制电路发出相应的控制信号, 完成指令所指定的操作。 PC用于存放CPU下一条要执行的指令地址, 是一个 16 位的专用寄存器, 可寻址范围是0000H~0FFFFH共 64 KB。 程序中的每条指令存放在ROM区的某一单元, 并都有自己的存放地址。 CPU 要执行哪条指令时, 就把该条指令所在 的单元的地址送上地址总线。 在顺序执行程序中, 当PC的 内容被送到地址总线后, 会自动加 1, 即(PC)← (PC)+1, 又指向CPU下一条要执行的指令地址。 堆栈操作是在内存RAM区专门开辟出来的按照“先进后出”原则进行数据存取的一种工作方式, 主要用于子程序调用及返回和中断处理断点的保护及返回, 它在完成子程序嵌套和多重中断处理中是必不可少的。为保证逐级正确返回, 进入栈区的“断点”数据应遵循“先进后出”的原则。SP用 来指示堆栈所处的位置, 在进行操作之前, 先用指令给SP赋值, 以规定栈区在RAM区的起始地址(栈底层)。当数据推入栈 区后, SP的值也自动随之变化。MCS – 51 系统复位后, SP初始化为07H。 数据指针DPTR是一个 16 位的专用寄存器, 其高位字节寄存器用DPH表示,低位字节寄存器用DPL表示。既可作为一个 16 位寄存器DPTR来处理, 也可作为两个独立的 8 位寄存器DPH和DPL来处理。 具有记忆功能的电子部件,分为程序存储器和数据存储器两类 外部数据存储器一般由静态RAM构成,其容量大小由用户根据需要而定, 最大可扩展到 64 KB RAM , 地址是 0000H~0FFFFH。 CPU通过MOVX指令访问外部数据存储器, 用间接寻址方式, R0、R1和 DPTR都可作间接寄存器。注意, 外部RAM和扩展的I/O接口是统一编址的, 所有的外扩I/O 口都要占用 64 KB中的地址单元。 CPU与相应的I/O设备(如: 键盘、鼠标、显示器、打印机等)进行信息交换的桥梁, P0 口内部一位结构图👇 P1、P2 和P3 口为准双向口, 在内部差别不大, 但使用功能有所不同。 实现单片机和其他设备之间的串行数据传送 用于实现定时或计数功能 为满足各种实时控制的需要而设置 主要由振荡器和分频器组成 -(1)振荡周期: 也称时钟周期, 是指为单片机提供时钟脉冲信号的振荡源的周期。 读外部程序ROM时序👇 计算机各工作部件之间传送信息的公共通道 [标号: ] 操作码助记符 [目的操作数][, 源操作数] [;注释] 为清晰准确地表述指令的格式及功能,下面对MCS-51单片机指令中常用的符号作一些规定: 变址寻址指令具有以下三个特点: MCS-51单片机共有三条变址指令 MOVC A, @A+PC ;A←((A)+(PC)) MOVC A, @A+DPTR ;A←((A)+(DPTR)) JMP @A+DPTR ;PC←(A)+(DPTR) 前两条指令是在程序存储器中取操作数 第三条指令是要获得程序的跳转地址,实现程序的转移。 【例】MOV A, #22H MOV DPTR, #63A0H MOV A, @A+DPTR ;A←((A)+(DPTR)) 为了使程序设计方便,MCS-51指令系统提供了多种位地址的表示方式,可归纳为4种形式: 【例】将片内RAM30H单元与40H单元中的内容互换。 这4条指令的功能是把立即数,直接地址、工作寄存器及间接地址内容与累加器A中的内容相加,运算结果存在A中。 在进行减法运算中,CY=1表示有借位,CY=0则无借位。 OV=1表明带符号数相减时,从一个正数减去一个负数结果为负数,或者 从一个负数中减去一个正数结果为正数的错误情况。 在进行减法运算前,如果不知道借位标志位C的状态,则应先对CY进行清零操作。 如果要进行不带借位减法,只需把CY先清零。 【例】设(A)=0C9H, (R3)=54H, (CY)=1, 执行指令:SUBB A, R3 1100 1000 0101 0100 【例】将外部数据RAM中的一个数据块传送到内部数据RAM中,两者的首地址分别为 DATA1和TATA2,遇到传送的数据为0时停止。 中断是指计算机在执行某一程序的过程中, 由于计算机系统内、外的某种原因, 而必须中止原程序的执行, 转去执行相应的处理程序, 待处理结束之后, 再回来继续执行被中止的原程序的过程。采用了中断技术后的计算机, 可以解决CPU与外设之间速度匹配的问题, 使计算机可以及时处理系统中许多随机的参数和信息, 同时, 它也提高了计算机处理故障与应变的能力。 中断源是指在计算机系统中向CPU发出中断请求的来源, 中断可以人为设定, 也可以是为响应突发性随机事件而 设置。通常有I/O设备、实时控制系统中的随机参数和信息 故障源等。 中断优先级越高, 则响应优先权就越高。当CPU正在执行中断服务程序时, 又有中断优先级更高的中断申请产生, 这时CPU就会暂停当前的中断服务转而处理高级中断申请, 待高级中断处理程序完毕再返回原中断程序断点处继续执行, 这一过程称为中断嵌套。 (1) 在每条指令结束后, 系统都自动检测中断请求信号, 如果有中断请求,且CPU处于开中断状态下, 则响应中断。 图 MCS – 51中断系统结构框图👇 表 8051 中断源 特殊功能寄存器TCON中的标志👇 特殊功能寄存器SCON INT1: 编程中应注意: 5.3 中断系统的应用 现在,若INT0保持低电平, 且允许INT0中断, 则CPU就进入外部中断 0 服务程序, 由于有上述几条指令, 它就会停在 JNB 处, 原地等待。当INT0 端出现一个正脉冲(由低到高, 再到低)时, 程序就会往下执行, 执行RETI后, 将返回主程序, 往下执行一条指令, 然后又立即响应中断,以等待INT0端出现的下一个正脉冲。 这样在INT0端每出现一个正脉冲, 主程序就执行一条指令, 实现了单步执行的目的, 要注意的是, 这个正脉冲的高电平持续时间不小于 3个周期, 以确保CPU能采集到高电平值。 例 2 多中断源。 开关S1和S2分别接至INT0和INT1, ORG 0000H ORG 0003H MAIN: INT0: INT1: SAVE: BACK: END 图 6.1 定时器/计数器结构框图 图 6.2 TMOD各位定义 表 6.1 工作方式选择表 若C/T=1时, 为计数器方式; C/T = 0时, 为定时器方式。 当GATE=1时, 只有INT0 (或INT1)引脚为高电平且TR0(或TR1 )置 1 时, 相应的定时器 /计数器才被选通工作, 这时可用于测量在INTx端出现的正脉冲的宽度。若GATE=0, 则只要 TR0 (或 TR1)置 1, 定时器 /计数器就被选通, 而不管 INT0 (或 INT1)的电平是高还是低 TF0、TF1分别是定时器/计数器T0、 T1 的溢出标志位, 加法计数器计满溢出时置 1, 申请中断, 在中断响应后自动复 0。 图 6.4 方式 1(16位计数器) 图 6.4 方式 1(16位计数器) 图 6.5 方式 2(初始常数自动重装载) 图 6.6 方式 3(两个 8 位独立计数器) 选用定时器 /计数器T0 作定时器, 输出为P1.0 引脚, 2 ms 的方波可由间隔 1 ms的高低电平相间而成, 因而只要每隔 1 ms对 P1.0 取反一次即可得到这个方波。 录目录
51单片机应用从0开始
第一章单片机基本概念
定义
单片机的功能部件
中央处理器CPU
1. 运算器——中央处理器CPU
- 算术逻辑单元ALU - 累加器ACC(Accumulator) - 寄存器B - 程序状态字PSW(Programe State Word)
RS1、 RS0与片内工作寄存器组的对应关系👇
2. 控制器——中央处理器CPU
3. 指令寄存器和指令译码器——中央处理器CPU
4. 程序计数器PC(Program Counter)
5. 堆栈指针SP(Stack Pointer)——中央处理器CPU
6. 数据指针寄存器DPTR——中央处理器CPU
DPTR 主要用来存放 16 位地址, 当对 64 KB外部数据存储器空间寻址时, 作为间址寄存器用。在访问程序存储器时, 用作基址寄存器。存储器
程序存储器:存储程序、表格等相对固定的信息
数据存储器:存储程序运行期间所用到的数据信息1. 程序存储器ROM
2. 内部数据存储器
工作寄存器区。每一个区有 8 个通用寄存器R0~R7。寄存器和RAM地址对应关系如表 。
寄存器与RAM 地址对照表👇
RAM中的位寻址区地址表👇
SFR特殊功能寄存器地址表1👇
SFR特殊功能寄存器地址表2👇
SFR特殊功能寄存器地址表3👇3. 外部数据存储器
并行输入/输出接口
主要功能是协调、匹配CPU与外设的工作1. P0口
2. P1、P2和P3口
P1口是用户专用 8 位准双向I/O口, 具有通用输入/输出功能, 每一位都能独立地设定为输入或输出。当有输出方式变为输入 方式时, 该位的锁存器必须写入“1”, 然后才能进入输入操作。
P2口是 8 位准双向I/O口。外接I/O设备时, 可作为扩展系统的地址总线, 输出高8位地址, 与P0 口一起组成 16 位地址总线。 对于 8031 而言, P2 口一般只作为地址总线使用, 而不作为I/O线 直接与外部设备相连。
P3口的第二功能👇
单片机的引脚及其功能👇
串行口
即可作为全双工异步通用收发器使用,又可作为同步移位寄存器使用。定时器/计数器
并以其定时或计数结果对操作对象进行控制中断控制系统
是重要的输入输出方式
8051单片机中有5个中断源,可分为高级和低级两个优先级别。时钟电路
为系统各工作部件提供时间基准
串口、中断、定时/计数是单片机重要的内部资源
为CPU控制外部设备、实现信息交流提供了强有力的支持1. 机器周期和指令周期——单片机工作的基本时序
-(2)状态周期: 每个状态周期为时钟周期的 2 倍, 是振荡周期经二分频后得到的。
-(3)机器周期: 一个机器周期包含 6 个状态周期S1~S6, 也就是 12 个时钟周期。 在一个机器周期内, CPU可以完成一个独立的操作。
-(4) 指令周期: 它是指CPU完成一条操作所需的全部时间。 每条指令执行时间都是有一个或几个机器周期组成。MCS 51 系统中, 有单周期指令、双周期指令和四周期指令。2. MCS – 51 指令的取指/执行时序
3. 访问外部ROM和RAM的时序
读外部数据RAM时序 👇
写外部数据RAM的时序👇
总线
按功能可分为
三类分别传送数据信息、地址信息和控制信息总结_MCS -51单片机硬件结构&MCS – 51单片机的内部结构
特点
– 严格区分ROM和RAM
- 程序存储器(ROM)只存放程序、固定常数及数据表格 - 数据存储器(RAM)用作工作区及存放用户数据 - 小容量的数据存储器能以高速RAM形式集成在单片机内,以 加速单片机的执行速度
– 采用面向控制的指令系统
- 为满足控制的需要,单片机有强大的逻辑控制能力,特别是 具有很强的位处理能力。
– I/O引脚通常为多功能
- 引脚处于何种功能,可由指令来设置或由机器状态来区分 - 解决实际引脚数和需要的信号线的矛盾
– 外部扩展能力强
- 在内部的各种功能部件不能满足应用需要时,均可在外部进 行扩展 - (如扩展ROM、RAM,I/O接口,定时器/计数器, 中断系统等) - 与许多通用的微机接口芯片兼容 - 给应用系统设计带来极大的方便和灵活性。
– 结构功能优化
- 能方便灵活地组成各种智能测控仪器仪表和设备
– 可靠性高
- 单片机芯片按工业测校环境要求设计 - 产品在120°C温度条件下经44小时老化处理,并通 过电气测试及最终质量检验 - 可以适应各种恶劣的工作环境。
第二章 MCS-51单片机的指令系统
1. 指令系统定义
2. 单片机指令
2.1MCS-51单片机指令——分类
2.1.1 按指令所占的字节数
2.1.2 按指令的执行时间
2.1.3 按指令的功能
2.2 MCS-51单片机指令——格式
【例】AA: ADD A, #10H ;将累加器A的内容与10H相加,结果存入累加器A
2.3 单片机指令——常用符号
3. 寻址方式
3.1 MCS-51单片机寻址方式——立即寻址
3.2 寻址方式——寄存器寻址
3.3 寻址方式——寄存器间接寻址
MOVX A, @DPTR ;A ←((DPTR))3.4 寻址方式——直接寻址
指令中52H为操作数的存储器地址
该指令的功能是把片内RAM地址为52H单元的内容送到A中,A的地址是E0H
该指令的机器码为E5H 52H。3.5 寻址方式——变址寻址
3.6 寻址方式——相对寻址
【例】JZ rel 是一条累加器A为零就转移的双字节指令。**若该指令的存储地址为2050H,则执行该指令时的当前PC值即为2052H。**即当前PC值是相对转移指令取指结束时的值。
目标地址 = 当前PC值 + rel = 指令存储地址 + 指令字节数 + rel
【例】SJMP 08H ;PC←PC+2+08H
• 这是一条转移指令,设PC当前值=2000H,PC+2=2002H因此程序转向(PC)+2+rel=2000H+2+08H =200AH单元。
3.7 寻址方式——位寻址
【例】MOV C, 0D5H ;将PSW的位5(位地址D5H)的状态送进位标志位。
【例】MOV C, 0D0H.5 ;将PSW(单元地址0D0H)的位5(位地址D5H)的状态送进位标志位。
【例】MOV C, PSW.5 ;将PSW的位5的状态送进位标志位。
【例】MOV C, F0 ;将PSW的位5(位地址D5H、位名称为F0)的状态送进位标志位。3.8 寻址方式总结
4. 数据传送类指令
4.1 以累加器A为目的操作数的传送指令(4条)
【例】 设外部RAM(2023H)=0FH,执行以下程序段:
MOV DPTR, #2023H ;DPTR←2023H
MOVX A, @DPTR ;A←((DPTR))
MOV 30H, A ;30H←(A)
MOV A, #00H ;A←00H
MOVX @DPTR, A 😭(DPTR))←(A)DPTR所指向的内容赋予00H
程序段执行后,(DPTR)=2023H,(30H)=0FH, (A)=00H,(2023H)=00H,表示把片外RAM 2023H单元的内容0FH送到内部RAM的30H单 元,然后把外部RAM 2023H单元和累加器A清0。4.2 以寄存器Rn为目的操作数的传送指令(3条)
【例】设内部RAM(30H)=40H,(40H)=10H,(10H)=00H,(P1)=0CAH,分析以下程序执行后,各单元、寄存器、P2口的内容。
MOV R0, #30H ;R0←30H
MOV A, @R0 ;A←((R0))
MOV R1, A ;R1←(A)
MOV B, @R1 ;B←((R1))
MOV @R1, P1 😭(R1))←(P1)
MOV P2, P1 ;P2←(P1)
MOV 10H, #20H ;10H←20H
执行上述指令后,(R0)=30H;(R1)=(A)=40H;(B)=10H; (40H)=(P1)=(P2)=0CAH;(10H)=20H。4.3 以直接地址为目的操作数的传送指令(5条)
4.4 以间接地址为目的操作数的传送指令(3条)
4.5 查表指令(2条)
【例】编一查表程序,将内部RAM40H单元内的数(0~9)的平方存入内 部RAM50H单元。先作一个0~9的平方表,存入TAB中。然后用查表指令 实现上述功能。
MOV A, 40H ;40H单元的数送A
MOV DPTR, #TAB ;DP
MOVC A, @A+DPTR ;查表
MOV 50H, A ;查表得到的平方值,存50HTR指向表头
SJMP $ ;等待
TAB: 0, 1, 4, 9, ……814.6 累加器A与片外数据存储器的传送指令(4条)
4.7 堆栈操作指令(2条)
【例】进入中断服务程序时,常把程序状态寄存器PSW、累加器A、数据指针DPTR进栈保护。
设当前SP为60H。则程序段
MOV SP, #60H
PUSH PSW
PUSH ACC
PUSH DPL
PUSH DPH
执行后,SP内容修改为64H,而61H、 62H、63H、64H单元中依次存入 PSW、A、DPL、DPH的内容。
在中断服务程序结束之前,用下列程序 段恢复数据。
POP DPH
POP DPL
POP ACC
POP PSW
指令执行之后,SP内容修改为60H, 而64H、63H、62、61H单元的内容依次弹出到DPH、DPL、A、PSW中。
保护数据时,进栈、出栈的次序一定要符合“先进后出”的原则。4.8 交换指令(5条)
4.9 16位数据传送指令(1条)
5 算术运算类指令
5.1 加法指令(4条)
+ 1010 1111
1 0011 0100
执行结果为:(A)=34H, CY=1, AC=1, OV=1, P=15.2 带进位加法指令(4条)
5.3 带借位减法指令(4条)
1100 1001
-0000 0001
0111 0100
结果:(A)=74H, Cy=0, AC=0, OV=1, P=05.4 乘法指令(1条)
在乘法运算时,如果OV=1,说明乘积大于FFH,否则OV=0,但进位标志位CY总是等于0。
【例】若(A)=80H=128, (B)=32H=50,执行指令: MUL AB
结果:(B)=19H, (A)=00H, OV=1, CY=05.5 除法指令(1条)
结果: (A)=03H, (B)=29H, CY=0, OV=05.5 除法指令(1条)
5.6 加1指令(5条)
5.7 减1指令(4条)
减1操作也不影响标志。若原寄存器的内容为00H,减1后为FFH,运算结 果不影响任何标志位。当直接地址是I/O口时,实现“读—修改—写” 操作。5.8 十进制调整指令(1条)
加法指令执行后得结果7BH;
第三条指令对累加器A中的结构进行十进制调整,低4位(为0BH)大于9,因此要加6,最后得到调整的BCD码为81。6 逻辑操作指令
6.1 清零指令(1条)
6.2 求反指令(1条)
6.3 循环移位指令(4条)
【例】
MOV A, #04H ;(A)=04
RL A ; (A)=08
RR A ;(A)=04
• 逻辑左移一位相当于乘2,逻辑右移一位相当于除2。6.4 逻辑与操作指令(6条)
6.4 逻辑或操作指令(6条)
6.5 逻辑异或操作指令(6条)
【例】利用逻辑运算指令,可以模拟各种硬件逻辑电路。
如下图所示的组合逻辑电路,试编写一程序模拟其功能。设输入信号放在X、Y、Z单元中, 输出信号放在F单元。
• 参考程序如下:
MOV A, X ;A ← (X)
ANL A, Y ;A ← (A) ∧ (Y)
MOV R1, A ;A内容暂存
MOV A, Y ;A ← (Y)
XRL A, Z ;A ← (Y) ⊕ (Z)
CPL A ;A ← (Y) ⊕ (Z)
ORL A, R1 ;得到输出
MOV F, A ;存输出
SJMP $7 控制转移类指令
7.1无条件转移指令(4条)
7.2 条件转移指令(8条)
【例】将外部数据RAM中的一个数据块传送到内部数据RAM中,两者的首地址分别为 DATA1和TATA2,遇到传送的数据为0时停止。
解:外部RAM向内部RAM的数据传送一定要借助于累加器A,利用累加器判零转移指令正好可以判别是否要继续传送或者终止。
MOV DPTR, #DATA1
MOV R1, #DATA2
LOOP: MOVX A, @DPTR HERE: JZ HERE
MOV @R1, A INC DPTR
INC R1 SJMP LOOP
;外部数据块首地址 ;内部数据块首地址 ;外部数据送给A ;为0则终止
;不为0传送内部RAM数据 ;修改地址指针 ;继续循环7.2 条件转移指令(8条)
第5章MCS – 51单片机的中断
5.1 中断的概述
5.1.1. 中断
5.1.2. 中断源
5.1.3. 中断优先级
5.1.4. 中断响应的过程
(2) 保护现场, 在保护现场前, 一般要关中断, 以防止现场被破坏。保护现场一般是用堆栈指令将原程序中用到的寄存器推入堆栈。
(3) 中断服务, 即为相应的中断源服务。
(4) 恢复现场, 用堆栈指令将保护在堆栈中的数据弹出来, 在 恢复现场前要关中断, 以防止现场被破坏。在恢复现场后应及时开中断。
(5) 返回, 此时 CPU将推入到堆栈的断点地址弹回到程序计数器, 从而使CPU继续执行刚才被中断的程序。5.2 MCS – 51中断系统
在INT0或INT1口输入一个信号(低电平或下降沿),就可以使单片机临时停下正在执行的程序,转去执行预先编内好、另外的程序。
INT0:外部中断0触发方式控制位,1表示边沿触发,0表示电平触发;
EX0:外部中断0允许位,1表示允许外部中断0的中断申请;
ET0:定时/计数器0中断允许位,1表示允许定时/计数器0的溢出中断;
IE0:外部中断0中断申请标志位,1表示有中断申请。
IT0设置触发中断的方法:单片机中IT0=1——下降沿触发(边缘触发方法),IT0=0——低电平触发(电平触发方法)
EA是总中断,开启总中断时只要用SETB EA将EA置1就行了。
Px0=1高优先级中断;px0=0低优先级中断5.2.1 中断源
5.2.2 中断控制
表 5.2 同级内第二优先级次序👇
例如, 某软件中对寄存器IE、 IP设置如下:
MOV IE, # 8FH
MOV IP, # 06H
则此时该系统中:
5.2.3 中断响应
(1)同级或高优先级的中断已在进行中;
(2)当前的机器周期还不是正在执行指令的最后一个机器周期(换言之, 正在执行的指令完成前, 任何中断请求都得不到响应);
(3)正在执行的是一条 RETI或者访问特殊功能寄存器IE或 IP的指令(换言之, 在 RETI或读写 IE或 IP之后, 不会马上响应中断请求, 而至少执行一条其它指令之后才会响应)。
2.中断响应请求
单片机一旦响应中断请求, 就由硬件完成以下功能:
(1)根据响应的中断源的中断优先级, 使相应的优先级状态触发器置 1;
(2)执行硬件中断服务子程序调用, 并把当前程序计数器PC的内容压入堆栈;
(3)清除相应的中断请求标志位(串行口中断请求标志 RI和 TI除外);
(4)把被响应的中断源所对应的中断服务程序的入口地址(中断矢量)送入PC, 从而转入相应的中断服务程序。
表 中断服务程序入口地址表👇
例如, 现有外部中断 1 提出申请, 且主程序中有R0、 R1、
DPTR、累加器A需保护, 则编制程序应为:
ORG 0000H
AJMP MAIN
ORG 0013H
LJMP INT1 …
ORG 0100H
MAIN: …; 主程序 …
ORG 1000H
PUSH ACC ; 中断服务程序
PUSH DPH
PUSH DPL
PUSH 0
PUSH 1
…
POP 1
POP 0
POP DPL
POP DPH
POP ACC
RETI
(1) 在 0000H放一条跳转到主程序的跳转指令, 这是因为MCS-51单片机复位后, PC的内容变为 0000H, 程序从 0000H 开始执行, 紧接着 0003H是中断程序入口地址, 故在此中间只能 插入一条转移指令;
(2) 响应中断时, 先自动执行一条隐指令“LCALL 0013H”, 而 0013H至 001BH(定时器 1 溢出中断入口地址)之间可利用的存储单元不够, 故放一条无条件转移指令。
(3) 在中断服务程序的末尾, 必须安排一条中断返回指令RETI, 使程序自动返回主程序。5.3 中断系统的应用
例 1 单步操作的中断实现。 把一个外部中断(设为INT0])设置为电平激活方式。
其中断服务程序的末尾写上如下几条指令:
JNB P3.2, $ ; 在INT0变高前原地等待(死循环)
JB P3.2, $; 在 INT0变低前原地等待(死循环)
RETI; 返回并执行一条指令
MCS – 51 单片机有两个外部中断输入端, 当有 2 个以上中断源时, 它的中断输入端就不够了。此时, 可以采用中断与查询相结合的方法来实现。 可以使每个中断源都接在同一 个外部中断输入端上, 同时利用输入口线作为多中断源情况 下各中断源的识别线。
ORG 0003H
LJMP INT0 …
INT0:
PUSH PSW
PUSH ACC
JB P0.7, DV1
JB P0.6, DV2
JB P0.5, DV3
JB P0.4, DV4
GOBACK:
POP ACC
POP PSW
RETI
DV1: … ; 装置1中断服务程序
…
初始时LED指示灯L1和L2熄灭,
当S1按下S2断开,L1亮,L2灭;
当S2按下S1断开,L2亮,L1灭。
用中断方式实现。编写程序
AJMP MAIN
LJMP INT0
ORG 0013H
LJMP INT1
MOV IE,#85H;让EX0,EX1为1,启动中断
SETB P0.0
SETB P0.1
MOV SP,#50H
JMP SAVE
CLR P0.0
SETB P0.1
JMP BACK
RET1
MOV SP,#70H
JMP SAVE
CLR P0.1
SETB P0.0
JMP BACK
RET1
SETB RS0;对Ri存储区的保护
SETB RS1
PUSH ACC
PUSH DPH;对DPTR的保护
PUSH DLH
PUSH B
CLR RS0
CLR RS1
POP B
POP DLH
POP DPH
POP ACC
POP PSW
第6章 MCS – 51单片机内部定时器/ 计数器及串行接口
6.1 定时器/计数器的结构及工作原理
6.1 定时器/计数器的结构及工作原理
加法计数器是计满溢出时才申请中断, 所以在给计数器赋初值时, 不能直接输入所需的计数值, 而应输入的是计数 器计数的最大值与这一计数值的差值, 设最大值为 M, 计数 值为 N, 初值为 X, 则 X的计算方法如下:
计数状态: X=M-N <计数外部给的信号>
定时状态: X=M-定时时间/T <内部时钟信号>
而T=12÷晶振频<常选晶振频率11.0592Mhz>6.2 方式和控制寄存器
一、定时器/计数器的方式寄存器TMOD
1. M1M0工作方式控制位
2. C/T定时器方式或计数器方式选择位
3. GATE 定时器/计数器运行门控标志位
二、定时器/计数器控制寄存器TCON
TF产生的中断申请是否被接受, 还需要由中断是否开放来决定。
TR1、TR0 分别是定时器 /计数器T1、 T0 的运行控制位,通过软件置 1 后, 定时器 /计数器才开始工作, 在系统复位时被清 0。6.3 工作方式
一、方式 0
二、方式 1
三、方式 2
另一个八位置有初值,自动重新装载四、方式 3
T1去串行口相关工作位置6.4 定时器/计数器应用举例
一、方式 0 的应用例 1 利用定时器输出周期为 2 ms的方波, 设单片机晶振频率为 6 MHz。
定时 1 ms的初值:
因为机器周期=12÷6 MHz= 2 μs
所以 1 ms内T0需要计数N次: N= 1 ms÷2 μs = 5006.5 MCS – 51单片机的串行接口
6.6 串行口的应用
5. 算数运算类指令
6. 逻辑操作类指令
7. 控制转移类指令
8. 位操作类指令
第三章 第一个单片机系统
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算