单片机复习
[toc]
RAM内部单元分配
寄存器有四组 每组8个单元 在组中按R0-R7命名
堆栈操作
唯一一个用户不能直接使用的专用寄存器
*可以进行位寻址的寄存器
每8位 一个字节 作为一个引导区的功能
从 0003H开始 外0 定0 外1 定1 串
P0口将作为总线的低8位地址线和8位数据线使用
P1口可以做I/O口使用 连接输入/输出设备
P2口将作为总线的高8位地址线使用 没有使用的高位地址线 将作为存储器的片选信号
P3口的P3.6和P3.7将作为片外数据存储器的写信号、读信号 即做控制总线使用 单片机的29引脚 PSEN将作为片外程序存储器的读信号。
P3口其它引脚 可作为专用线使用 如定时计数器的输入、外部中断0和1的输入、串行口的 数据输入、输出线。
P0口:P0口是一个8位漏极开路的双向I/O口。作为输出口,每位能驱动8个TTL逻辑电平。
对P0端口写“1”时,引脚用作高阻抗输入。
**当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。在这种模式下,P0具有==内部==上拉电阻。**在flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。程序校验时,需要外部上拉电阻。
P1口:P1口是一个具有内部上拉电阻的8 位双向I/O 口,p1 输出缓冲器能驱动4个TTL逻辑电平。对P1 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
此外,P1.0和P1.2分别作定时器/计数器2的外部计数输入(P1.0/T2)和时器/计数器2 的触发输入(P1.1/T2EX),具体如下表所示。在flash编程和校验时,P1口接收低8位地址字节。
RST——复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将是单片机复位。
ALE——当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。一般情况下,**ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。**要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲。
PROG
对FLASH存储器编程期间,该引脚还用于输入编程脉冲(PROG)。 如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。该位置位后,只有一条MOVX和MOVC指令才能将ALE激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE禁止位无效。
ALE为外部存储器低8位地址锁存信号
PSEN——程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当STC89C52由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲,在此期间,当访问外部数据存储器,将跳过两次PSEN信号。
是外部程序存储器的读选通信号,CPU从外部存储器读取指令时,从PSEN输出读选通信号(负脉冲)
EA/VPP——外部访问允许,欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地)。需注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。如EA端为高电平(接Vcc端),CPU则执行内部程序存储器的指令。FLASH存储器编程时,该引脚加上+12V的编程允许电源Vpp,当然这必须是该器件是使用12V编程电压Vpp。
EA为程序存储器选择信号,接低电平CPU总是从外部存储器取指令,接高电平可以从内部或外部取指令
振荡频率越高,单片机的运行速度就越快
联合多个单片机
振荡周期 如果为内部时钟方式,振荡周期即为石英晶体的振荡周期
时钟周期是振荡源信号 二分频之后形成的时钟脉冲信号,即一个时钟周期是振荡周期的2倍
机器周期是时钟周期的 六分频,即一机器周期是时钟周期的6倍,是振荡周期的12倍
指令周期是机器周期的 二分频, 单片机执行一条指令所需要的时间,一个指令周期通常含有1~4个机器周期
复位就是单片机的初始化操作,使各个部件处在一个确定的初始状态
按键电平复位和按键脉冲复位的区别?
复位后寄存器和引脚初始化状态
SP栈顶指针一般指向0030H 用户RAM区
EQU 相当于C语言中的Define
不够可以补,但不能多
DB和DW定义的数据表,数的个数不得超过80,若数据的数目较多,可使用多个定义命令。 在80C51程序设计应用中,常以DB来定义数据,以DW来定义地址。
指令的寻址方式即取得操作数的方式。80C51单片机指令系统共有7种寻址方式。
操作数是寄存器
操作数是数据的地址
所以A累加器到底是什么寻址方式
直接利用数据
针对位操作
X就是eXternal,外部的意思 MOVX就是读写外部存储器,即外部RAM
变址寻址的方式只有3条
MOVC A,@A+DPTR MOVC A, @A+PC JMP @A+DPTR
MOV就是移动的意思,C就是Code 程序存储器 MOVC就是读代码存储器
X就是eXternal,外部的意思 MOVX就是读写外部存储器,即外部RAM
借助A放数据 从外部 所以用到了MOVX A,@R0
①XCHD低半字节交换指令
②累加器A高,低半字节交换指令
POP出来的时候是栈顶的元素赋给POP后面跟的操作数
CY:进位标志位。该位在加减法中存放进位和借位,在移位操作中可能会用到。
AC:半进位标志位,表示低4位对高4位有进位或借位时的标志位。
FO:用户标志位,由用户进行定义和使用。
OV:溢出标志位。加减运算中,OV=1时,表示运算结果超过A的表示范围; 在乘法运算中,OV=1表示乘积存放在A和B中;除法运算中,OV=1表示除数为0,无法进行计算。
P:奇偶标志位,表示累加器A中1的个数,若1的个数为偶数,则P=0。
看CY是否为1 为1的话就是等同于ADD两者相加还要多加一个1 否则等价于ADD指令
控制转移类指令包括无条件转移、条件转移、子程序调用和返回指令等,共17条。
其中,只有比较转移指令影响标志。
隐去了固定对累加器A进行判断
别忘了最后要写END结束指令
外0 定0 外1 定1 串
主程序从0030H开始就是为了避开中断向量
结论: (1) 80C51通过中断允许控制寄存器对中断的允许实行两级控制。 以EA位作为总控制位,以各中断源的中断允许位作为分控制位。 (2) 80C51单片机复位后(IE) = 00H,因此中断系统处于禁止状态。 (3) 单片机在中断响应后不会自动关闭中断。因此在转中断服务程序后, 应使用有关指令禁止中断,即以软件方式关闭中断。
中断响应:在满足CPU中断响应条件后,对CPU中断源中断请求的回答
中断响应过程
中断响应时间
不能进行位寻址,没有位地址
M1 M0来选择工作方式
溢出标志位会有中断自动置0 中断的信号就是溢出标志位置1
并行通信适合打印机