单片机原理及应用作业参考答案1.2 单片机的结构特点表现在哪些主要方面?答:(1)在存储器结构上,严格将程序存储器和数据存储器在空间上分开,并使用不同的寻址方式,使用两个不同的地址指针;(2)在内部有一个全双工的串行接口;(3)有一个独立进行操作的位处理器。
1.4 通用单片机的供应状态主要取决于什么?供应状态有哪几种?用户选用单片机的供应状态的原则是什么?答:通用单片机的供应状态主要取决于片内ROM的配置状态。
(1)片内ROM的配置状态掩膜ROM,适合于低成本。
大批量产品的场合(2)片内EPROM配置状态可通过高压脉冲写入应用程序到EPROM,适合于开发样机,小批量生产。
(3)片内无ROM配置状态必须外扩EPROM,价格低,使用灵活,适合于需要外接能在现场进行修改和更新程序存储器的应用场合。
2.3 单片机的EA端有何功用?8031的EA端应如何处理,为什么?答:EA端是访问外部程序存储器的控制信号:当EA无效时,访问内部ROM,当EA为有效时,访问外部ROM。
由于8031没有内部ROM,所以EA端必须接低电平。
2.4 MCS-51引脚中有多少I/O线?它们与单片机对外的地址总线、数据总线和控制总线有什么关系?地址总线和数据总线各是几位?答:MCS-51引脚中有32根I/O线,一般由P0口提供单片机对外的数据总线,同时作为分时复用的地址总线的低8位,由P2口作为地址总线的高8位,控制总线由第二功能的状态下的P3口以及RST、EA、ALE和PSEN提供。
2.5 8051单片机的内部数据存储器可以分为哪几个不同的区域?各有什么特点?答:数据存储器主要分为两个区域:00H~7FH是真正的RAM区,80H~FFH专门用作特殊功能寄存器的区域。
其中00H~7FH可分为三个区域:00H~1FH为四组工作寄存器;20H~2FH为128位位寻址区,30H~7FH为一般RAM区。
2.6 单片机对外有几条专用控制线?其功能是怎样的?答:单片机对外的专用控制线有4条,分别是:(1)PSEN:外部取指操作,在访问外部ROM时,PSEN信号自动产生;(2)ALE/PROG:ALE为地址锁存允许信号,在访问外部ROM或RAM时,用来锁存P0口的低8位地址。
第二功能PROG是对8751的EPROM编程时,编程脉冲输入。
(3)EA/V PP:EA是访问外部程序存储器的控制信号,EA无效时,访问内部ROM,EA有效时,访问外部ROM,第二功能V PP为对8751EPROM的21V编程电源输入。
(4)RST/V PD:RST是复位信号输入端,第二功能V PD是备用电源输入端。
2.8 有哪几种方法使单片机复位?复位后各寄存器、RAM中的状态如何?答:单片机的复位方式有两种,上电自动复位和按钮复位。
复位后各寄存器状态为:PC 0000H ACC 00H PSW 00H SP 07H DPTR 0000HP0~P3FFH IP XX000000B IE 0X000000B TMOD 00HTCON 00H TL0 00H TH0 00H TL1 00H TH1 00HSCON 00H SBUF XXH PCON 0XXX0000B2.9 在8051扩展系统中,片外程序存储器和片外数据存储器使用相同的地址编址,是否会在数据总线上出现争总线的现象?为什么?答:不会发生争总线的现象,因为从外部ROM取指令需要用ALE和PSEN信号控制读取操作,由P2和P0提供地址;而片外数据存储器的读写除了地址之外还要RD、WR控制,所以不会争总线。
2.10 如果8051端口P0~P3作为通用I/O口使用,则在输入引脚数据时应注意什么?答:8051的P1、P2和作为一般输入I/O口的P以及第一功能的P3口均为准双向口,在输入数据时应先向端口写1,然后方可作为高阻输入。
以使其场效应管T2截止,才不会影响输入电平。
3.2 若要完成以下的数据传送,应如何用MCS-51的指令实现?(1)R1的内容传送到R0MOV A,R1MOV R0,A(2)外部RAM20H单元的内容传送到R0 MOV R0,#20HMOVX A,@R0MOV R0,A(3)外部RAM20H单元的内容传送到内部RAM20H单元MOV R0,#20HMOVX A,@R0MOV 20H,A(4)外部RAM1000H单元内容传送到内部RAM20H单元MOV DPTR,#1000HMOVX A,@DPTRMOV 20H,A (5)ROM2000H单元的内容传送到R0MOV DPTR,#2000HCLR AMOVC A,@A+DPTRMOVR0,A(6)ROM2000H单元的内容传送到内部RAM20H单元MOV DPTR,#2000HCLR AMOVC A,@A+DPTRMOV 20H,A(7)ROM2000H单元的内容传送到外部RAM20H单元MOV DPTR,#2000HCLR AMOVC A,@A+DPTRMOV R0,#20HMOVX @R0,A3.3 间接转移指令JMP @A+DPTR有何优点?为什么它能代替众多的判跳指令?试举例说明。
答:该间接转移指令的转移地址由A的内容和数据指针DPTR的内容之和决定,且两者都是无符号数,由DPTR决定多分支转移程序的首地址,由A的不同值实现多分支转移。
因为可以根据A的内容进行分支转移,所以可以替代众多判跳指令。
如:根据A的内容调用相应的程序,如A为0调用OP0,A为1调用OP1,这里A的值小于128。
MOV DPTR,#OPTABRL AJMP @A+DPTR…OPTAB: ACALL OP0ACALL OP1ACALL OP2…3.4 设内部RAM的30H单元的内容为40H,即(30H)=40H,还知(40H)=10H,(10H)=00H,端口P1=0CAH。
问执行以下指令后,各有关存储器单元、寄存器以及端口的内容(即R0、R1、A、B、P1以及40H、30H、10H单元的内容)。
MOV R0,#30H ;(R0)=30HMOV A,@R0 ;(A)=(30H)=40HMOV R1,A ;(R1)=40HMOV B,@R1;(B)=(40H)=10HMOV @R1,P1 ;(40H)=0CAHMOV P2,P1 ;(P2)=0CAHMOV 10H,#20H ;(10H)=20HMOV 30H,10H ;(30H)=20H3.5 已知8751单片机的P1口为输出,经驱动电路接有8只发光二极管。
当输出位是1时,发光二极管点亮;输出位是0时发光二极管熄灭。
试分析下述程序的执行过程及发光二极管的发光情况。
LP: MOV P1,#81H ;1000 0001B LCALL DELAYMOV P1,#42H ;0100 0010BLCALL DELAYMOV P1,#24H ;0010 0100BLCALL DELAYMOV P1,#18H ;0001 1000B LCALL DELAYMOV P1,#24H ;0010 0100B LCALL DELAYMOV P1,#42H ;0100 0010B LCALL DELAYSJMP LP答:程序执行MOVP1,#DATA后,根据DATA的每位的值点亮相应的LED,调用延时程序使点亮的LED 保持一段时间。
LED发光的情况为:每次同时点亮两个LED并从两边向中间移动,然后再向两边移动,并一直循环。
3.6 在上题中,若系统的晶体振荡器频率为6MHz,求子程序DELAY的延时时间。
DELAY: MOV R2,#0FAH ;①2μSL1: MOV R3,#0FAH ;②2μSL2: DJNZ R3,L2 ;③4μSDJNZ R2,L1 ;④4μSRET ;⑤4μS0FAH=250D其中③执行250次,执行时间为250×4μS其中②③④循环250次,该循环执行时间为(2+250×4+4)×250μS加上①和⑤的执行时间,DELAY的延时时间为2+(2+250×4+4)×250+4=251.506ms延时程序的设计:首先设计内循环:MOV R3,#data1 ;2μsNOP ;2μsDJNZ R3,$ ;4μs×data1延时时间t1=2+2+4×data1=4×(data1+1)=1000μs=1ms,则data1=249若需要大于1ms 时间,则先增加一层循环MOV R2,#data2 ;2μsL1: MOV R3,#data1 ;2μsNOP ;2μsDJNZ R3,$ ;4μs ×data1DJNZ R2,L2 ;(4μs +t1)×data2延时时间为:2+(4μs +t1)×data2=2+[4μs +4×(data1+1)]×data2==2+4×(data1+2)×data2=250ms ,这里将data1修正为248,得2+4×(248+2)×data2=2+1000×data2=250ms 则data2=2503.7 根据图3-3线路,试设计灯亮移位程序,使8只发光二极管每次亮一个,循环右移或左移,一个一个地亮,循环不止。
MOV A,#80HDIS:MOV P1,AACALL DELAYRR AAJMP DIS3.8 设逻辑运算表达式为:)()(F E D C B A Y +⋅++⋅=其中变量A ,B ,C 分别为P1.0、P1.4、定时器1溢出标志TF1,D ,E ,F 分别为22H.0、22H.3、外中断方式标志IE1;输出变量为P1.5。
试编写实现上述逻辑功能的程序段。
MOV C,P1.4ORL C,/TF1 ;)(C B +ANL C,P1.0 ;)(C B A +⋅MOV F0,A ;用户自定义标志位,暂存数据MOV C,22H.3ORL C,/IE1 ;)(F E +ANL C,22H.0 ;)(F E D +⋅CPL C ;)(F E D +⋅ORL C,/F0 ;)()(F E D C B A +⋅++⋅MOV P1.5,C4.1 试设计数据块传送程序,将起始地址为0400H 的100个连续单元中的内容送到以4000H 为首址的区域中去解:分析:地址为16位,且进行数据传送,所以连续单元应为外部的存储器,只能使用外部数据传送指令,由于源和目的地址都为16位,所以要保存DPTR 的值,但源低8位和目的低8位相同,可以用一个寄存器保存。
MOV R0,#00NEXT: MOV DPH,#04HMOV DPL,R0MOVX A,@DPTRMOV DPH,#40HMOVX @DPTR,AINC R0CJNE R0,#100,NEXT4.2 试编写程序,计算片内RAM 区40H ~47H8个单元中数的算术平均值,结果存放在4AH 中。