(说明:考试内容以89C51单片机为基础)班级 姓名 学号 一、 填空题(每空1分,共24 分) 1. MCS89C51单片机系统汇编程序中,程序计数器指针是 PC ,数据指针是 DPTR 。
2. 已知一系统中MCS89C51单片机的机器周期为2us,则在该系统中,单片机外接晶振为 6 MHz,
其指令最长周期为 8 us。
3. MCS89C51单片机的片内与片外数据存储器最大容量为 64KB+256B(128B) 。
4. 程序中“LOOP :SJMP rel”的相对转移以转移指令所在地址为基点向前最大可偏移 -128 单元地
址,向后最大可偏移 +127 单元地址。(正负号可不写)
5. MOVC A,@A+DPTR 这条指令的寻址方式为 变址 寻址方式。
6. MCS89C51单片机片内数据存储器中20H的第6位,它的位地址为 06H 。
7. 对于MCS89C51单片机串行口的方式1,每分钟要求传送14400字节数据,那么波特率应该设置为
2400 bit/s。
8. 目前单片机系统的扩展方式主要分为 并行扩展 和 串行扩展 两种。
9. MCS89C51单片机系统采用管脚直接扩展按键的方式可以分为 独立式 和 矩阵式(或行列式) 。 10. MCS89C51单片机的P0、P2作为外部扩展数据存储器的地址总线,P0作为数据总线,在读取过程中,
执行“MOVX A,@DPTR”(DPTR指针地址为EFFFH)指令时,单片机管脚 P3.7(/RD) 和 P2.4 输出为低电平。
11. MCS89C51单片机有四个工作寄存器区,由 PSW 状态字中的某些位进行控制,在单片机复位后,若
需要使用2区工作寄存器,且不能改变PSW状态字中其余位的值,需要执行哪一条语句 SETB RS1(SET B 0D4H。 ORL PSW,#10H) 。
12. 在共阳极LED数码管的接法中,P1.0口到P1.7分别连接数码管的a到h,如需要显示数字7,则在
P1口中需要执行MOV P1, #0F8H 。
13. MCS89C51单片机用计数器T1模式1计数,要求每次满10次产生溢出标志,则TH1和TL1的初始
值应该为 FFH , F6H 。
14. 单片机CPU允许响应定时器1中断请求时,IE中的 EA(AFH) 和 ET1(ABH) 必须设为1。 15. ADC0809有8个输入通道,要选择通道IN4,ADDC、ADDB、ADDA应为 100 。 16. MCS89C51串行口的发送与接收都是以 SBUF 特殊功能寄存器的名义进行读或写的。 二、 选择题(每小题2分, 共26分)
1. 下面哪一项是汇编语言指令格式中必不可少的 A 。
A 操作码 B 操作数 C 注释 D 标号 2. 下列指令中有错误的是 B 。
A CLR A B MOVC @DPTR,A C MOV P0,A D JBC TF0,LOOP 3. 程序计数器PC 是用于存放和指示 C 。
A 当前正在执行指令的前一条指令的地址
1
B 当前正在执行指令的地址
C 当前正在执行指令的下一条指令的地址 D 控制器中指令寄存器的地址
4. MCS89C51单片机中,指令DA A应该在哪种指令后面 B 。
A 加法指令 B BCD码加法指令 C 减法指令 D BCD码减法指令 5. RS232串行电气总线中,其电气特性规定逻辑0的电平是 D 。
A 0.3V以下 B 0.7V 以下 C -3V以下 D 3V以上
6. 键盘与单片机之间通过外部中断模式1接口,中断服务程序的入口地址为3000H,只有 D 才能正
常工作
A 把3000H存入03H B 把3000H存入13H
C 把LJMP 3000H的机器码存入03H D 把LJMP 3000H的机器码存入13H
7. 要使MCS89C51单片机仅能响应定时器1中断请求、串行中断请求,中断允许寄存器IE的值应该是
A 。
A 98H B 84H C 42H D 22H
8. MCS89C51上电复位后, B 描述是正确的。
A. PC=0000H,P0=11H B. PC=0000H,SP=07H C. PSW=00H,P0=11H D. PC=0000H,SP=00H
9. 从使用的逻辑角度,关于MCS89C51程序存储器或数据存储器地址空间范围描述正确的是 A 。
A. 片内RAM 00~FFH和 片外RAM 0000H~FFFFH B. 片内RAM 00~FFH和 片外RAM0100H~FFFFH C. 片内ROM 0000~1000H和 片外ROM 0000H~FFFFH D. 片内ROM 0000~FFFFH 和 片外ROM F000H~FFFFH
10. 定时计数器0设置为计数方式时,外部P3.4引脚计数脉冲的最高频率应该是晶振频率的 B 。
A 1/12 B 1/24 C 1/48 D 1/2
11. 设堆栈指针SP=60H,执行下面的一条 B 类型指令后,SP=5FH。
A. PUSH B.POP C. AJMP D. LCALL
12. 使用89C51时,当/EA=1时,可以扩展的外部ROM大小为 B 。
A 64KB B 60KB C 58KB D 32KB
13. 如果要确定8255A的工作方式,应当将适当的命令字写入 D 。
A. 8255A的A 口 B. 8255A的状态寄存器 C. 8255A的B 口 D. 8255A的控制寄存器 三、指令类型题(每空1分,共10分)
1. 设(A)= 00H,(R1)= 20H,内存20H单元的内容是22H,执行下面指令:
MOV R7,#05H MOV 24H,#00H 2
LOOP: SETB 09H INC A DJNZ R7,LOOP MOV @R1,A 执行完上述指令后:
A中的内容(A)= 5 ;
内存24H字节单元中的内容为 0 ; 内存20H字节单元中的内容为 5 ; 指令MOV 24H,#00H 的字节数是 3 ;
指令DJNZ R7,LOOP 的十六进制代码是DFH和 FDH ; 2. 现有延时子程序,将程序补充完整 Tms1: ___________________ PUSH 06H MOV 07H,#200 PUSH 07H $ Tms2 06H RET Tms2: MOV 06H,#100 DJNZ 06H,_______ DJNZ 07H,_______ POP POP _______ 07H ___________________ 四、指令判读(共10分 找出错误指令1分,改正1分)
下面的程序片段(非中断程序)的功能为:找出片外RAM2000H-200FH数据区域中的最小值,结果存于R2中。找出错误的指令并画×,在后面的横线上写出正确的指令 SECH: MOV DTRR,#2000H MOV R7,#0F MOV A,@DPTR MOV A,B DPTR ( × ) MOV DPTR,#2000H ( × ) MOV R7,#0FH ( × ) MOVX A,@DPTR ( × ) MOV B,A ( × ) MOVX A,@DPTR ( × ) DJNZ R7,SLOP ( × ) MOV R2,B SLOP: INC SLP1: SLP2: MOV A,@DPTR CJNE A,B,SLP1 JNC SLP2 MOV B,A JNZ R7,SLOP MOV R7,B
3
RET 五、接口电路(10分)
指令不惟一,逻辑关系和指令对即可。
ORG 0100H MOV P0, #0FFH NOP
WAIT: MOV A, P0 ;读取P0的开关的状态,即P0.0、P0.1
;以下为按键判断的几条指令
;键K2按下,跳转到LOOP2。键K1按下,顺序执行 ;无键按下,重新读P0口判断。键的去抖不考虑。 ;横线数不代表指令条数,请根据需要编写指令。
JNB P1.0 LOOP2 JB P0.0 WAIT (4分) SETB P3.3 ;TLC1549的片选无效 CLR P3.1 ;TLC5615的片选有效
…….. (此处省略的为TLC5615转换数据输出的相关指令) SJMP LOOP1
LOOP2: SETB P3.1 ;只选中TLC1549的相关指令
CLR P3.3 (3分) MOV R0, #02H
LCALL READDA ;READDA 为读转换结果的子程序
MOV R1, A MOV R0, #08H
LCALL READDA
MOV R2, A
SETB P3.3 ;TLC1549的片选端无效 CLR P3.0 ;时钟线输出低电平 (3分)
LOOP1: RET
六、编程题(本题共2小题,每小题10分,共20分)
1. 编程统计片内RAM 30H-50H单元中FFH的个数,并将统计结果存入51H中
4
编程方法并不唯一。 建议分值:
首地址(1分),循环次数(1分),统计初值(1分),循环结构(2分), FFH的判断(2分),存数(1分),程序结构(2分) ORG 0000 SJMP MAIN ORG 0030H MAIN: MOV 51H,#00H ;计数器单元清零 MOV R0,#30H ;设置数据区域首地址 MOV R7,#21H ;设置循环变量为21H LOOP1: MOV A,@R0 ;读取数据 CPL A ;数据取反 JNZ LOOP2 ;判断A是否为0,若不为0,则跳转到LOOP2 INC 51H ;若A=0,则计数器单元+1 LOOP2: INC R0 ;指向下一计数单元 DJNZ R7,LOOP1 ;循环单元-1,若不为0,继续 RET ;返回 END
2. 已知AD转换器转换后的温度值存在4000H,蜂鸣器连接在P1.0引脚,低电平驱动蜂鸣器。设定温度
值存在片内RAM的40H中,当测量的温度值大于设定温度值时,蜂鸣器报警;当测量值小于设定值时,撤销报警;当测量值等于设定值时,蜂鸣器状态保持不变。试编写程序。
编程方法并不唯一,例如下面的两种写法都可以 建议分值:
取数初始化(2分),大于判断 (2分),等于判断 (2分),小于判断 (2分), 程序结构(2分)
MAIN: LOWER: HIGH: ORG SJMP ORG MOV MOV MOVX CLR SUBB JNC MOV MOVX CLR SUBB JC SJMP CLR SJMP SETB SJMP 0000 MAIN 0030H DPTR,#4000H B,40H A,@DPTR C A,B LOWER B,40H A,@DPTR C A,B HIGH MAIN P1.0 MAIN P1.0 MAIN ; ;设定温度值送B ;取测量的温度值 ;测量值大于设定值 ;测量值小于设定值 ;测量值等于设定值 5