单片机原理及应用
第二章
- 在AT89S52单片机中,如果采用6MHz晶振,一个机器周期为 2us 。
时钟周期Tocs=1focs 机器周期 Tcy=12focs 指令周期:一条指令所用的时间,单字和双字节指令一般为单机器周期和双机器周期。
- AT89S52单片机的机器周期等于 12 个时钟振荡周期。
- 若A中的内容为63H,那么P标志位的值为 0 。
P(PSW.0)奇偶标志位 该标志位表示指令执行后,累加器A中1的个数是奇数还是偶数。P=1为奇数,P=2为偶数 63H=0101 0011B
- AT89S52单片机程序存储器的寻址范围是由程序计数器PC的位数所决定的,因为AT89S52单片机的PC是16位的,因此其寻址的范围为 64 KB。
1B=8bit,1KB=1024B, 2^16B=64KB
- AT89S52单片机复位时,P0~P3口的各引脚为 高 电平。
- AT89S52单片机复位时,堆栈指针SP中的内容为 07H ,程序指针PC中的内容为 0000H 。
- 程序在运行中,当前PC的值是( C )
- 当前正在执行指令的前一条指令的地址 B、当前正在执行指令的地址
- 当前正在执行指令的下一条的首指令 D、控制器中指令寄存器的地址
PC是程序计数器,用于存放下一条指令所在单元的地址。
- 使AT89S52单片机且引脚EA=1时,仍可外扩64KB的程序存储器。( 错 )
EA=1先访问片内(8KB)再访问片外(60KB), EA=0只读取片外(最大64KB)
简答
- AT89S52单片机的64KB程序存储器空间有6个单元地址对应AT89S52单片机6个中断源的中断入口地址,请写出这些单元的入口地址及对应的中断源。
中断源 入口地址
外部中断0 0003H
定时器/计数器0 000BH
外部中断1 0013H
定时器/计数器1 001BH
串行口 0023H
定时器/计数器2 002BH
- 说明AT89S52单片机的EA引脚接高电平或低电平的区别。
外部程序存储器访问允许控制端
EA=1时,在AT89S52单片机内的PC值不超出1FFFH(即不超出片内8KB程序存储器的最大地址)时,AT89S52单片机读片内程序存储器,(8KB)中的程序代码,但PC值超过1FFFH(即超出片内8KB Flash存储器的最大地址)时,将自动转向读取片外60KB(2000H~FFFFH)程序存储器空间中的代码。
EA=0时,单片机只读取外部程序存储器中的内容,读取的范围为0000H~FFFFH(64KB),此时片内的8KB Flash程序存储器不起作用。
第三章
- 指令格式由 操作码 和 操作数 组成,也可仅由 操作码 组成。
- 在基址加变址寻址方式中,以 A 作为变址寄存器,以 PC 或 DPTR 作为基址寄存器。
- 在AT89S52单片机中,PC和DPTR都用于提供地址,但PC是为访问 程序 存储器提供地址,而DPTR是为访问 数据 存储器提供地址。
- 在寄存器间接寻址方式中,其“间接”体现在指令中寄存器的内容不是操作数,而是操作数的 地址 。
先从寄存器中找到操作数的地址,再按照该地址找到操作数。
- 下面程序段的功能是 交换Acc与B的值 。
PUSH Acc
PUSH B
POP Acc
POP B
PUSH进栈指令
POP出栈指令
像一个桶,先放Acc,再放B。拿出时先拿B的值放在Acc,再拿A的值放到B
累加器A也可以写成Acc,其中区别是:当使用A时是寄存器寻址,Acc是直接寻址。如POP A不能写成POP A,STEB Acc.0不能写成SETB A.0
- 假定(A)=83H,(RO)=17H,(17H)=34H,执行以下指令后,(A)=__0CB______。
ANL A,#17H A的值83H->1000 0011,
17H->0001 0111
相与得->0000 0011->03H这是A的值
ORL 17H,A 17H->34H ->0011 0100
A的值03H->0000 0011
相或得->0011 0111->37H 这是17H的值
XRL A,@R0 A的值03H->0000 0011
R0->17H->37H->0011 0111
异或得->0011 0100->34H 这是A的值
CPL A A的值34H->0011 0100
取反得->1100 1011->0CBH
- 假设(A)=55H,(R3)=OAAH,在执行指令“ANL A,R3”后,(A)=__00H____,
(R3)=___0AAH____。
55H->0101 0101
AAH->1010 1010
相与-> 0000 0000->00H放入A,R3不变
- 假定,(SP)=60H,(A)=30H,(B)=70H,执行下列指令后,SP的内容为__62H____,
61H单元的内容为___30H___,62H单元的内容为___70H____。
PUSH Acc
PUSH B
PUSH先将SP加1,然后将direct中的内容送到SP所指的RAM中
POP先将SP所指栈顶的内容送到direct中,然后SP减1
- 判断以下指令的正误。
- MOV 28H,@R2 错(MOV direct @Ri ;i=0~1)
B.DEC DPTR 错(不存在这条指令)
C.INC DPTR 对
D.CLR RO 错(不存在这条指令)
E.CPL R5 错(不存在这条指令)
- MOV R0,R1 错(不存在这条指令)
G.PUSH DPTR 错(PUSH后面只能是直接寻址)
H.MOV F0,C 对(F0(PWS.5)用户使用的标志位)
I.MOV F0,Acc.3 错(只有MOV bit,C 和MOV C ,bit)
J.MOVX A,@R1 对(MOVX A,@Ri)
- MOV C,30H 对(可位寻址在片内RAM(00H ~7FH位地址,字节地址是20H~FH)和SFR)
L.RLC R0 错(不存在这条指令)
- 判断下面说法是否正确。AB
- 立即数寻址方式是被操作的数据本身就在指令中,而不是它的地址在指令中。 正确
- 指令周期是执行一条指令的时间。 正确
- 指令中直接给出的操作数称为直接寻址。(立即数寻址)
- 内容寄存器Rn(n=0~7)可作为间接寻址寄存器。(0~1)
- 判断以下指令中,哪些属于单纯读引脚的指令。C
- MOV P1,A B.ORL P1,#OFH C.MOV C,P1.5 D.ANL P1,#OFH
- 程序在运行中,当前PC的值是( C )
- 当前正在执行指令的前一条指令的地址 B.当前正在执行指令的地址
- 当前正在执行指令的下一条指令的首地址 D.控制器中指令寄存器的地址
- 对程序存储器的读操作,只能使用( D )
- MOV指令 B.PUSH指令 C.MOVX指令 D.MOVC指令
第四章
- 外部中断1的中断入口地址为 0013H 。定时器T1的中断入口地址为 001BH 。
- 下面说法错误的是( B )
- 同一级别的中断请求按时间的先后顺序响应。
- 同一时间同一级别的多中断请求,将形成阻塞,系统无法响应。
- 低优先级中断请求不能中断高优先级中断请求,但是高优先级中断请求能中断低优先级中断请求。
- 同级中断不能嵌套。
- 必须有中断源发出中断请求,并且CPU开中断,CPU才能响应中断。( 对 )
- AT89S52单片机中的同级中断不能嵌套。( 对 )
- 中断服务子程序可以直接调用。( 错 )
- 在开中断的前提下,只要中断源发出中断请求,CPU就会立刻响应中断。( 错 )
第五章
- 如果采用频率为3MHz的晶振,定时器/计数器Tx(x=0,1)工作在方式0、1、2下,其方式0的最大定时时间为 32768us ,方式1的最大定时时间为 262144us ,方式2的最大定时时间为 1024us 。
2n*12focs=213*123*106=8192*4*10-6=32768*10-6s=32768us
2n*12focs=216*123*106=65536*4*10-6=262144*10-6s=262144us
2n*12focs=28*123*106=256*4*10-6=1024*10-6s=1024us
- AT89S52单片机的晶振为6MHz,若利用定时器T1的方式1定时2ms,则TH1= FCH ,TL1= 18H 。
N=2n-T*focs12=216-2*10-3*6*10612=65536-1000=64536
TH1=64536/256=252=FCH
TL1=64536%256=24=18H
- 定时器T0、T1工作方式1时,其计数器为( B )位。
A.8位 B.16位 C.14位 D.13位
- 定时器T2工作在自动重装载方式时,其计数器为( A )
A.8位 B.13位 C.14位 D.16位
简答
- 定时器/计数器T1、T0的工作方式2有什么特点?适用于哪些应用场合?
方式2为初值自动装入的8位定时器/计数器,克服了在循环定时或循环计数应用时就存在用指令反复装入计数初值影响定时精度的问题。具有自动恢复初值的特点,适用于精确定时, 适用于波特率的产生。
- 如果系统的晶振的频率为24MHz,定时器/计数器工作在方式0、1、2下,其最大定时时间各为多少?
晶振的频次为24MHz,机器周期为0.5us。
2n*12focs=213*1224*106=8192*0.5*10-6=4096*10-6s=4096us
2n*12focs=216*1224*106=65536*0.5*10-6=32768*10-6s=32768us
2n*12focs=28*1224*106=256*0.5*10-6=128*10-6s=128us
第六章
- AT89S52单片机的串行异步通信口为 全双工 (单工/半双工/全双工)。
单工:只能一个方向传输
半双工:可以双向传输,但不能同时传输
全双工:可以同时双向传输
同步:采用同一个时钟,通过一条时钟线加到收发双方,使双方完全同步
异步:按各自的时钟控制收发
- 串行口的方式0的波特率为 fosc/12 。
- AT89S52单片机串行口的四种工作方式中, 方式1 和 方式3 的波特率是可调的,与定时器/计数器T1的溢出率有关,另外两种方式的波特率是固定的。
- 串行口工作方式1的波特率是 方式1波特率 =2SMOD32*定时器T1的溢出率 。
- 控制串行口工作方式的寄存器是( D )
- TCON B.PCON C.TMOD D.SCON
TCON定时器/计数器控制寄存器
PCON功率控制寄存器,其中第八位为SMOD
TMOD定时器/计数器工作方式寄存器
SCON串行口控制寄存器
第七章
填空题
- “8”字型的LED数码管如果不包括小数点段共计___7___段,每一段对应一个发光二极管,有_____共阴极数码管______和______共阳极数码管______。
- 对于共阴极带有小数点段的数码管,显示字符“6”(a段对应段码的最低位)的段码为____7DH_____,对于共阳极带有小数点的数码管,显示字符“3”的段码为____B0H_____
- 已知8段共阳极LED数码管显示器要显示某字符的段码为A1H(a段为最低位),此时显示器显示的字符为____d____。
判断题
- P1-P3口作为输入端口使用时,必须先向端口寄存器写入1。 ( 对 )
先写1使场效应管截止,这时才能正常读引脚,否则都会被拉低
- P0-P3口的驱动能力是相同的。 ( 错 )
P0口为漏极开路
- 当显示的LED数码管位数较多时,动态显示所占用的I/O口多,为节省I/O口与驱动电路的数目,常采用静态扫描显示方式。 ( 错 )
动态扫描占用IO口少
- LED数码管动态扫描显示电路只要控制好每位数码管点亮显示的时间,就可造成“多位同时亮”的假象,达到多为LED数码管同时显示的效果。 ( 错 )
控制每位数码管点亮的时间和间隔
- LED数码管工作于动态显示方式时,同一时间只有一个数码管被点亮。 ( 对 )
- 动态显示的数码管,任意时刻只有一个LED数码管处于点亮状态,是LED的余晖与人眼的“视觉暂留”造成数码管同时显示的“假象”。 ( 对 )
第八章
填空题
- 单片机存储器的主要功能是存储____程序______和____数据______。
- 设计一个以AT89S52单片机为核心的系统,如果不外扩程序存储器,使其内部8KB闪烁程序存储器有效,则其____EA_____引脚应该接____+5V_____。