好文档 - 专业文书写作范文服务资料分享网站

单片机原理与应用及c51程序设计答案

天下 分享 时间: 加入收藏 我要投稿 点赞

(3)ljmp loop 3字节 (4)mov r0,a 1字节 (5)ajmp loop 2字节 1

(6)mov a,30h2字节 (7)sjmp loop 2字节

(8)mov b,#30h 2字节

15.设堆栈指针(sp)=60h,片内ram中的(30h)=24h,(31h)=10h。执行下列程序段后,61h, 62h, 30h, 31h, dptr及sp中的内容将有何变化? push 30h push 31h pop dpl pop dph

mov 30h, #00h mov 31h, #0ffh 解:

结果为: 61h、62h单元为堆栈单元,其内容已被弹出栈。 (31h)=0ffh (dptr)=2410h (sp)=60h 17.完成以下的数据传送过程 (1)r1的内容传送到r0。

(2)片外ram 20h单元的内容送r0。

(3)片外 ram 20h单元的内容送片内ram 20h单元。 (4)片外ram 1000h单元的内容送片内 ram 20h单元。 (5)rom 2000h单元的内容送r0。

(6)rom 2000h单元的内容送片内ram 20h单元。 (7)rom 2000h单元的内容送片外ram 20h单元。 解:

(1)r1的内容传送到r0 ; mov a,r1 mov r0,a

(2)片外ram 20h单元内容送r0 ; movr1, #20h movx a, @r1 movr0, a

(3)片外 ram 20h单元的内容送片内ram 20h单元; mov r0, #20h

movx a, @r0 mov 20h, a

(4)片外ram 1000h单元的内容送片内 ram 20h 单元; mov dptr, #1000h movx a, @dptr mov 20h, a

(5)rom 2000h单元的内容送r0单元; clr a

mov dptr,#2000h movc a, @a+dptr mov r0, a

(6)rom 2000h 单元的内容送片内ram 20h单元; clra

movdptr,#2000h movc a, @a+dptr mov 20h, a

(7)rom 2000h单元的内容送片外ram 20h单元。 clra

movdptr,#2000h movc a, @a+dptr movr0,#20h movx @r0, a 2 (30h)=00h

19.编程将片内ram的40h~60h单元中内容送到片外ram以3000h开始的单元中。并将原片内ram数据块区域全部清0。 解: org 0000h ljmp main org 0030h

main: mov sp, #60h mov r7,#21h mov r1,#40h

mov dptr,#3000h loop: mov a,@r1 movx @dptr,a mov @r1, #00h inc r1 inc dptr

djnz r7,loop

sjmp $ end

23.设有100个有符号数,连续存放在片外ram以2000h为首地址的存储区中,试编程统计其中正数、负数、零的个数。 解: org 0000h ljmp main org 0030h

main: mov r2,#100 mov r3,#00h mov r4,#00h mov r5,#00h

mov dptr,#2000h

loop: movx a,@dptr cjne a,#00h,net1 inc r3

sjmp net3

net1: jb acc.7 net2 inc r4

sjmp net3

net2: inc r5 net3: inc dptr djnz r2,loop sjmp $ end

24.试编一查找程序,从外部ram首地址为2000h、长度为9fh的数据块中找出第一个ascii码a,将其地址送到20a0h和20a1h单元中。

解:org 0000h ljmp main org 0030h

main: mov sp, #60h mov dptr,#2000h mov r7,#9fh

lp0: movx a,@dptr cjne a, #41h, lp1 mov r2,dpl mov r3,dph

mov dptr,#20a0h

mov a, r2

movx @dptr,a 3

inc dptr mov a, r3

movx @dptr,a sjmp lp2

lp1: inc dptr djnz r7, lp0 lp2: ret end

27.编程实现将片外ram中2400h~2450h单元中的数传送到2500h~2550h单元中。 解: org 0000h main:mov 30h,#24h ljmp main mov 31h,#00h org 0030h mov 32h,#25h

main:mov r7,#51h mov 33h,#00h mov dptr, #2400hmov r2,#51h

loop: movx a,@dptr loop: mov dph,30h mov dph, #25h mov dpl,31h movx @dptr,a movx a,@dptr mov dph, #24h mov dph,32h inc dptr mov dpl,33h

djnz r7 ,loop movx @dptr,a sjmp $ inc 31h end inc 33h

djnz r2,loop 另一种方法:

sjmp $ org 0000h end ljmp main org 0030h

第三章作业答案

6. 设(tmod)=0a5h,则定时器t0的状态是( 方式1计数),定时器t1的状态是( 方式2 定时)。

27.请写出int1为低电平触发的中断系统初始化程序。 解:

int1为低电平触发的中断系统初始化程序如下: org 0000h ljmp main org0013h ljmp intn1

org0100h

main: mov sp,#60h setbea

setbex1 ; 开int1中断

clrpx1; 令int1为低优先级 clrit1; 令int1为电平触发 sjmp $ end

28.说明mcs-51单片机响应中断后,中断服务的入口地址。 解: 4

36解:

设定好定时器的定时时间,采用中断方式用软件设置计数次数,进行溢出次数累计,从而得到较长的时间。

37.利用定时器输出周期为2 ms的方波, 设单片机晶振频率为 6 mhz。试编程实现之。 解:

当定时器/计数器采用方式0时,初值为: 则真正的16

位计数初值为:f00ch(高8 位,低5位) 程序如下: org 0000h org 000bh

ljmp t0int; t0中断入口

start: mov sp, #60h ; 初始化程序 mov tl0, #0ch ; t0赋初值 mov th0,

mov tmod, #01h ; 定时器/计数器0工作于方式1 setb tr0; 启动t0

setb et0 ; 开t0中断 setb ea

; 开总允许中断 sjmp $ t0int

:push acc push psw

mov tl0,

mov th0, #0feh setb tr0; 启动t0 pop psw pop acc reti end

当采用查询方式时: 兰色字部分应该为: lp1: jbc tf0, lp2 sjmp lp1

lp2: cpl p1.0 mov tl0, #0ch mov th0, setb tr0 sjmp lp1 end 5

单片机原理与应用及c51程序设计答案

(3)ljmploop3字节(4)movr0,a1字节(5)ajmploop2字节1(6)mova,30h2字节(7)sjmploop2字节(8)movb,#30h2字节15.设堆栈指针(sp)=60h,片内ram中的(30h)=24h,(31h)=10h。执行下列程序段后,61h,
推荐度:
点击下载文档文档为doc格式
20bf94thaf3gyk618jsm0fvam2gysn007bl
领取福利

微信扫码领取福利

微信扫码分享