课堂习题及作业:
填空及简答
1.十进制29的二进制表示为 。
2.单片微型机主要有 、 、 、 、 等部分组成。 3.计算机中最常用的字符信息编码是 。 4.二进制数11011.0011转化为十进制数是 。
5.何谓单片机?单片机与一般微型计算机相比,具有哪些特点? 6.单片机主要应用在哪些领域? 7.单片机经历了哪几个发展阶段?
8.什么是二进制?为什么在数字系统、计算机系统中采用二进制? 9.将下列各数按权展开为多项式:
(1) 110110B (2) 5678.32D (3)1FB7H 10.把下列十进制数转化为二进制、十六进制:
(1) 135 (2) 548.75 (3)254.25 11.什么叫BCD码和ASCII码?
12 .MCS-51的堆栈是临时在_ 器内开辟的区域。
13 .MCS-51片内 范围内的数据存储器,既可以字节寻址又可以位寻址。 14 .PSW=18H时,则当前工作寄存器是 15. 80C51含 掩膜ROM。
16 .控制串行口工作方式的寄存器是
17 .P1口的每一位能驱动 个TTL低电平负载。
18 .一个机器周期等于 时钟周期,振荡脉冲2分频后产生的时钟信号的周期定义为时钟周期。
19. MSC-51单片机内部有哪些主要的逻辑部件? 20 .MSC-51单片机程序存储器和数据存储器各有什么功用?其内部RAM区功能结构如何分配?
21 .在内部RAM中,4组工作寄存器使用时如何选用?位寻址区域的字节地址范围是多少?
22 .程序状态字PSW的作用是什么?常用标志有哪些位?作用是什么? 23 .简述定时器的四种工作模式的特点,如何选择和设定?
24 .MCS-51的中断允许触发器内容为83H,CPU将响应的中断请求是那些? 25 .PC是什么寄存器?是否属于特殊功能寄存器?它有什么作用?
26 .DPTR是什么寄存器?它由哪些特殊功能寄存器组成?它的主要作用是什么? 27 .什么是中断?其主要功能是什么?
28 .什么是中断优先级?中断优先处理的原则是什么?
29 .试编写一段对中断系统初始化的程序,使之允许INT0、INT1,T0,串行口中断,且使T0中断为高优先级中断。
程序题
1.将片内RAM 30H单元与40H单元中的内容互换。 方法1(直接地址传送法): MOV 31H,30H MOV 30H,40H MOV 40H,31H 方法2(间接地址传送法): MOV R0,#40H MOV R1,#30H MOV A,@R0 MOV B,@R1 MOV @R1,A MOV @R0,B
方法3(字节交换传送法): MOV A,30H XCH A,40H MOV 30H,A
方法4(堆栈传送法): PUSH PUSH
30H 40H
POP 30H POP 40H
2.内部数存30H开始的数传送给40H,遇到0则停止 MOV R0,#30H MOV R1,#40H
LOOP:MOV A,@R0 JZ LOOP1
MOV @R1,A INC R0 INC R1
SJMP LOOP LOOP1:RET
3.外部数存50H开始的数传送给内部数存40H,遇到0则停止 MOV R0,#50H MOV R1,#40H
LOOP:MOVX A,@R0 JZ LOOP1
MOV @R1,A INC R0 INC R1
SJMP LOOP LOOP1:RET
4.把外部数据存储器2040H单元中的数据传送到外部数据存储器2560H单元中去。 MOV DPTR,#2040H MOVX A,@DPTR ;先将2040H单元的内容传送到累加器A中 MOV DPTR,#2560H MOVX @DPTR,A
;再将累加器A中的内容传送到2560H单元中
5.程存2000H起存放0-9的平方,用两种查表指令查得9的平方。 1.用MOVC A, @A+DPTR。 MOV DPTR, #2000H MOV A, #09H
MOVC A, @A+DPTR
2.用MOVC A, @A+PC,设查表指令地址为1FF0H MOV A, #09H ADD A,#0FH MOVC A, @A+PC
6.试把存放在R1R2和R3R4中的两个16位数相加,结果存于R5R6中。 MOV ADD MOV MOV MOV
A,R2 ;取第一个数的低8位 A,R4 ;两数的低8位相加 R6,A ;保存和的低8位
A,R1 ;取第一个数的高8位
R5,A ;把相加的高8位存入R5寄存器中
ADDC A,R3 ;两数的高8位相加,并把低8位相加时的进位位加进来
7.多字节无符号数加法:用循环的方法把40H-43H里的数分别与50H-53H里的数相加,结果送回40H-44H。
CLR C
MOV R0,#40H ;指向加数最低位
MOV R1,#5OH ;指向另一加数最低位 MOV R2,#04H ;字节数作计数初值 LOOP1:MOV A,@R0 ;取被加数 ADDC A,@R1 ;两数相加,带进位 MOV @R0,A
INC R0 ;修改地址 INC R1
DJNZ R2,LOOPl ;未加完转LOOP1 JNC LOOP2 ;无进位转LOOP2 MOV @R0,#01H LOOP2:RET
8.设计一个延时10秒的子程序 DEL: MOV R5,100 DEL0:MOV R6,200 DEL1:MOV R7,248 DEL2:DJNZ R7 DEL2 DJNZ R6 DEL1
DJNZ R5 DEL0 RET
中断实现定时1秒
ORG 0000H
LJMP START ;无条件长转移
ORG 000BH ;定时器0中断向量为000BH LJMP INTTO ;
ORG 0030H ;
START:MOV TMOD,#02H ;定时器0,定时,工作方式2 SETB EA ;中断总允许
SETB ET0 ;允许定时器中断 MOV TH0,#06H ;计数初值 MOV TL0,#06H ; SETB TR0 ;启动定时 MAIN:MOV R0,#100 ; MOV R1,#20 ; SJMP $ ;原地踏步
INTTO:DJNZ R1 ,LOOP1 ;寄存器减1不为0转移
MOV R1,#20 ; DJNZ R0,LOOP1 ; MOV R0,#100 ;
CPL P1.0 ;指定位取反
LOOP1:RETI ;中断服务子程序返回
END
查询实现定时1秒 ORG 0000H
;LJMP MAIN ;ORG 0030H ;MAIN:MOV SP,#60H MOV TMOD,#02H MOV TL0,#06H MOV TH0,#06H MOV R0,#100 MOV R1,#20 SETB TR0 WAIT:JNB TF0,$
CLR TF0
DJNZ R1,WAIT MOV R1,#20 DJNZ R0,WAIT
MOV R0,#100 CPL P1.0 AJMP WAIT END