资源描述
《单片机原理与应用项目式教程》12345678自测题答案
邹显圣 主编
目 录
绪论 2
项目一 3
项目二 3
项目三 3
项目四 3
项目五 3
项目六 3
项目七 3
项目八 3
项目九 3
绪论
1.单片机发展分为哪几个阶段?各阶段的特点是什么?
答:
共分为四个阶段,分别如下:
1)第一代单片机(1975~1976年)。这个时期生产的单片机其特点是制造工艺落后,集成度低,并且采用双片形式。
2)第二代单片机(1976~1978年)。其性能低、品种少、寻址范围有限、应用范围也不广。
3)第三代单片机(1979~1982年)。存储容量大、寻址范围广,并且中断源、并行I/O口、定期器/计数器的个数都有了不同限度的增长,同时它还新集成了全双工的串行通信接口电路;在指令系统方面普遍增设了乘除法和比较指令。
4)第四代单片机(1983年以后)。出现了工艺先进、集成度高、内部功能更强和运算速度更快的16位单片机,它允许用户采用面向工业控制的专用语言,如C语言等。
2.AT89系列单片机分为几类?各类的重要技术特点是什么?都有哪些型号?
答:
型 号
AT89C51
AT89C52
AT89C1051
AT89C2051
AT89S8252
档次
标准型
低档型
高档型
Flash/KB
4
8
1
2
8
片内RAM/KB
128
256
64
128
256
I/O(条)
32
32
15
15
32
定期器/个
2
3
1
2
3
中断源/个
6
8
3
6
9
串行口/个
1
1
1
1
1
M加密/级
3
3
2
2
3
片内振荡器
有
有
有
有
有
E2PROM/KB
无
无
无
无
2
3.微型计算机中常用的数制有几种?计算机内部采用哪种数制?
答:二进制、八进制、十进制和十六进制。内部采用二进制
4.十六进制数能被计算机直接执行吗?为什么要用十六进制数?
答:不能。引入十六进制数是为了表达或者书写上的方便,由于一位十六进制数可以代表四位二进制数。
5.单片机的应用领域重要有哪些?
答:智能化产品、智能化接口、智能化测控系统、智能化仪表
6.将下列十进制数转换为二进制数和十六进制数。
(1)125D (2)0.525D (3)121.678D (4)47.945D
答:
(1)1111101B、7DH
(2)0.1000011B、0.86H
(3)1111001.101011B、79.ACH
(4)101111.1111B、2F.F0H
7.将下列二进制数转换为十进制数和十六进制数。
(1)10110101B (2)0.B
(3)0.1010B (4)1101.0101B
答:
(1)181D、B5H
(2)0.695D、0.B2H
(3)0.625D、0.AH
(4)13.3125D、D.5H
8.将下列十六进制数转换为二进制数和十进制数。
(1)ABH (2)28.07H (3)ABC.DH (4)0.35FH
答:
(1)10101011B、171D
(2)101000.00000111B、40.027D
(3).1101B、2748.8125D
(4)0.B、0.875D
9.在8位二进制计算机中,正、负数如何表达?
答:8位二进制的正数其最高位为“0”;负数最高位为“1”
10.写出下列各十进制数的原码、反码和补码。
(1)+28D (2)+69D (3)-125D (4)-54D
答:
(1)原码:00011100B;反码:00011100B;补码:00011100B
(2)原码:01000101B;反码:01000101B;补码:01000101B
(3)原码:11111101B;反码:10000010B;补码:10000011B
(4)原码:10110110B;反码:11001001B;补码:11001010B
11.写出下列各十进制数的BCD码。
(1)34D (2)59D (3)1983D (4)270D
答:
(1)110100B
(2)B
(3)1B
(4)B
项目一
1.AT89C51单片机的信号有何功能?
答:引脚用于决定CPU从哪个ROM中读取程序,当=0时,CPU只从外部ROM中读取程序;当=1时,CPU先从内ROM中读取程序,本地址超过0FFFH时,继续从外部ROM中读取程序。
2.AT89C51单片机只用内部flash存储器时,引脚应当如何解决?
答:应接在电源端上,即保持引脚为高电平。
3.AT89C51单片机的P3~P0口各有什么功能?
答:P3~P0均为8位并行I/O口,当进行外部扩展时,P3口兼作控制总线,提供系统的各种控制信号;P2口用于提供最多高8位地址总线;P1口为纯粹的数据口;P0口分时复用,兼作低8位地址总线和数据复用端口。
4.简述AT89C51单片机的存储器组织结构和内部RAM的地址空间分派。
答:AT89C51单片机的存储器组织结构采用哈弗结构;内部RAM地址空间分派如下:00H~1FH为寄存器区;20H~2FH为位寻址区;30H~7FH为用户RAM区,即堆栈区;80H~FFH为特殊功能寄存器区。
5.内部RAM的低128单元划分为哪三个重要部分?各部分的重要功能是什么?
答:寄存器区、位寻址区、用户RAM区;
各部分功能为:
寄存器区:用于存储程序执行过程中的寄存器中的数据;
位寻址区:即可以字节寻址,又可以位寻址,重要用于位寻址;
用户RAM区:用于存储堆栈过程中的各项数据。
6.位地址7CH与字节地址7CH如何区别?位地址7CH具体在内部RAM中的什么位置?
答:存储容易不同样,位地址只能存储一位二进制数据,而字节地址可以存储八位二进制数据;位地址7CH位于字节地址2FH.4。
7.AT89C51单片机有哪些特殊功能寄存器?这些特殊功能寄存器分别在单片机中哪些功能部件中?
答:见表2-3,重要涉及ACC、B、PSW、P0等;见表2-3,分别位于累加器、B寄存器、中央解决器、0号并行I/O口等。
8.特殊功能寄存器中哪些寄存器可以位寻址?它们的字节地址是什么?
答:
寄存器符号
地址
*ACC
E0H
*B
F0H
*PSW
D0H
*IE
A8H
*IP
B8H
*P0
80H
*P1
90H
*P2
A0H
*P3
B0H
*SCON
98H
*TCON
88H
9.程序计数器PC的功能和特点是什么?
答:PC的功能是ROM中的程序指针,用于表达ROM中程序的存放位置;其特点是:PC为十六位二进制,但其自身无地址,不能对其赋值,也不能读取PC值。
10.PC与DPTR各有哪些特点?有何异同?
答:PC为程序指针,DPTR为数据指针;相同为:均为十六位二进制,不同点是PC不能赋值,而DPTR可以赋值。
11.AT89C51单片机是如何拟定和改变当前工作寄存器区的?
答:改变当前工作寄存器区重要由PSW中的RS1和RS0决定,具体如下:
RS1
RS0
寄存器组
R0~R7地址
0
0
组0
00H~07H
0
1
组1
08H~0FH
1
0
组2
10H~17H
1
1
组3
18H~1FH
12.AT89C51单片机复位后,CPU使用了哪一区工作寄存器?工作寄存器R0~R7相应的单元地址是什么?
答:AT89C51单片机复位后,CPU使用了0号区工作寄存器,R0~R7为00H~07H。
13.程序状态字寄存器PSW的作用是什么?简述各位的作用是什么?
答:程序状态字PSW是一个8位寄存器,用于寄存程序运营的状态信息;各位的作用如下:
位序
PSW.7
PSW.6
PSW.5
PSW.4
PSW.3
PSW.2
PSW.1
PSW.0
位标志
CY
AC
F0
RS1
RS0
OV
/
P
①CY:进位标志位。
②AC:辅助进位标志位。
③F0:用户标志位。
④RS1和RS0:寄存器组选择位。用于设定通用寄存器的组号。
⑤OV:溢出标志位。
⑥P:奇偶标志位。
14.在AT89C51单片机ROM空间中,0003H、000BH、0013H、001BH、0023H有什么特殊用途?
答:分别为外部中断0、定期中断0、外部中断1,定期中断1和串行中断的入口地址。
15.AT89C51单片机中XTAL1和XTAL2的功能是什么?采用外部时钟源的情况下,如何解决这两个引脚?
答:AT89C51单片机中XTAL1和XTAL2的功能是单片机的时钟输入和输出引脚;当采用外部时钟时,XTAL1引脚接地, XTAL2接外部时钟源。
16.什么是时钟周期、机器周期和指令周期?
答:时钟周期即石英晶体振荡周期,等于1/fosc、机器周期为时钟周期的12倍,即1机器周期=12时钟周期;指令周期为执行一条单片机指令所需要的时间,根据指令类型的不同,一指令周期可以等于1或2或4机器周期。
17.AT89C51单片机所使用的晶振频率为6MHz,时钟周期,机器周期为多少?
答:时钟周期为微秒;机器周期为2微秒。
18.AT89C51单片机运营犯错或出现死循环,如何摆脱困境?
答:对单片机应用系统进行复位操作。
19.AT89C51单片机复位后,PC、A、PSW、SP、P3~P0的状态各是什么?复位后内部RAM中的数据有何影响?
答:
(PC)=0000H
(A)=00H
(PSW)=00H
(SP)=07H
(P0)~(P3)=FFH
复位后内部RAM中的数据仍然被保存,但某些特殊功能寄存器中的数据也许有所改变。
项目二
1.什么是计算机的指令和指令系统?
答:指令是用于指导计算机工作的命令;所有的计算机所可以执行指令的集合称为指令系统。
2.简述AT89C51汇编指令格式。
答:[标号:]操作码[操作数][;注释]。
3.简述8051的寻址方式和所能涉及的空间。
答:共有七种寻址方式,分别为:寄存器寻址、立即寻址、寄存器间接寻址、直接寻址、相对寻址、变址寻址和位寻址。分别相应的空间是:内部RAM、ROM、内部RAM和外部RAM;内部RAM、ROM、ROM和内部RAM的位地址空间。
4.要访问特殊功能寄存器和片外数据存储器,应采用哪些寻址方式?
答:对于特殊功能寄存器的访问只能采用直接寻址方式,对于片外数据存储器的访问要采用寄存器间接寻址方式。
5.编写程序,把片外RAM从2023H开始存放的8个数传送到片内30H开始的单元中。
答:
MOV DPTR,#2023H
MOV R0,#30H
MOV R2,#08H
LOOP: MOVX A,@DPTR
MOV @R0,A
INC DPTR
INC R0
DJNZ R2,LOOP
SJMP $
6.下列程序段经汇编后,从1000H开始的各有关存储单元的内容是什么?
ORG 1000H
TAB1 EQU 1234H
TAB2 EQU 3000H
DB “START”
DW TAB1,TAB2,70H
答:如下表所示。
地址
数据
1000H
53H
1001H
54H
1002H
41H
1003H
52H
1004H
54H
1005H
12H
1006H
34H
1007H
30H
1008H
00H
1009H
00H
100AH
70H
7.查表指令是在什么空间上的寻址操作?
答:查表指令是在ROM空间上进行的寻址操作
项目三
1.指出以下程序每一条指令的执行结果。
MOV A,#0F0H ;答:(A)=F0H
CPL A ;答:(A)=0FH
ANL 30H,#00H ;答:(30H)=00H
ORL 30H,#BDH ;答:(30H)=BDH
XRL A,#44H ;答:(A)=4BH
2.指出以下程序每一条指令的执行结果(假设CY=1)。
MOV A,#0AAH ;答:(A)=AAH
CPL A ;答:(A)=55H
RLC A ;答:(A)=ABH,C=0
RL A ;答:(A)=57H
CPL A ;答:(A)=A8H
RRC A ;答:(A)=54H,C=0
RR A ;答:(A)=2AH
3.若(A)=7AH,分别执行下列指令后,(A)的值是多少?
(1)ANL A,#0FFH ;答:(A)=7AH
(2)ORL A,#0FFH ;答:(A)=FFH
(3)ANL A,#00H ;答:(A)=00H
(4)ORL A,#00H ;答:(A)=7AH
(5)XRL A,#0FFH ;答:(A)=85H
(6)XRL A,#00H ;答:(A)=7AH
4.设(A)=83H,(R0)=17H,(17H)=34H,分析当执行完下面指令段后累加器A、(R0)、(17H)的值各是多少?
ANL A,#17H
ORL 17H,A
XRL A,@R0
CPL A
答:(A)=CBH、(R0)=17H、(17H)=37H
5.写出完毕下列规定的指令。
(1)累加器A的低2位清0,其余位不变。
答:ANL A,#FCH
(2)累加器A的高2位置1,其余位不变。
答:ORL A,#C0H
(3)累加器A的高4位到反,其余位不变。
答:XRL A,#F0H
(4)累加器A的第0位、2位、4位、6位取反,其余位不变。
答:XRL A,#55H
6.试分析下列程序段,当程序执行完毕后,位地址00H、01H中的内容将为什么值?P1口的8条I/O线为什么状态?
CLR C
MOV A,#66H
JC LOOP1
CPL C
SETB 01H
LOOP1:ORL C,ACC.0
JB ACC.2,LOOP2
CLR 00H
LOOP2:MOV P1,A
答:(P1)=66H,位地址00H保持原值,位地址01H的内容为“1”。
7.阅读下面程序,分析执行结果。
MOV A,#67H ;答:(A)=67H=0110,0111B
SETB ACC.7 ;答:ACC.7=1,(A)=1110,0111B
MOV C,ACC.2 ;答:C=1
CPL A ;答:(A)=18H=0001,1000B
MOV ACC.6,C ;答:ACC.6=1,(A)=0101,1000B=58H
CLR C ;答:C=0
SETB ACC.0 ;答:ACC.0=1,(A)=0101,1001B=59H
MOV ACC.4,C ;答:ACC.4=0,(A)=0100,1001B=49H
8.编程实现把外部RAM中8000H开始的连续30个字节的数据传送到外部RAM中8100H开始的连续单元中。
答:
MOV R4,#14H
MOV DPTR,#8000H
PUSH DPH
PUSH DPL
MOV DPTR,#8100H
MOV R2,DPH
MOV R3,DPL
LOOP: POP DPL
POP DPH
MOVX A,@DPTR
INC DPTR
PUSH DPH
PUSH DPL
MOV DPL,R3
MOV DPH,R2
MOVX @DPTR,A
INC DPTR
MOV R2,DPH
MOV R3,DPL
DJNZ R4,LOOP
SJMP $
9.编程记录从外部RAM的2023H开始的连续100个单元中“0”的个数,并将结果存放于R2中。
答:
MOV R2,#64H
MOV R3,#00H
MOV DPTR,#2023H
LOOP1: MOVX A,@DPTR
CJNE A,#00H,LOOP
INC R3
LOOP: INC DPTR
DJNZ R2,LOOP1
SJMP $
10.将内部RAM的30H单元中的中间4位、31H的低2位、32H的高2位按顺序排成一个新的字节,存入33H单元中。
答:
MOV A,30H
ANL A,#3CH
MOV B,A
MOV A,31H
ANL A,#03H
ORL A,B
MOV B,A
MOV A,32H
ANL A,#C0H
ORL A,B
MOV 33H,A
11.将DPTR中间8位取反,其余位不变。
答:
MOV A,DPL
XRL A,#F0H
MOV DPL,A
MOV A,DPH
XRL A,#0FH
MOV DPH,A
12.试编写程序完毕以内部RAM的30H为首地址的20个数据传送,目的地址为外部RAM以3000H为首地址的区域。
答:
MOV R0,#30H
MOV DPTR,#3000H
MOV R2,#14H
LOOP: MOV A,@R0
MOVX @DPTR,A
INC R0
INC DPTR
DJNZ R2,LOOP
SJMP $
13.试编写条件转移程序,当寄存器R3的内容分别满足下列条件时能转移到LOOP处执行程序,条件不满足时停机。
(1)(R3)≥15 (2)(R3)<15 (3)(R3)≤15 (4)(R3)>15
答:
(1)
CJNE R3,#0FH,LOOP1
SJMP LOOP
LOOP1: JC LOOP
SJMP $
LOOP: ……
(2)
CJNE R3,#0FH,LOOP1
SJMP $
LOOP1: JNC LOOP
SJMP $
LOOP: ……
(3)
CJNE R3,#0FH,LOOP1
SJMP LOOP
LOOP1: JNC LOOP
SJMP $
LOOP: ……
(4)
CJNE R3,#0FH,LOOP1
SJMP $
LOOP1: JC LOOP
SJMP $
LOOP: ……
14.试编写程序将内部RAM以40H为首地址的数据块传送到以BUF为起始地址的内部RAM区域,直到碰到所传送的数据不为0时停止。
答:
MOV R0,#40H
MOV R1,#BUF
LOOP: MOV A,@R0
JNZ LOOP1
INC R0
INC R1
SJMP LOOP
LOOP1:SJMP $
15.编写一程序将数00H存入内部RAM的20H单元,存入后,通过读操作来检查是否的确存入?然后再将数FFH存入内部RAM的21H单元,检查是否的确存入。假如两次检查结果都对的,将内部RAM的60H单元置00H,否则置11H。
答:
MOV 20H,#00H
MOV A,20H
CJNE A,#00H,LOOP
MOV 21H,#FFH
MOV A,21H
CJNE A,#FFH,LOOP
MOV 60H,#OOH
LOOP: MOV 60H,#11H
SJMP $
16.设内部RAM的60H单元有一个8位二进制数,该数8位中的某位为“1”,编写程序检查“1”在哪一位。假如“1”在第0位,则在内部RAM的30H单元写入数“00H”, 假如“1”在第1位,则在内部RAM的31H单元写入数“01H”,……,以此类推。
答:
MOV A,60H
LOOP: JB ACC.0,L0
JB ACC.1,L1
JB ACC.2,L2
JB ACC.3,L3
JB ACC.4,L4
JB ACC.5,L5
JB ACC.6,L6
JB ACC.7,L7
SJMP LOOP
L0: MOV 30H,#00H
SJMP $
L1: MOV 31H,#01H
SJMP $
L2: MOV 32H,#02H
SJMP $
L3: MOV 33H,#03H
SJMP $
L4: MOV 34H,#04H
SJMP $
L5: MOV 35H,#05H
SJMP $
L6: MOV 36H,#06H
SJMP $
L7: MOV 37H,#07H
SJMP $
项目四
1.算术运算指令涉及如下指令:
答:
(1)不带进位的加法指令 ADD;(2)带进位加法指令 ADDC;(3)加1指令 INC; (4)十进制调整指令 DA A;(5)带进位减法指令 SUBB;(6)减1指令DEC;(7)乘法指令 MUL AB;(8)除法指令 DIV AB。
2.BCD码进行加法运算后,为什么要进行十进制调整?
答:
由于BCD码是用4位二进制数表达一位十进制数,当两个BCD码相加时,相应位相加超过十时,就应当有进位了,可用来表达它的数码是十六进制的,也就是说只有超过十六才干进位,这样就导致所对结果不是相应的BCD码了。为了得到对的的BCD码结果,所以要对加法运算的结果进行调整,且这条指令必须紧跟ADD或ADDC指令使用,它不能用于十进制数减法的调整。
3.编程求外部RAM3000H、3001H单元数据的平均值,并传送给外部RAM的3002H单元。
答:
MOV DPTR,#3000H
MOVX A,@DPTR
MOV R0,A
INC DPTR
MOVX A,@DPTR
ADD A,R0
MOV B,#02
DIV AB
INC DPTR
MOVX @DPTR,A
4.写出下面这段程序的运营结果。
MOV A,#79H
MOV 20H,#18H
ADD A,20H
DA A
SWAP A
答:
运营结果为:A=79H。
5.根据下列规定写出指令序列。
(1)求25×4的乘积,结果存入数据指针DPTR之中。
(2)设计计算255÷12的程序,将商和余数分别保存在50H和51H。
(3)判断内部RAM20H单元的内容,若为正数程序转向2100H;若为负数程序转向2200H;若为0程序转向2300H。
(4)已知(A)=192,编程求A与立即数88的和,将结果存入31H(高位)和30H(低位)单元。
答:
(1)MOV A,#25
MOV B,#4
MUL AB
MOV DPH,B
MOV DPL,A
(2)MOV A,#255
MOV B,#12
DIV AB
MOV 50H,A
MOV 51H,B
(3)ORG 0100H
MOV A,20H
JZ L3
JB ACC.7 ,L2
LJMP L1
……
ORG 2100H
L1:……
ORG 2200H
L2:……
ORG 2300H
L3:……
END
(4)MOV A,#192
ADD A,#88
JC L1
MOV 30H,A
MOV 31H,#00
SJMP $
L1:MOV 30H,A
MOV 31H,#01
END
6.编写程序段,实现两个8位无符号数的乘法程序,积存放在R2、R3中(R2存放高位)。
答:
MOV A,#78
MOV B,#56
MUL AB
MOV R2,B
MOV R3,A
END
7.已知(30H)=17H,(31H)=38H,分析下面这段程序的运营过程,在每条语句右边的空格中写出在执行完该语句后相应单元的结果。
MOV A,30H (A)=
ADD A,31H (A)=
DA A (A)=
答:
(1)(A)= 17H
(2)(A)= 4FH
(3)(A)= 55H
8.两个16位无符号数分别存放在内部RAM40H、41H和50H、51H中(低位在低字节单元),编写程序段,实现两个16位数的减法程序,差存放在R6、R7中(R6存放高位)。
答:
MOV A,40H
SUBB A,50H
MOV R7,A
MOV A,41H
SUBB A,51H
MOV R6,A
END
项目五
1.什么是中断,采用中断方式有哪些优点?
答:
中断是计算机的CPU暂停正在运营的程序,转而执行提出中断的那个外部设备或事件的服务程序(即中断服务程序),当服务程序解决完毕后,CPU再回到本来的“断点”继续本来的程序。
优点:引入中断技术,解决了CPU与外设的速度匹配问题,提高CPU的运营效率,计算机具有中断功能后,尚有如下优点:
(1)分时解决功能
(2)实时解决功能
(3)故障解决功能
2.在AT89C51单片机系统中,有哪些中断源?响应这些中断的服务程序入口地址分别是多少?如何合理安排中断服务程序?
答:
(1)有5个中断源,分别为:外部中断0、定期器T0、外部中断1、定期器T1、串行口中断。
(2) 中断源 中断服务程序入口地址
外部中断0: 0003H
定期器T0 : 000BH
外部中断1: 0013H
定期器T1 : 001BH
串行口中断: 0023H
由于各中断服务程序的入口地址相隔仅8个单元,假如整个中断服务程序的长度少于或等于8个字节,那么可以将这个中断服务程序存放在从入口地址开始的8个单元中,但假如中断服务程序的长度大于8个字节,那么通常在入口地址处安排一条转移指令,而转移指令要跳转的地址才开始真正存放中断服务程序。
3.在单片机复位后,IP和IE为什么值?假如当前单片机系统中只允许开放和T1中断源,且规定和T1为高级中断源,其余为低档中断源,如何设立IP和IE的值?
答:
(1)单片机复位后,IP为XX000000B;IE为0X000000B
(2)IP为:XXX01001B ;IE为:1XX01001B
4.定期器0和定期器1各有几种工作方式?简述之。
答:
定期器0有4种工作方式:方式0、方式1、方式2、方式3
定期器1有3种工作方式:方式0、方式1、方式2
5.已知单片机系统时钟频率为12MHz,若规定定期时间分别为0.5ms、1ms、10ms,定期器0工作在方式0、方式1、方式2的情况下,定期初值TH0、TL0分别是多少?
答:
(1)方式0:
定期0.5ms时:
TH0=1EH; TL0=0CH;
定期1ms时:
TH0=1CH; TL0=18H;
定期10ms时:
采用定期1ms时的初值,循环10次。
(2)方式1:
定期0.5ms时:
TH0=0FEH; TL0=0CH;
定期1ms时:
TH0=0FCH; TL0=18H;
定期10ms时:
TH0=0DAH; TL0=1CH;
(2)方式2:
定期0.1ms时:
TH0=9CH; TL0=9CH;
定期0.5ms时:(采用0.1ms的初值,循环5次)
定期1ms时: (采用0.1ms的初值,循环10次)
定期10ms时: (采用0.1ms的初值,循环100次)
6.规定将定期器T0和T1的外部信号输入断作为新增的二个外部中断请求信号,如何设立计数初值?
答:
TH0和TF0的初值均设立为FFH
7.规定在 P1.5脚输出周期为15ms的方波,设单片机系统时钟频率为6MHz。试编写定期器初始化程序和中断服务程序。
答:
定期器初始化程序:
MOV TMOD, #01H
MOV TH0, #0F1H
MOV TL0, #5AH
中断服务程序:
ORG 0000H
LJMP START
ORG 000BH
LJMP TOINT
ORG 1000H
START: MOV TMOD, #01H
SETB TR0
MOV TH0,#0F1H
MOV TL0,#5AH
SJMP $
ORG 2023H
TOINT: CPL P1.5
MOV TH0,#0F1H
MOV TL0,#5AH
RET1
END
8.请编写程序:在T1每计满100个外部输入脉冲后,使P0口输出0F0H的数据。
答:
ORG 0000H
LJMP START
ORG 000BH
LJMP LOOP
ORG 1000H
START: MOV TMOD, #01H
SETB TR1
MOV TH0,#0F1H
MOV TL0,#5AH
SJMP $
ORG 2023H
LOOP: MOV P0,#0F0H
项目六
1.与8255比较,8155接口芯片有何特点?
答:
8155是一种通用的多功能可编程RAM/IO扩展器,片内除有三个可编程并行I/O端口(两个8位的端口A和B及一个6位是我端口C)外,还带有256B放入静态RAM及一个可编程的14位定期器、计数器。
2.为什么说P0口是真正的双向I/O口,而P1~P3口是准双向口?
答:
P0口是三态双向口,每位能驱动8个LSTTL电路;P1、P2、P3口是准双向口,每个引脚可驱动4个LSTTL输入。
3.扩展存储器时常用哪些片选方法?
答:
线选法和译码法
4.什么是地址空间重叠现象?
答:
存储器中多个单元地址空间重叠在一起却仅表达一个单元,这种现象称为地址空间重叠现象。
5.扩展存储器时,低8位地址为什么要锁存,而高8位地址不需要锁存?
答:
P0口作为低8位地址线、数据线,分时提供低8位地址信号和数据信号,在扩展系统中,要将P0口传送的信号进行分离,以便构成16位地址信号,因此需要增长一个8位锁存器,先由锁存器将地址总线中的低8位地址信号所存,锁存器的输出作为地址线A7-A0,其后P0口作为数据线使用;P2口在整个机器周期内提供的都是高8位地址信号,因此不用锁存。
6.设某打印接口电路中有两个端口:一个是数据端口,其地址为1FFFH;一个是状态端口,其地址为1FFEH,状态端口的最高位D7表达打印机当前状态,即D7=0表达打印机“空闲”、D7=1表达打印机“忙”,试将片内RAM40H~4FH中的内容由打印机打印输出。
答:
MOV DPTR,#1FFEH
LP1: MOVX A,@DPTR
JB ACC.7,LP1
MOV R0,#40H
MOV R2,#10H
LP2: MOV A,@R0
INC DPTR
MOVX @DPTR,A
LP3: MOV DPTR,#1FFEH
MOVX A,@DPTR
JB ACC.7,LP3
INC R0
DJNZ R2,LP2
END
7.试用两片2764扩展16KB程序存储器,根据下列规定,画出电路图,并拟定各自的地址范围。
答:
(1)用P2.7和P2.6片选。
地址范围:1#为:8000H~9FFFH或A000H~BFFFH
2#为:4000H~5FFFH或6000H~7FFFH
(2)用74LS138译码后片选。
地址范围:1#为:0000H~1FFFH
2#为:2023H~3FFFH
8.有一个单片机应用系统,需要8K字节的程序存储器、两个8位输入口、两个8位输出口、四个外部中断源,试设计电路图。
答:
项目七
1.在一个AT89C51系统中扩展一片8155,8155外接2位LED显示器和2位BCD拨盘,试画出该部分的接口电路,并编写相应的显示子程序和读拨盘的子程序。
答:
显示子程序:
START: MOV A,#03H
MOV DPTR,#7F00H
MOVX @DPTR,A
LOOP1: MOV R0,#38H
MOV R3,#7FH
MOV A,R3
LOOP2: MOV DPTR,#7F01H
MOVX @DPTR,A
INC DPTR
MOV A,@R0
ADD A,#0DH
MOVC A,@A+PC
MOVX @DPTR,A
ACALL DELAY1ms
MOV A,R3
JNB ACC.0,LOOP1
RR A
MOV R3,A
INC R0
AJMP LOOP2
DATA:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,67H
RET
读拨盘子程序:
MOV R0,#30H
MOV P1,#0DFH
MOV A,P1
SWAP A
XCH A,@R0
MOV P1,#0EFH
MOV A,P1
XCHD A,@R0
RET
2.在一个AT89C51系统中,试画出6×6键盘接口电路,并编制一个子程序,用查询的方法将键盘上键入的键号送内RAM区。
答:
程序:
SCAN: LCALL KEYDOWN
JNZ KEY1
RET
KEY1: LCALL SWLAY10ms
LCALL KEYDOWN
JNZ KEY3
KEY2: MOV A,#FFH
RET
KEY3: MOV A,#3FH
MOV P2,A
MOV A,P2
ANL A,#3FH
MOV R2,#00H
MOV R3,#06H
KEY4: RRC A
JNC KEY5
INC R2
INC R2
INC R2
INC R2
INC R2
INC R2
DJNZ R3,KEY4
LJMP KEY2
KEY5: MOV A,#3H
MOV P1,A
MOV A,P1
ANL A,#3FH
MOV R1,#00H
MOV R3,#06H
KEY6: RRC A
JNC KEY7
INC R1
DJNZ R3,KEY6
LJMP KEY2
KEY7: MOV A,R1
ADD A,R2
PUSH A
LCALL KEYDOWN
KEY8: JNZ KEY8
POP A
RET
KEYDOWN: MOV A,#FFH
MOV P1,A
MOV A,P1
XRL A,#3FH
RET
项目八
1.说明AT89C51系列单片机的通信方式。
答:AT89C51系列单片机以全双工串口进行串行通信
2.什么是串行通信,并说明其特点?
答:串行通信是指计算机之间或者是计算机与外设之间进行数据的串行传送方式。
串行通信适合用于长距离通信方式,串行通信的应用非
展开阅读全文