发布时间 : 星期六 文章单片机考试重点必考更新完毕开始阅读ad6940add1f34693daef3e8a
第二章
1、89C51的EA段有何用途:
EA:外部程序存储器地址允许输入端。
当该引脚接高电平时,CPU访问片内EPROM/ROM并执行片内程序存储器中的指令,但当PC值超过0FFFH(片内ROM为4KB)时,将自动转向执行片外ROM中的程序。 当该引脚接低电平时,CPU只访问片外EPROM/ROM并执行外部程序存储器中的程序。 2.89C51的存储器分为哪几个空间?如何区分不同空间的寻址?
片内片外统一编址0000H-FFFFH64KB程序存储器地址空间(用16位地址) 64KB片外数据存储器地址空间,地址0000H-FFFFH(用16位地址)编址; 256字节数据存储器地址空间(用8位地址)
CPU访问片内、片外ROM指令用MOVC,访问片外RAM指令用MOVX访问片内指令用MOV
3、简述89C51片内RAM的空间分配:
片内数据存储器最大可寻址256个单元,它们又分为两部分:低128字节(00H~7FH)是真正的RAM区;高128字节(80H~FFH)为特殊功能寄存器(SFR)区。
低128字节又分为通用工作寄存器区、可位寻址RAM区域、通用RAM 4、简述布尔处理存储器的空间分配,片内RAM中包含哪些可位寻址单元。 字节地址为20H-2FH,SFR中字节地址能够被8整除的。
5.89C51如何确定和改变当前工作寄存器组? 通过RS1和RS0的状态确定当前工作寄存器组。
可利用传送指令对PSW整字节操作或用位操作指令改变RS1和RS2的状态,以切换当前工作寄存器组。
6、内部RAM的低128字节单元划分为哪3个主要部分?各部分主要功能是什么? (1)工作寄存器(00H~1FH)地址安排为4组工作寄存器区,每组有8个工作寄存器(R0~R7),共占32个单元。通过对程序状态字PSW中RS1、RS0的设置,每组寄存器均可选作CPU的当前工作寄存器组。若程序中并不需要4组,那么其余可用作一般RAM单元。CPU复位后,选中第0组寄存器为当前的工作寄存器。
(2)位寻址区(20H~2FH)工作寄存器区后的16字节单元(20H~2FH),可用位寻址方式访问其各位。
(3)字节寻址(30H~7FH)
从内部数据RAM区的48~127(30H~7FH),共80个字节单元,可以采用间接字节寻址的方法访问。
7、开机复位后,CPU使用的是哪组工作寄存器?它们的地址是什么?CPU如何确定和改变当前工作寄存器组?
开机复位后,CPU使用的是第0组工作寄存器。地址是00-07h。然后再机器中有个程序状态字PSW,它的第四第三位RS1,RS0是用来选择工作寄存器组的。它们的值和寄存器组的关系:
RS1/RS0 0/0 0/1 1/0 1/1 工作寄存器 0 1 2 3 地址
00-07 08-0F 10-17 18-1F
8程序状态寄存器PSW的作用是什么?常用标志有哪些位?作用是什么? Psw是一个8位特殊功能寄存器,位于片内RAM的高128B具体地址D0H PSW常用标志:
CY:进位标志位,位地址D7H 位操作时的位累加器。
? AC:半进位标志位。也称辅助进位标志。当执行加法(或减法)操作时,如果运算结果(和或差)的低半字节(位3)向高半字节有半进位(或借位),则AC位将被硬件自动置1;否则AC被自动清0。
F0:用户标志位。用户可根据自己的需要对F0位赋予一定的含义,由用户置位或复位,以作为软件标志。
RS0和RS1:工作寄存器选择控制位。这两位的值可决定选择哪一组工作寄存器为当前工作寄存器组。通过用户用软件改变RS1和RS0值的组合,以切换当前选用的工作寄存器组。
OV:溢出标志位。当进行补码运算时,如有溢出,即当运算结果超出-128~+127的范围时,OV位由硬件自动置1;无溢出时,OV=0。 PSW.1:为保留位。89C51未用,89C52为F1用户标志位。
P(PSW.0): 奇偶校验标志位。每条指令执行完后,该位始终跟踪指示累加器A中1的个数。
? ?
? ? ? ?
9、位地址7ch与字节地址7ch如何区别?位地址7ch具体在片内RAM中什么位置? 用不同的位寻址方式来加以区分,即访问128个位地址用位寻址方式,访问低128字节单元用字节寻址和间接寻址。
位地址7CH在片内RAM 2F的第五位。(7C/8+20)
第5章 10、89C51共有哪些中断源?对其中断请求如何进行控制? (1)89C51有如下中断源: ① ② ③ ④
INT0:外部中断源0请求,低电平有效(由P3.2输入)
INT1:外部中断源1请求,低电平有效(由P3.3输入) T0:定时器/计数器0溢出中断请求 T1:定时器/计数器1溢出中断请求
⑤ TX/RX:串行接口中断请求
(2)通过对特殊功能寄存器TCON、SCON、IE、IP的各位进行置位等操作,可实现各种中断控制功能。
11、简述89C51单片机的中断响应过程 ? 把当前PC值压入堆栈,保护断点。 ? 将相应的中断服务程序的入口地址送入PC。 ? 对有些中断源,CPU会自动清除中断标志。
? 执行中断服务程序。
? 执行到返回指令RETI,中断服务程序结束,将堆栈内容弹出到PC,返回到原来断点继
续执行。
12、当正在执行某一中断源的中断服务程序时、如果有新的中断请求出现,试问在什么情况下可以响应新的中断请求?在什么情况下不能响应新的中断请求? 符合以下6个条件可相应心的中断请求: ① 有中断源发出中断请求
② 中断总允许位EA=1,即CPU开中断 ③ 申请中断的中断源的中断允许位位1,即中断没有被屏蔽
④ 无同级或更高级中断正在被服务 ⑤ 当前的指令周期已结束 ⑥ 若现行指令为RETI或访问IE或IP指令时,该指令以及紧挨着的另一条指令以执行完。
(2)如果新的中断请求“优先级”低于正在执行的中断请求或与其同级,则不能被响应。
13、89c51各中断源的中断标志是如何产生的?又是如何清0的?CPU响应中断时,中断入口地址各是多少/?
89c51有5个中断源,中断标志有外部中断请求中断:IE1、IE0当外部中断边沿触发时当有当请求输入端有下降沿时IE1、IE0置位当响应中断后自动清0、当设置为电平触发时,外部请求输入端有低电平时IE1、IE0置位,当为高电平时清0。定时器中断标志TF1、TF0当定时器计数溢出后TF1、TF0置位响应中断后自动使TF1、TF0清0。串行口发送和接收中断标志TI和RI当发送或者接收一帧数据后使TI和RI置位。TI和RI必修在响应中断后由软件清0
中断源 入口地址 外部中断0 0003H 定时器T0中断 000BH 外部中断1 0013H 定时器T1中断 001BH 串行口中断 0023H
14、89C51串行口有几种工作方式?有几种帧格式?各工作方式的波特率如何确定? 89C51串行接口有4种工作方式:
方式0(8位同步移位寄存器)方式1(10位异步收发)方式2(11位异步收发) 方式3(11位异步收发)
有2种帧格式:10位、11位
方式0:方式0的波特率≌Focs/12
方式2:方式2的波特率≌2SMOD/64*Focs
方式1和方式3:方式1和方式3的波特率(2SMOD/32)×[Focs/(12[265-x]) 定时器T1用作波特率发生器时,通常选用工作模式2
键盘式扫描原理 ① 判断是否有键按下 ② 判断哪一个键按下 ③ 键号=行首键号+列号 7种寻址并举例
寄存器寻址:mov A,R0 直接寻址:mov A,40H
立即数寻址:mov A,#40H
寄存器间接寻址:mov A,@R0 变址寻址:movc A,@A+DPTR 相对寻址:SJMP 55H 位寻址:mov C,30H
编程题
(1) 实验一或实验二
(2) 设单片机采用89C51,未扩展片外ROM,片外RAM采用一片6116,编程将其片内ROM从0100H
单元开始的10B的内容依次外接到片外RAM从100H单元开始的10B中去 Mov R2,#00H ;源数据缓冲区地址偏移量00H->A
Mov R3,#0AH ;字节长度->R 3
Mov DPTR,#0100H ;源数据缓冲区首地址(也是目的缓冲区首地址)->DPTR L1:
Mov A,R2 ;源地址偏移量->A Movc A,@A+DPTR Movx @DPTR,A DJNZ R3,L1 SJMP $
;传送一个数据
;数据全部传送完?没传送完,转L1,继续传送
Inc DPTR ;源地址(目的地址)加1
;传送完毕,结束
硬件设计 存储器扩展
1.下图中外部扩展的程序存储器和数据存储器容量各是多少?(2分) 2.三片存储器芯片的地址范围分别是多少?(地址线未用到的位填1) (6分,) 3.请编写程序,要求:
(1) 将内部RAM 30H~3FH中的内容送入1# 6264的前16个单元中;(4分) (2) 将2# 6264 的前4个单元的内容送入内部RAM 40H~43H中;(4分)
P2.7 P2.6 P2.5 P2.4 │ P2.0 D│ DG 3 8 Q│ Q5 ● 8 ● 5 ● 8 A8-ACE +5V CS A0-A● 5 8 A8-AA0-A5 7 74LS37ALE 8031 OE A0-AA8-A2764 D0-D8 ● CE 1# 6264 OE WR +5V CS CE 2# 6264 OE 8 ● P0.7 │ ● P0.0 PSEN RD WR 8 D0-DOE WR 8 ● ● 解:1.外扩程序存储器的容量是8K,外扩数据存储器的容量是16K 解:2、2764范围:C000H~DFFFH
1#范 围: A000H~BFFFH 2#范 围: 6000H~7FFFH
3.请编写程序解:(1)mov R1 ,#10H mov DPTR,@0A000H mov R0,#30H Loop:mov A,@Ro