第一章
目录
1.简述微型计算机硬件结构以及各部分的作用
- 微处理器:微型计算机的核心
- 存储器:用来存放程序和数据
- 输入输出接口电路:连接CPU和外部设备的桥梁
- 总线:传输信息的公共通信线
2.在计算机内部,一切信息的存取,处理和传递的形式是(二进制)
3.0到9ASCII码是什么(30H到39H)
4.计算机某字节存储单元内容是1000 0111,若解释为无符号数,其值为(135)
5.CPU与外设的数据传送方式包括(无条件)(查询)(中断)(DMA)
6.简述中断的概念:
执行程序的过程中,由于出现某个特殊情况,使得程序转去执行这个情况,等待处理完后才可以接着执行原来的程序
7.简述可编程的定时器/计数器的工作原理
可编程的定时器/计数器的核心部件是一个计数器,计数器的工作就是对输入到该计数器的信号进行计数。
8.串行通信和并行通信的主要区别是什么?各有什么优缺点?
区别:串行通信是指数据一位一位的按顺序传送,并行通信是指数据的各位同时进行传送
优缺点:
- 从通信距离上,并行适合近距离,串行适合远距离
- 从通信速率上,并行数据传输速率比串行高
- 从抗干扰性上,串行基本没有信号间干扰问题
- 从费用上,串行的费用更低
- 从硬件可靠性上,并行复杂,安全隐患多;串行简单,安全隐患少
- 从软件设计上,并行软件简单,串行软件复杂
第二章
1.51系列单片机内部有哪些主要的逻辑部件?
CPU、RAM、ROM、定时器/计数器和多种IO功能部件
2.51系列单片机有4个8位并行端口,实际应用中8位数据信息由哪个端口传送?16位地址线怎么形成?P3口有什么功能?
(1).8位数据信息由P0端口传送
(2).P0、P2端口组成16位地址总线
(3).由P3端口的其他引脚构成串行口,外部中断输入,计数器的计数脉冲输入。
3.51单片机位地址7FH与字节地址7FH有何区别?位地址7FH具体在内存中的什么位置?
(1).存取的数据位数不一样
(2).20H的最高位上
4.51系列单片机的复位作用是什么?复位后单片机的状态如何?
(1).复位的作用:使CPU和系统中其他部件都处于一个确定的初始状态,并从这状态开始工作。
(2).状态如何:ALE、PSEN、P0、P1、P2、P3口都输出高电压
5.什么是时钟周期(震荡周期)、状态周期、机器周期、指令周期?当51系列单片机外部的震荡频率是8MHz时,其机器周期是多少?
(1).时钟周期:单片机提供定时信号的振荡源的周期
(2).状态周期:两个振荡周期是一个状态周期
(3).机器周期:完成指令中一个阶段的时间,一个机器周期是6个状态周期
(4).指令周期:完成一条质指令的时间,n个机器周期
计算: Tm=12/fosc =12/8MHZ=1.5μS
第三章
1.访问外部数据存储器(或者IO口)和程序存储器可以用哪些指令来实现?
MOVX A,@R1
MOVX @R1,A
MOVX @DPTR,A
MOVX A,@DPTR
MOVC A,@A+PC
MOVC A,@A+DPTR
2.设(A)=40H,(RI)=23H,(40H)=05H。执行下列两条指令后,累加器A和RI以及内部RAM中 40H 单元的内容各为何值?
(A) = 25H
(R1)= 40H
(40H) = 03H
3.设(A)=01010101B,(R5)=10101010B,分别写出执行:
的结果
(A)=0000 0000B
(A)=1111 1111B
(A)=1111 1111B
4.用三种方法实现累加器A和寄存器B的内容交换
(1) XCH A,B
(2) MOV R0,A
MOV A,B
MOV B,R0
(3) PUSH A POP A
PUSH B POP B
5.写出实现下列要求的指令或程序片段
(1)
MOV A,30H
ADD A,31H
MOC 31H,A
(2)
MOV A,20H
MOV DRPT,#2000H
MOV @DRPT,A
(3)
MOV A,20H
ANL A,#77H
MOV 20H,A
(4)
MOV A,20H
ORL A,#88H
ANL A,#DFH
MOV 20H,A
(5)
MOV A,20H
ORL A,#88H
XRL A,#20H ;哪位取反哪位为1
MOV 20H,A
6.试分析下列程序段执行后,A=?(30H)=?
初始值:
30H = 0xA4(二进制 1010 0100)
A = 0xD6(二进制 1101 0110)
R0 = 0x30
R2 = 0x5E(二进制 0101 1110)
执行指令:
ANL A, R2:A = 0xD6 & 0x5E = 0x56(二进制 0101 0110)
ORL A, @R0:A = 0x56 | 0xA4 = 0xF6(二进制 1111 0110)
SWAP A:交换 A 的高低 4 位,A = 0x6F(二进制 0110 1111)
CPL A:按位取反,A = 0x90(二进制 1001 0000)
XRL A, #0xFE:A = 0x90 ^ 0xFE = 0x6E(二进制 0110 1110)
ORL 30H, A:30H = 0xA4 | 0x6E = 0xEE(二进制 1110 1110)
结果:
A = 0x6E
(30H) = 0xEE
7.设片内RAM(30H)=0EH,则执行下面程序后,(A)=?并指出该程序完成的功能
(A) = 0x8C
该程序完成的功能:二进制的倍数运算
第四章
1.编程将片内 30H~39H 单元中的内容送到以 3000H 为首的存储区中。
2.从片内 RAM 60H 开始存放 20 个数据,试统计正数、负数及零的个数,并将结果分别存放在 50H/51H/52H 单元中。
3.设 10 次采样值依次存放在片内 RAM 50H~59H 的连续单元中,试编程去掉一个最大值,去掉一个最小值,求其余 8 个数的平均值,并将结果存放在 60H 中。
4.编写程序将 R4、R5、R6 中的 3 字节数据对半分解成 6 字节,存入显示缓冲区(DISMEM0~DISMEM5)。
5.设片内 RAM 中以 20H 开始的单元,连续存放 10 个非压缩 BCD 码,试将其转换为 ASCII 码,存放到片内以 50H 开始的单元中。
6.从 20H 单元开始有一无符号数据块,其长度在 20H 单元。求出数据块中的最小值,并存入 21H 单元。
1.
MOV R0,#30H
MOV DRPT,#3000H
MOV R7,#10
LOOP1:
MOV A,@R0
MOVX @DRPT,A
INC R0
INC DRPT
DJNZ R7,LOOP1
2.
MOV R0,#60H
MOV R7,#20
MOV 50H,#0
MOV 51H,#0
MOV 52H,#0
LOOP2:
MOV A,@R0
JZ ZERO_COUNT
JB ACC.7,NEG_COUNT
INC 50H
SJMP NEXT_DATA
ZERO_COUNT:
INC 52H
SJMP NEXT_DATA
NEG_COUNT:
INC 51H
NEXT_DATA
INC R0
DJNZ R7,LOOP2
3.
MOV R0,#50H
MOV R7,#10
MOV A,@R0
MOV 5AH,A
MOV 5BH,A
LOOP3:
INC R0
MOV A,@R0
CJNE A,5AH,COMP_MAX
COMP_MAX:
JC NOT_MAX
MOV 5AH,A
NOT MAX:
CJNE A,58H,COMP_MIN
COMP_MIN:
JNC NOT_MIN
MOV 5BH,A
NOT_MIN:
DJNZ R7,LOOP3
MOV R0,#50H
MOV R7,#10
MOV R6,#0
MOV R5,#0
LOOP4:
MOV A,@R0
CJNE A,5AH,NOT_MAX_SUM
SJMP SKIP_SUM
NOT_MAX_SUM:
CJNE A,58H,NOT_MIN_SUM
SJMP SKIP_SUM
NOT_MIN_SUM:
ADD A,R5
MOV R5,A
CLR A
ADD A,R6
MMOV R6,A
SKIP_SUM:
INC R0
DJNZ R7,LOOP4
MOV A,R5
MOV B,#8
DIV AB
MOV 60H,A
4.
MOV A,R4
ANL A,#0F0H
SWAP A
MOV DISMEM0,A
MOV A,R4
ANL A,#0FH
MOV DISMEM1,A
MOV A,R5
ANL A,#0F0H
SWAP A
MOV DISMEM2,A
MOV A,R5
ANL A,#0FH
MOV DISMEM3,A
MOV A,R6
ANL A,#0F0H
SWAP A
MOV DISMEM4,A
MOV A,R6
ANL A,#0FH
MOV DISMEM5,A
5.
MOV R0,#20H
MOV R1,#50H
MOV R7,#10
LOOP:
MOV A,@R0
ORL A,#30H
MOV @R1,A
INC R0
INC R1
DJNZ R7,LOOP
6.
MOV R0,#21H
MOV R7,20H
MOV A,@R0
MOV 21H,A
LOOP:
INC R0
MOV A,@R0
CJNE A,21H,COMPARE
COMPARE:
JNC NEXT
MOV 21H,A
NEXT
DJNZ R7,LOOP
SJMP $
第五章
1.在 51 系列单片机的输入/输出端口中,哪个输入输出端日执行输出功能时没有内部上拉电阻
P0
2.在51系列单片机中,若要扩展外部存储器或 IO口时,数据总线连接哪个输入输出端口
P0
3.在51系列单片机中,若输入/输出端口执行输入操作时,为何要先送“1”到该输入端口?
防止场效应管处于导通状态使引脚为0,从而引起误读
4.编写一个延迟1s的延迟子程序
DEL0:
MOV R5, #10 ; 外层循环
DEL1:
MOV R6, #100 ; 中层循环
DEL2:
MOV R7, #250 ; 内层循环(1ms)
DEL3:
DJNZ R7, DEL3 ; 4μs × 250 = 1ms
DJNZ R6, DEL2 ; 中层循环 × 100 = 100ms
DJNZ R5, DEL1 ; 外层循环 × 10 = 1000ms(1s)
RET
5.开关抖动现象怎么处理
写5到10毫秒的延迟子程序
6.简述51系列单片机的P0P1P2P3口各有什么特点,以P1口为例说明准双向IO口的意义
(1).特点:
[1].P0口既可以作为通用的IO接口使用,也可以作为单片机系统的地址/数据线使用,为此在PO口的电路中有一个多路转换电路MUX。在信号控制下,多路转换电路可以分别接通锁存器输出或者地址/数据线输出
[2].P1口只能作为一般的IO接口使用,记为P1.7~P1.0
[3].P2口可以作为通用的IO接口使用,也可以作为地址总线使用,故其位结构比P1口多了一个多路控制开关MUX。P2口作为一般接口使用时,记为P2.7~P2.0作为地址口使用时是地址的高8位,记为A15~A8
[3].P3口可以作为通用IO接口使用,还可以作为第二功能口使用。P3作为一般的IO接口使用时记为P3.7~P3.0
(2).意义:
[1].灵活性:准双向IO口允许同一个引脚在不同的时间执行不同的功能。
[2].节省资源:同一引脚可以进行输入和输出。
[3].易于控制:通过简单的寄存器操作,可以轻松的切换输入输出。
第六章
1.什么是中断源?51系列单片机有哪些中断源?各有什么特点?
(1)引起计算机中断的事件
(2).五种中断源:一类是外部中断源,包括INTO和INT1(零和一)。另一类是内部中断源,包括两个定时器,一个计数器
(3).外部中断源:主要用于响应外部事件,灵活性强,适用于实时响应需求高的场合。
内部中断源:主要用于处理内部功能和状态变化,适用于周期性任务和数据处理。
2.编写一段对中断系统初始化的程序,允许外部中断0,外部中断1,定时器/计数器T0溢出中断为高优先级中断
; 中断系统初始化:允许外部中断0、外部中断1、定时器T0溢出中断,T0为高优先级
INIT_SYSTEM:
; 开启总中断
SETB EA
; 允许外部中断0
SETB EX0
; 外部中断0设为跳沿触发(可按需改电平触发,如 CLR IT0 )
SETB IT0
; 允许外部中断1
SETB EX1
; 外部中断1设为跳沿触发(可按需改,如 CLR IT1 )
SETB IT1
; 允许定时器T0溢出中断
SETB ET0
; 设置定时器T0为高优先级
SETB PT0
; 关闭串口中断(手写代码里 SETB ES 是多余的,题目没要求 )
CLR ES
; 外部中断0设为低优先级(默认也低,可清确保 )
CLR PX0
; 外部中断1设为低优先级(默认也低,可清确保 )
CLR PX1
; 串口中断优先级设为低(多余配置,清掉 )
CLR PS
RET
3.在51单片机中,外部中断有哪两个触发方式?如何加以区分?
TT=1为脉冲触发方式
TT=0为电平触发方式
由TCON寄存器的IT0和IT1位进行选择和区分
4.51单片机能提供几个汇总段优先级?各个中断优先级如何确定?在同一优先级中各个中断源的优先级如何确定?
(1).两个中断优先级
(2).用中断优先寄存器的5位状态管理五个中断源的优先级别
(3).同一级中硬件决定了优先级,由高到低排序:外部中断0中断;定时器计数器0溢出中断;外部中断1中断;定时器计数器1溢出中断;串行口中断
5.中断允许寄存器IE各位的定义是什么?
EA:中断允许总控制位 EA=1开放中断,EA=0 CPU屏蔽所有中断请求
EX0、ET0、EX1、ET1、ES
第七章
1.简述TMOD各位的含义
TMOD称为工作方式及工作模式选择寄存器,用于设定两个定时器计时器的工作方式,但是TMOD寄存器不能寻址,只能用字节传送指令设置内容
2.初始值TH0、TL0怎样计算?
3.51系列单片机内设有几个可编程的定时器/计数器?简述其作为定时器使用和计数器的不同
(1).两个十六位计数器。每个十六位计数器可以分位两个八位计数器
(2).做定时器时,输入的时钟脉冲是由晶体振荡器输出经12分频得到的。
(3).做计数器时,是对外部事件的计数,外部输入信号通过响应外部输入的引脚T0或者T1输入
4.简述TR0、TF0的含义以及应用
TR0:定时器/计数器运行控制位
应用:等于0的时候停止定时器计数器工作,等于1的时候启动定时器计数器工作
TF0:加法计数器溢出标志位
应用:当加法计数器溢出时,该位置为1,使用中断方式时,该位置为0
5.如果51系列单片机系统的晶振频率为12MHZ,分别指出定时器/计数器模式1和模式2的最长定时时间
6.为什么在选择工作模式时先选择模式2,模式2不能满足要求了再选模式1?
因为模式2具有自动重装计数初值的功能,而工作模式1和工作模式0不能自动重装初值。
第八章
1.简述TI和RI的含义
(1).TI是发送中断标志位,方式0时发送完第八位后,该位由硬件置位,在其他模式下,于发送停止位之前,由硬件置位
(2).RI是接收中断标志位,方式0时接收完第八位后,该位由硬件置位,在其他模式下,当接收到停止位后由硬件置位。
2.简述波特率的含义
在并行通信中,传输速度以每秒传输字节数表示,在串行通信中,常用波特率来表示数据传送的速率,波特率就是每秒内传送二进制数据的位数。
3.51单片机的串行通信工作方式1和工作方式3通信模式下,波特率通过哪个定时器驱动产生?采用何种定时模式?如果要求采用的始终评率位11.0592MHz,产生的波特率为2400b/s,应该怎么对定时器进行初始化操作?
(1)T1
(2)模式二
; UART初始化子程序
UART_Init:
; 配置定时器1为模式2
MOV TMOD, #20H ; TMOD = 0010 0000B (定时器1模式2)
; 设置波特率为2400bps(晶振11.0592MHz)
MOV TH1, #0FDH ; 初值计算为253(0xFD)
MOV TL1, #0FDH ; 自动重装值
; 波特率不加倍(SMOD=0)
MOV PCON, #00H ; PCON = 0000 0000B
; 启动定时器1
SETB TR1 ; 开启定时器1
; 配置串口为方式1(8位数据,可变波特率,允许接收)
MOV SCON, #50H ; SCON = 0101 0000B (REN=1允许接收)
RET ; 返回主程序
4.若异步通信,每个字符由11位组成,串行口每秒传送250个字符,波特率是多少
11*250=2750
5.51单片机的串行口控制寄存器SCON的SM2,TB8,RB8有何作用
SM2是多级通信控制位,控制接收哪个位置的数据
TB8是发送数据的第九位,表示主机发送的是地址帧还是数据帧
RB8接收数据的第九位,表示接到数据的特征
补充:8-3:
7-1