单片机基础(第三版_李广弟)课后答案(20211208201230)_第1页
单片机基础(第三版_李广弟)课后答案(20211208201230)_第2页
单片机基础(第三版_李广弟)课后答案(20211208201230)_第3页
单片机基础(第三版_李广弟)课后答案(20211208201230)_第4页
单片机基础(第三版_李广弟)课后答案(20211208201230)_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1 单片机基础课后答案第一章一、填空题11110 0eh 10011100 01100100 24 3. 255 -51 4. 输入设备5. 84 6. 630 * 8 * 1024 7. 位字节字bit btype word 8. 1111 1111 00100100 11011011 9. 110 89 -115 -50 二、单选:dbcab bbcb 第二章一、填空1pc pc 2反向器晶振两只电容短3加电手动0000h 07h 第 0 00h 07h 46 2 1 12 5dptr dph dpl 664kb 单选题dccac ad 第三章一、填空题:11031 234h 1 1 1

2、3略41100h 52 630h 71h 0a5h 0a5h 75h 0a7h 0aah 0 1 ifh 1 1 0aah 0 1 2 20h 1 0 0d5h 1 1 49h 0 0 二、单选题ccbdca三、其它类型题错错对错错错对错错错错对对对对错对对错对错错对(三)其它类型题3编写程序将ram20h 23h 单元的高 4 位写1,低 4 位写0。分析:就是把这四个单元写入f0h。用一个 djnz 的循环。org 0000h mov r0,#1fh ;r0 指向 20h 单元mov r5,#04h; 四个数loop: inc r0 mov r0,#0f0h ; 写入djnz r5,loo

3、p ; 循环4 次end 4把 m 和 m+1 单元存有两个bcd 数,将它们合并到m 单元中,编写程序完成。(设 m=30h, 高位在 30h,低数在 31h) org 0000h mov a,30h anl a,#0fh ;把它的高四位清零swap a mov 30h ,a;高低四位调一下,放回原处mov a,31h anl a,#0fh orl a,30h ;合并起来mov 30h,a end 5.将内部 ram 中从 data 单元开始的10 个无符号数相加,其和送sum 单元多,假定相加结果小于255。编写程序完成。(设 data=30h, sun =50h) org 0000h m

4、ov r0,#2fh ; 指向前一个单元mov r5,#0ah ;循环10 次clr a;先加到a 中loop: inc r0 3 add a,r0 djnz r5,loop mov 50h,a end 6假定 8 位二进制带符号数丰于r0 中,要求编写一个求补程序,所得补码入入r1 中。org 0000h mov a,r0 cpl a;按位取反add a,#01h ;1 mov r1,a end 第四章一、填空题1. 25h 40h 03h 22.914ms 3.略4 (a )=(30h) (a) (30h) (a) (30h) 5. 32.87ms 编程题1把长度为 10h 的字符串从内部

5、ram 的输入缓冲区inbuf 向位物外部ram 的输出缓冲区 outbuf 传送,一直进行到遇见回车或整个字符串传送完毕。试编程实现。org 0030h mov r0,#inbuf mov r1,#outbuf mov r4,#10h loop:mov a,r0 ; 从内部ram 取数cjne a,#0dh,ll ;是否为回车符cr sjmp stop ;是转停止传送ll: movx r1,a ;不是则传送到外部ram inc r0 inc r1 djnz r4,ll; 沒传送完则循环stop: sjmp $ 2、内部ram 从 list 单元开始存放一正数表,表中之数作无序排列,并以“-1

6、”作结束标志。编程实现在表中找出最小数。(3ah 存放在运行程序时的最小的数) org 0030h mov r0,#list mov a,r0 ;取第一个正数loop: inc r0 ;指向下一个正数4 mov 3ah,r0 cjne a,3ah,chk ;前一个数与后一个数比较chk: jc loop1 ;前一个数小 ,则转mov a,r0 ;前一个数大 ,取后一个数loop1: xch a,3ah cjne a,#0ffh,loop xch a,3ah ;取最小数mov 3bh,a sjmp $ 3.内部 ram 的 x,y 单元中各存放一个带符号的数,试编程实现按如下条件进行的运算,并将

7、结果存入z 单元中。若 x 为正奇数, z xy;若 x 为正偶数, z xy;若 x 为负奇数, z xy;若 x 为负偶数, z xy。分析:负数:第7 位为 1,正数:第7 位为 0 奇数:第0 位为 1,偶数:第0 位为 0 org 0000h mov a,20h clr c rl a jc fs ;移到负数处处理rr arr a ;第 0 位移到c 再判定一下是不是1 jc zjs ;到正奇数处mov a,20h orl a,21h mov 22h,a sjmp ok zjs: mov a,20h add a,21h mov 22h,a sjmp ok fs: mov a,20h c

8、lr c rr ajc fjs ;第 0 位是 1,移到正奇数处理mov a,20h xrl a,21h mov 22h,a sjmp ok fjs: mov a,20h anl a,21h mov 22h,a 5 ok: end 4、把一个8 位二进制数的各位用ascii 码表示之(亦即为“0”的位用30h 表示,为“ 1”的位用31h 表示) 。该数存放在内部ram 中 byte 单元中。变换后得到的8 个 ascii 码存放在外部ram 以 buf 始的存储单元中去。org 0030h mov r0,#byte mov dptr,#buf mov r5,#08h mov a,r0 loo

9、p: rlc a mov r7,a jc loop1 mov a,#30h sjmp loop2 loop1: mov a,#31h loop2: movx dptr,amov a,r7 inc dptr djnz r5,loop 5.编程实现运算式c = a2 2 +b 假定 a、 b、 c 3 个数分别存放在内部ram 的 da、db、dc 单元中,别有平方运算子程序调用。(内部ram 的 da 、db、dc 单元设为20h 21h 22h)org 0000h mov a,20h push acc ajmp sqr pop acc mov 22h,a mov a,21h push acc

10、ajmp sqr pop acc add a,22h mov 22h,a end 6、比较两个ascii 码字符串是否相等。字符串的长度在内部ram 41h 单元,第一个字符串的首地址为42h,第二个字符串的首地址为52h。如果两个字符串相等,则置内部ram 40h 单元为00h;否则置40h 单元为 ff。org 0030h mov r0,#42h mov r1,#52h mov r7,41h ; 字符串长度loop: mov a,r0 6 mov 30h,r1 cjne a,30h,lk inc r0 inc r1 djnz r7,loop mov 40h ,#00h sjmp dd lk

11、: mov 40h,#0ffh dd: sjmp dd 7.外部 ram 首址为table 的数据表中,有10 个字节的数据。编程将每个字节的最高位无条件地置“1” 。org 0030h mov dptr,#table mov r6,#10 loop:movx a,dptr setb e7h; e7h 就是累加器a 的最高位 (acc.7), 也可: setb acc.7 movx dptr,a inc dptr djnz r6,loop 3编写程序将ram20h 23h 单元的高 4 位写1,低 4 位写 0。分析:就是把这四个单元写入f0h。用一个 djnz 的循环。org 0000h m

12、ov r0,#1fh ;r0 指向 20h 单元mov r5,#04h; 四个数loop: inc r0 mov r0,#0f0h ; 写入djnz r5,loop ; 循环4 次end 4把 m 和 m+1 单元存有两个bcd 数,将它们合并到m 单元中,编写程序完成。(设 m=30h, 高位在 30h,低数在 31h) org 0000h mov a,30h anl a,#0fh ;把它的高四位清零swap a mov 30h ,a;高低四位调一下,放回原处mov a,31h anl a,#0fh orl a,30h ;合并起来mov 30h,a end 5.将内部 ram 中从 data

13、 单元开始的10 个无符号数相加,其和送sum 单元多,假定相加结果小于255。编写程序完成。7 (设 data=30h, sun =50h) org 0000h mov r0,#2fh ; 指向前一个单元mov r5,#0ah ;循环10 次clr a;先加到a 中loop: inc r0 add a,r0 djnz r5,loop mov 50h,a end 6假定 8 位二进制带符号数丰于r0 中,要求编写一个求补程序,所得补码入入r1 中。org 0000h mov a,r0 cpl a;按位取反add a,#01h ;1 mov r1,a end 第五章一、填空题1各项任务2int0

14、 t0 int1 t1 串口3pc pc rom 4中断源查询状态51000000 1000000/65536 = 15.26 6100 ms 7111 101 8t1 2 0ffh 001bh 二、单选题:dcaadcd 单片机基础第五章习题课本5。.1 设单片机的晶振频率为6mhz ,使用定时器1 以方式 0 产生500us 的等宽正方波连续脉冲,并由p1.0 输出。分析:使用 p1.0 输出脉冲, 可由定时器产生一个250us 的定时,到了时间, 就执行 cplp1.0 就可以了。所以问题转化为产生定时。解: (1)计算定时器的初值:(2 13x )t机t定时代入数据得: x 8067

15、由于方式 0 的特点(高8 位,低5 位) ,计算出 th1,tl1 得 th1 0fch tl1 03h (2 )计算出 tmod 的初始值:tmod 00h 8 (3)编程实现:方法一:使用查询法。程序不断地查询tf1 的值。如定时器溢出(tf11) ,则 cpl p1.0 所以:mov tmod ,#00h mov th1,#0fch mov tl1,#03h mov ie, #00h ;不用中断的方法,关掉setb tr1 ;开启定时器loop: jbc tf1,loop1 ajmp loop loop1: mov th1,#0fch mov tl1,#03h cpl p1.0 ajm

16、p loop 方法二:使用中断的方法。需确定寄存器:tmod 00h ie 88h tcon =40h ( 或 setb tr1) t1 的中断向量 001bh 程序如下:org 0000h ajmp main org 001bh ajmp t1timer main : mov tmod ,00h mov tcon, 40h mov ie,#88h mov tcon ,#40h mov th1,#0fch mov tl1,#03h here :ajmp here t1_timer: mov th1,#0fch mov tl1,#03h cpl p1.0 reti 注意:定时器定时或计数,不会影响cpu 的工作。定时方式1:与方式 0 没有大的区别,只有定时器是16 位的。所以定时( 2 x初值)t 机方式 2:8 位初值自动赋值的定时/计数器解法一样:(1) 计算 t 的初始值(2 )tmod ?(2 ) 程序设计方式三:t0: tl0 8 位,可作定时也可作计数,与方式0,一样使用。 th0:8 位,只能作定时,借作tr1 tf1 9 t1:没法中断,只能产生不断的脉冲,全波特

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论