(简答题A4,K4,D1)
1.C51 的data、bdata、idata 表明数据的什么特征?有什么区别?(4分) 答:data、bdata、idata是表明数据的存储类型,
data是指片内RAM的低128字节,可在一个周期内直接寻址; bdata是指片内RAM的位寻址区,16字节;
idata是指片内RAM的256字节,必须采用间接寻址。
2. 简述行列式扫描键盘的工作原理。(6分) (简答题A4,K9,D2)
答: 扫描键盘工作原理
(1) 首先X0~X3,始终接高电平,Y0~Y3给低电平,扫描P1.0~P1.3若全为高电平,则没有
键按下,若有低电平,则有键按下。
(2) 接着Y0输出低电平,Y1~Y3输出高平,扫描P1.0~P1.3,若全为高电平,则没有键按下,
若有低电平,则找出相位,得到所按的键。 (3) 再Y1输出低电平,Y0,Y2,Y3输出高电平,重复第2 步骤作. (4) 再Y2输出低电平,Y0,Y1,Y3输出高电平扫描 (5) 再Y3输出低电平,Y0,Y1,Y2输出高电平扫描
简答题:MCS-51采用6MHz的晶振,定时2ms,如用定时器方式1时的初值(16进制数)
应为多少?(写出计算过程)(6分)(简答题A4,K5,D2) 答案:
机器周期6×106=2×10-6s=2uS (2分)
12
又方式1为16进制定时器.故
(216—X)×2×10-6=2×10-3=>216-X=1000
=>X=65536-1000=64536 (3分) 即初值=FC18H (1分)
简答题:设R0的内容为32H,A的内容为48H,片内RAM的32H单元内容为80H,40H单元
内容为08H。请指出执行下列程序后上述各单元内容的变化。(4分) (简答题A4,K3,D2)
MOV
A, @R0
MOV @R0, 40H
MOV 40H, A MOV R0, #35H 答案:A=80H,(R0)=35H (32H)=08H (40H)=80H
简答题:什么是中断?其主要功能是什么?(4分,各1分)(简答题A4,K6,D1)
答案:中断就是对外界异步发生的事件作出及时的处理。 功能:分时操作;实时处理;故障处理。
简答题:片内RAM30H开始的单元中有10B的二进制数,请编程求它们之和(和<256 )。
(6分)(简答题A4,K3,D2) 答案:
ADDIO:MOV R0,30H
MOV R7,#9 MOV A,@R0 LOOP: INC R0
ADD A,@R0 DJNZ R7,LOOP MOV 30H,A RET
简答题:MCS-51外扩的程序存储器和数据存储器可以有相同的地址空间,但不会发生数据
冲突,为什么?(4分)(简答题A4,K2,D2)
答案:因为访问外扩的程序存储器和数据存储器执行的指令不同,所发出的控制信号也就不同。(2分)
读外部数据存储器时,RD*信号有效。写外部数据存储器时,WR*信号有效。而读外部程序存储器时,PSEN*信号有效。由于发出的控制信号不同,且只能有一种信号有效,因此,即使MCS-51外扩的程序存储器和数据存储器有相同的地址空间,也不会发生数据冲突。(2分)
简答题:编写一程序将片外数据存储器中7000H~70FFH单元全部清零。(6分) (简答题A4,K3,D2) 答案:
ORG 1000H
MOV DPTR,#7000H CLR A
MOV R0,A
LOOP: MOVX @DPTR,A
DJNZ R0,LOOP SJMP $
简答题:试比较中断与子程序调用有什么异同。(4分)(简答题A4,K6,D2)
答案:
同:都是中止当前主程序转去执行另一段子程序或中断服务子程序,执行完后都要返回到主程序(2分)
异:中断是在初始化中断后,自动完成中断的响应和处理
子程序调用是用户在程序中用指令主动调用,断点位置由用户决定(2分)
简答题:设内部RAM(30H)=5AH,(5AH)=40H,(40H)=00H,端口P1=7FH,问执行
下列指令后,各有关存储单元(即R0,R1,A,B,P1,30H,40H及5AH单元)的内容如何?(每个0.5分,共4分)(简答题A4,K3,D2)
MOV R0,#30H ;R0=30H MOV A,@R0 ;A=5AH MOV R1,A ;R1=5AH MOV B,R1 ;B=5AH MOV @R1,P1 ;(5AH)=7FH MOV A,P1 ;A=7FH MOV 40H,#20H ;(40H)=20H MOV 30H,40H ;(30H)=20H
答案:每一条指令执行后的结果如注释字段所标。最后结果为:R0=30H,R1=5AH,A=7FH,B=5AH,P1=7FH,(30H)=20H,(40H)=20H,(5AH)=7FH。
一.简答题:(共10分)
1. 按照给定的数据类型和存储类型,写出下列变量的说明形式(4分) (简答题A4,K4,D2)
(1)在xdata区定义无符号字符型数组val3[4]。
unsigned char xdata val3[4];
(2)在xdata区定义一个指向char类型的指针px。
char xdata *px;
(3)定义可位寻址变量flag。
bit flag;
(4)定义特殊功能寄存器变量P3。
Sfr P3=0xB0;
2. 在有串行通信时,定时器/计数器1的作用是什么,怎样确定串行口的波特率?(6分) (简答题A4,K7,D1)
答:在有串行通信时,定时器/计数器1的作用是串行口发生器。
串行口的波特率根据串行口的工作方式具有不同的计算方式: 方式0的波特率固定为晶体振荡器的十二分之一; 方式1的波特率=2SMOD.(定时器1的溢出率)/32; 方式2波特率=2SMOD.(fosc/64);
方式3波特率同方式1(定时器l作波特率发生器)。
简答题:简述累加器的ACC的作用。(3分)(简答题A4,K2,D1)
答:(1)8位专用寄存器,运算时存放一个操作数。运算后存放运算结果,所以称它为累加器。
(2)变址寄存器
(3)数据输入输出的中转站
二.分析说明各指令的功能(10分)程序填空和分析题(A5,K5,D2)
设时钟频率为6MHz,下列程序是利用定时器产生1s定时的程序。用工作模式1定时100ms的初值为3CB0H。 设时钟频率为6MHz,下列程序是利用定时器产生1s定时的程序。用工作模式1定时100ms的初值为3CB0H。
ORG LJMP ORG AJMP
0000H MAIN 000BH SERVE
; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;
循环结束
T0的中断入口
设堆栈指针
ORG MAIN: MOV
MOV MOV MOV MOV SETB SETB SETB SJMP MOV DJNZ CLR
2000H SP, #60H
B, #0AH TMOD, #01H TL0, #0B0H TH0, #3CH TR0 ET0 EA $
设循环次数 设置定时器0工作在方式1,定时方式 赋初值 起动T0
中断循环
SERVE: MOV TL0, #0B0H TH0, #3CH B, LOOP TR0
1S到,T0结束
LOOP: RETI
程序填空和分析题
相关推荐: