《单片机基础第3版课后习题答案.pdf》由会员分享,可在线阅读,更多相关《单片机基础第3版课后习题答案.pdf(39页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第一章:一、填空题1.1110 0EH 10011100 011001002.43.255-514.输入设备5.846.630*8*10247.位 字 节 字 bit btype word8.m i m i 00100100 iio iio n9.110 89-115-50二、单选:DBCAB BBCB第一早:一、填空1.PC PC2.反向器 晶振 两 只 电 容 短3.加 电 手 动 OOOOH 07H 第0 00H4.6 2 1 125.DPTR DPH DPL6.64KB单选题DCCAC AD第三章:一、填空题:07H1.10312.34H 1 1 13.略4.1100H5.26.30H
2、 71H0A5H0A5H75H0A7HOAAH 0 1IFH 1 1OAAH 0 120H 1 00D5H1149H 0 0二、单选题CCBDCA三、其它类型题错 错 对错 错 错对 错 错错 错 对对 对 对错 对 对错对错错对(三)其它类型题3.编写程序将RAM20H23H单元的高4 位写1,低 4 位写0。分析:就是把这四个单元写入F0H。用一个DJNZ的循环。ORG 0000HMOV RO,#1FH;R()指向 20H 单元MOV R5,#04H;四个数LOOP:INC ROMOV R0,#0F0H;写入DJNZ R5,LOOP;循环 4 次END4.把 m 和 m+1单元存有两个BC
3、D数,将它们合并到m 单元中,编写程序完成。(设 m=30H,高位在30H,低数在31H)ORG 0000HMOV A,30HANLA,#0FH;把它的高四位清零SWAP AMOV 30H,A;高低四位调一下,放回原处MOV A,31HANLA,#0FHORLA,30H;合并起来MOV 30H,AEND5.将内部RAM中从data单元开始的10个无符号数相加,其和送sum单元多,假定相加结果小于255o编写程序完成。(设 data=30H,sun=50H)ORG 0000HMOV R0,#2FH;指向前一个单元MOV R5,#0AH;循环 10 次CLRA;先加到A 中LOOP:INC ROA
4、DDA,R0DJNZ R5,LOOPMOV 50H,AEND6.假定8 位二进制带符号数丰于RO中,要求编写一个求补程序,所得补码入入R1中。ORG 0000HMOVA,ROCPLA;按位取反ADDA,#()1H;+1MOV RI,AEND第四章:一、填空题1.25H 40H 03H2.2.914ms3.略4.(A)=(30H)(A)(30H)(A)(30H)第四章:(A)(30H)5.32.87ms编程题1.把长度为10H的字符串从内部R A M 的输入缓冲区inbuf向位物外部R A M 的输出缓冲区outbuf传送,一直进行到遇见回车或整个字符串传送完毕。试编程实现。O R G 0030
5、HM O V R O,ft i n b u fM O V R I,ft o u t b u fM O V R 4,#10HL O O P:M O V A,R 0;从内部 R AM 取数CJN E A,#O DH,L L ;是否为回车符CRS JM P S T O P ;是转停止传送L L:M O V X R 1,A;不是则传送到外部R AMIN C R OIN C R IDJN Z R 4,L L;没传送完则循环S T O P:S JM P$2、内部R AM 从 l i s t 单元开始存放一正数表,表中之数作无序排列,并 以“-1”作结束标志。编程实现在表中找出最小数。(3AH存放在运行程序
6、时的最小的数)O R G 0030HM O V R O,ft l i s tM O V A,R 0;取第一个正数L O O P:IN C R O ;指向下一个正数M O V 3AH,R OCJN E A,3AH,CHK;前一个数与后一个数比较CHK:JC L O O P 1;前一个数小,则转M O V A,R 0;前一个数大,取后一个数L O O P 1:X CH A,3AH;取最小数CJN E A,#O F F H,L O O PX CH A,3AHM O V 3BH,AS JM P$3.内部R AM 的X,Y 单元中各存放一个带符号的数,试编程实现按如下条件进行的运算,并将结果存入Z 单元
7、中。若 X 为正奇数,Z =X+Y;若 X为正偶数,Z =X V Y;若 X 为负奇数,Z =X/Y;若 X 为负偶数,Z =X Y o分析:负数:第 7 位为1,正数:第 7 位为0奇数:第 0 位为1,偶数:第 0 位为0O R G 0000HM O V A,20HCL R CR L AJC F S ;移到负数处处理R R AR R A;第0位移到C再判定一下是不是JC Z JS ;到正奇数处1M O V A,20HO R L A,21HM O V 22H,AS JM P O KZ JS:M O V A,20HADD A,21HM O V 22H,AS JM P O KF S:M O V
8、A,20HCL R CR R AJC F JS ;第0 位是1,移到正 奇数处理M O V A,20HX R L A,21HM O V 22H,AS JM P O KF JS:M O V A,20HAN L A,21HM O V 22H,AO K:EN D4、把一个8 位二进制数的各位用A S C H 码表示之(亦即为“0”的位用30H表示,为“1”的位用31H表示)。该数存放在内部R AM 中b y t e 单元中。变换后得到的8 个 AS CII码存放在外部R AM 以b u f始的存储单元中去。O R G 0030HM O V R O,#b y t eM O V DP T R,#b u
9、fM O V R 5,#08HM O V A,R 0L O O P:R L C AM O V R 7,AJC L 00P 1M O V A,#30HS JM P L 00P 2L 00P 1:M O V A,#31HL 00P 2:M O V X DP T R,AM O V A,R 7IN C DP T RDJN Z R 5,L O O P5.编程实现运算式c =a2+b2假定a、b、c 3 个数分别存放在内部R AM 的 DA、DB、DC单元中,别有平方运算子程序调用。(内部 R AM 的 DA、DB、DC 单元设为 20H 21H 22H)O R G 0000HM O V A,20HP U
10、 S H ACCAJM P S Q RP O P ACCM O V 22H,AM O V A,21HP U S H ACCAJM P S Q RP O P ACCADD A,22HM O V 22H,AEN D6、比较两个AS CII码字符串是否相等。字符串的长度在内部R AM 41H单元,第一个字符串的首地址为42H,第二个字符串的首地址为52H。如果两个字符串相等,则置内部R AM 40H单元为00H;否则置40H单元为F F oO R G 0030HM O V R O,#42HM O V R I,#52HM O V R 7,41H;字符串长度L O O P:M O V A,R 0M O
11、V 30H,R 1CJN E A,30H,L KIN C R OIN C R IDJN Z R 7,L O O PM O V 40H,#O O HS JM P DDL K:M O V 40H,#O F F HDD:S JM P DD7.外部R AM 首址为t ab l e 的数据表中,有 10个字节的数据。编程将每个字节的最高位无条件地置“1”。O R G 0030HM O V DP T R,t t t ab l eM O V R 6,#10L O O P:M O V X A,DP T RS ET B E7H;E7H就是累加器A 的最高位(ACC.7),也 可:S ET B ACC.7M O
12、V X DP T R,AIN C DP T RDJN Z R 6,L O O P第五章一、填空题1.各项任务2.INTO TO INTI T1 串口3.PCPCROM4.中断源查询状态5.10000001000000/6553615.266.100 ms7.Ill 1018.T1 2 OFFH 001BH二、单选题:DCAADCD单片机基础 第五章习题课本5o.1设单片机的晶振频率为6M HZ,使用定时器1 以方式0 产生500us的等宽正方波连续脉冲,并由P1.0输出。分析:使用PLO输出脉冲,可由定时器产生一个25011s的定时,到了时间,就执行CPL P1.0就可以了。所以问题转化为产生
13、定时。解:(1)计算定时器的初值:(2心 一 X)*T 机=T 定 时代入数据得:X=8067由于方式0 的特点(高 8 位,低 5 位),计算出THL TL1得 TH1=OFCH TL1=03H(2)计算出TMOD的初始值:TMOD=00H(3)编程实现:方法一:使用查询法。程序不断地查询TF1的值。如定时器溢出(TF1=1),贝 IJCPL P1.0所以:MOV TMOD,#00HMOV TH1,#OFCHMOV TL1,#O3HMOV IE,#00H;不用中断的方法,关掉SETB TRI;开启定时器LOOP:JBC TF1,LOOP1AJMPLOOPLOOP1:MOV TH1,#OFCH
14、MOV TL1,#O3HCPLP1.0AJMPLOOP方法二:使用中断的方法。需确定寄存器:TMOD=IE=88H TCON=40H(或 SETB TRI)T1的中断向量=001BHOOH程序如下:O.I d yd。H E 0#T L A O WA O W芭H W L L当hdw?当HH E 0#T L A O WH U H O#C I H I A O WH orf#c Z O U IA O WH 8 8#W IA O WH O寸#C Z O 2A O WH o o#3 O W IA O WzH H W L L IId W f VH q s o9 H oZ I V Wd W f Vi o OD
15、 U ORETI遢:定时器定时或计数,不会影响CPU的工作。定时方式1:与方式。没有大的区别,只有定时器是16位的。所以定时=(2X-初 值)T 机方式2:8 位初值自动赋值的定时/计数器解法一样:(1)计算T 的初始值(2)TMOD=?(2)程序设计方式三:TO:TL0 8 位,可作定时也可作计数,与方式0,一样使用。TH0:8位,只能作定时,借作TRI TF1T1:没法中断,只能产生不断的脉冲,一一全波特率可用方式0,1,2 o如要停止脉冲,要强制设方式3第六章一、填空题1、8 16 13 22、高电平 低电平 高阻3、256 数据 4 K B程序64KB 数据 64KB程序4、16P0 P25、PSEN RDWR ALECE ALE 66、16KB 31FFH7、外存8、片选9、3 PSEN ALE二、单选题DADDC ADA第七章填空题1.数据 ALE RD WR2.无条件传送 查询 中断3.缓冲 锁存4.12 115.高 方式定义 C 位置位/复位6.方式1 输出 方式1 输出 输出输入7.10100111单选题DACDBB
限制150内