单片机习题答案 联系客服

发布时间 : 星期一 文章单片机习题答案更新完毕开始阅读7527628b3386bceb19e8b8f67c1cfad6185fe911

.

数由表达式的值决定。

(5)为标号赋值伪指令EQU 格式:〈标号:〉EQU 数或汇编符号

作用:将操作数中的地址或数据赋给标号字段的标号,又称为等值指令。 (6)数据地址赋值伪指令DATA 格式:〈标号:〉DATA 数或表达式

作用:可以把数据或可求值的表达式赋给字符名,常在程序中定义数据地址。 (7)位地址符号伪指令BIT 格式:字符名 BIT 位地址

作用:把位地址赋给字符名称。 (8)源程序结束伪指令END 格式:〈标号:〉END〈表达式〉

作用:END命令通知汇编程序结束汇编。在END之后,所有的汇编语言指令均不作处理。

6.外部RAM中从1000H到10FFH有一个数据区,现在将它传送到外部RAM中2500H单元开始的区域中,编写有关程序。 答:

第一种方法:

START: MOV R0,#00H MOV DPTR,#1000H LOOP: MOVX A,@DPTR MOV DPH,#25H MOVX @DPTR,A MOV DPH ,#10H INC DPTR //INC R0 DJNZ R0, LOOP SJMP $ 第二种方法:

START: MOV R7, #00H MOV R1, #10H MOV R2, #00H MOV R3, #25H MOV R4, #00H LOOP: MOV DPH, R1 MOV DPL, R2 MOVX A, @DPTR INC DPTR

MOV R1, DPH

MOV R2, DPL MOV DPH, R3

MOV DPL, R4

MOVX @DPTR, A INC DPTR

精选文档

.

MOV R3, DPH MOV R4, DPL DJNZ R7, LOOP SJMP $

第三种方法:

MOV P2, #25H MOV R0, #00H MOV R3, #00H MOV DPTR, #1000H LOOP: MOVX A, @DPTR MOVX @R0, A INC DPTR INC R0

DJNZ R3, LOOP SJMP $

11.设系统晶体振荡频率为12MHz,请编写延时50ms的延时子程序。 答:

1个机器周期为1us,一条DJNZ耗时2us。 所以50ms=2us×250×100,程序如下: DELAY:MOV R4, #100 DELAY1:MOV R3,#250

DELAY2:DJNZ R3,DELAY2 DJNZ R4,DELAY1 RET

12.分析下列程序中各条指令的作用,并说明运行后相应寄存器和内存单元的结果。 MOV A, #34H ;将立即数34H送到累加器A,(A)=34H MOV B, #0ABH ;将立即数0ABH送到寄存器B,(B)=0ABH

MOV 34H, #78H ;将立即数78H送到内部RAM中的34H单元中,(34H)=78H XCH A, R0 ;寄存器R0与累加器A交换数值,(R0)=34H

XCH A, @R0 ;寄存器R0的值所表示的地址中的数值与累加器A的数值交换,

(A)=(34H)=78H

XCH A, B ;寄存器B与累加器A交换数值,(A)=0ABH,(B)=78H SJMP $

第五章:第2、6、9题

2.8051单片机的定时器/计数器有哪几种工作方式?各有什么特点? P105 答:

8051单片机的定时器/计数器有4种工作方式,分别是: (1)工作方式0:

精选文档

.

M1M0=00,为13位定时器/计数器,其计数器由THi的全8位和TLi的低5位构成,TLi的高3位未用。当TLi的低5位计满时,向THi进位,THi溢出后对中断标志位TFi置“1”,并申请中断。Ti是否溢出可用软件查询TFi是否为“1”。

计数值范围为1~8192,如需再次定时或计数,需要用指令重置时间常数。 (2)工作方式1:

M1M0=01,与工作方式0基本相同,不同之处在于其为16位定时器/计数器,计数值范围为1~65536。如需再次定时或计数,需要用指令重置时间常数。 (3)工作方式2:

M1M0=10,为可重装初值的8位定时器/计数器。把16位的计数器拆成两个8位计数器,TLi用作8位计数器,THi用来保存初值。每当TLi计满溢出时,可自动将THi的初值再装入TLi,继续计数,循环重复。其计数范围为1~256。 (4)工作方式3:

M1M0=11,T0分成两个独立的8位计数器,其中TL0既可以作计数器使用,又可以作定时器使用。而TH0只能作8位定时器使用,并占用了T1的控制启动位TR1和溢出标志位TF1。T1只能工作在方式0、方式1或方式2,只能用在不需中断控制的场合。

6、编程实现一个利用定时器T1产生一个50HZ(20000us)的方波,由p1.3输出,设晶体振荡器频率为12MHz。 解:

START: MOV TMOD, #10H; //工作方式1 MOV TH0, #D8 MOV TL0, #F0 SETB TR0

LOOP: JNB TF0, LOOP CPL P1.3 CLR TF0 CLR TR0 AJMP START

9.设晶体振荡器频率为6MHz。编程实现,使用定时器T0工作在方式2、定时,在P1.4输出周期为100us,占空比为4:1的矩形脉冲。 答:

因为晶体振荡器频率为6MHz,所以1个机器周期为2 us。

因为占空比为4:1,所以将矩形脉冲分为5分,前4份P1.4输出高电平,第5份输出低电平。则计数初值满足:(2?x)?2?8100?20,解得计数初值为246=0F6H,所以5TH0=TL0=0F6H。

TMOD设置:00000010=02H,定时器0,定时,方式2。 所以程序如下:

206=0CEH,216=0D8H,246=0F6H, 第一种方法:

ORG 2000H

START: MOV TMOD,#02H MOV TL0,0F6H MOV TH0,0F6H

精选文档

SETB P1.4 SETB TR0 LOOP: MOV R0, #4 WAIT1: JNB TF0, WAIT1 CLR TF0

DJNZ R0, WAIT1 CPL P1.4

WAIT2: JNB TF0, WAIT2 CLR TF0 CPL P1.4 SJMP LOOP

第二种方法:

MOV TMOD, #02H LOOP: SETB P1.4

MOV TL0, #216 MOV TH0, #216 SETB TR0

WAIT1: JNB TF0, WAIT1 CLR TF0 CPL P1.4

MOV TL0, #246 MOV TH0, #246 WAIT2: JNB TF0, WAIT2 CLR TF0 AJMP LOOP

第三种方法:

MOV TMOD, #02H MOV TH0, #206 MOV TL0, #206 SETB TR0 SETB P1.4

WAIT1: CJNE TL0, #246, WAIT1 CLR P1.4

WAIT2: JNB TF0, WAIT2 SETB P1.4

LJMP WAIT1

第六章:第2、3、7题

.

精选文档