《单片机课后习题考试重点答案.pdf》由会员分享,可在线阅读,更多相关《单片机课后习题考试重点答案.pdf(18页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 i、厂-一 早2.80C51单片机的存储器的组织采用何种结构?存储器地址空间如何划分?各地址空间的地址范围利容量如何?在使用上有何特点?答:采用哈佛结构,在物理上设计成程序存储器和数据存储器两个独立的空间;80C51基本型单片机片内程序存储器为4KB,地址范围是000011-OFFFH,用于存放程序或常数;片内数据存储器为128字节RAM,地址范围是00H-7FH,用于存放运算的中间结果、暂存数据和数据缓冲;另外在80H-FFH还配有21个SFR4.如果80c5 1单片机晶振频率分别为6 MHz、11.0592 MHz、12MHz时,机器周期分别为多少?答:机器周期分别为2 u s,1.08
2、5 us,1PS6.80c5 1单片机的片内、片外存储器如何选择?答:80C51的女引脚为访问片内、片外程序存储器的选择端。访问片内、片外数据存储器需要采用不同的指令加以区分。8.80C51单片机的当前工作寄存器组如何选择?答:当前工作寄存器组的选择由特殊功能寄存器中的程序状态字寄存器PSW的RS1、RS0来决定。二 早1 0.完成某种操作可以采用几条指令构成的指令序列实现,试写出完成以下每种操作的指令序列。(1)将 R0的内容传送到R1;(2)内部RAM单元60H的内容传送到寄存器R2;(3)外部RAM单元1000H的内容传送到内部RAM单元60H;(4)外部RAM单元1000H的内容传送到
3、寄存器R2;(5)外部RAM单元1000H的内容传送到外部RAM单元2000H。答:(1)MOV A,R0MOV RI,A(2)MOV R2,60H(3)MOV DPTR,#1000HMOVX A,DPTRMOV 60H,A(4)MOV DPTR,#1000HMOVX A,DPTRMOV R2,A(5)MOV DPTR,#1000HMOVX A,DPTRMOV DPTR,#2000HMOVX DPTR,A11.若(RI)=30H,(A)=40H,(30H)=60H,(40H)=08H。试分析执行下列程序段后上述各单元内容的变化。MOVA,R1MOVR1,40HMOV40H,AMOVRI,#7F
4、H答:(RI)=7FH(A)=60H(30H)4)8H(40H)=60H12.若(A)=E8H,(RO)=40H,(R I)=20H,(R4)=3AH,(40H)=2CH,H)=0FH,试写出下列各指令独立执行后有关寄存器和存储单元的内容?若该指令影响标志位,试指出CY、AC和 OV的值。答:(1)MOVA,R0(2)ANL40H,#0FH(3)ADDA,R4(4)SWAPA(5)DECR1(6)XCHDA,R1(1)(A)=2CH(2)(40H)=OCH(3)(A)=22H,(CY)=1,(AC)=1,(OV)=0(4)(A)=8EH(5)(20H)=0EH,P=1(6)(A)=EFH,(2
5、0)=08H1 3.若(50H)=40H,试写出执行以下程序段后累加器A、寄存器R0及内部RAM的40H、41H、42H单元中的内容各为多少?MOV A,50HMOV RO,AMOV A,#00HMOV R0,AMOV A,#3BHMOV 41H,AMOV 42H,41H答:(A)=3BH,(RO)=40H,(40H)=00H,(41H)=3BH,(42H)=3BH。1 5.试编写程序,将内部RAM的 20H、21H、22H三个连续单元的内容依次存入2FH、2EH 和 2DH 单元。答:MOV 2FH,20HMOV 2EH,21HMOV 2DH,22H1 6.试编写程序,完成两个16位数的减法
6、:7F4DH2B4EH,结果存入内部RAM的30H和 31H单元,30H单元存差的高8 位,31H单元存差的低8 位。答,CLRCYMOV30H,#7FHMOV31H,#4DHMOVRO,#31HMOVA,R0SUBBA,#4EMOVR0,A;保存低字节相减结果DECROMOVA,R0SUBBA,#2BHMOVR0,A;保存高字节相减结果17.试编写程序,将 R1中的低4 位数与R2中的高4 位数合并成一个8 位数,并将其存放在R1中。答:MOVA,R1;ANL A,#0FH;MOV RI,AMOV A,R2ANL A,#0F0HORL A,RIMOV RI,A18.试编写程序,将内部RAM的
7、 20H、21H单元的两个无符号数相乘,结果存放在 R2、R3中,R 2中存放高8 位,R3中存放低8 位。答:MOV A,20HMOV B,21HMUL ABMOV R3,AMOV R2,B四章7 .编写程序,把外部RAM中1 0 0 0 H 1 0 1 F H的内容传送到内部RAM的3 0 H 4 F H中。答:O R G 0 0 0 0 HM O V D P T R,#1 0 0 0 HM O V R O,#3 0 HM O V R 7,#3 2L O O P:M O V X A,D P T RM O V R 0,AI N C R OI N C D P T RD J N Z R 7,L
8、O O PR E T8 .编写程序,实现双字节无符号数加法运算,要求(R 0 R 1)+(R 6 R 7)T(6 0 H 6 1 H)。答:O R G 0 0 0 0 HM O V A,R 1A D D A,R 7M O V 6 1 H,AM O V A,R OA D D C A,R 6M O V 6 0 H,AS J M P$E N D9 .若8 0 c 5 1的晶振频率为6 M H z,试计算延时子程序的延时时间。D E L A Y:M 0 V R 7,#0 F 6 HL P:M 0 V R 6,#O F A HD J N Z R 6,$D J N Z R 7,L PR E T答:延时时间
9、:2|i s*l+(1+2*2 5 0+2)*2 4 6)+2 +2 =0.2 4 7 4 8 6 秒(含调用指令 2个机器周期)1 0.在内部RA M的3 0 H 3 7 H单元存有一组单字节无符号数。要求找出最大数存入B I G单元。试编写程序实现。答:OR G 0000HBI G DAT A 2 F HONE DAT A 2 AHT W O DAT A 2 BHS T AR T:MOV R 7,#7;比较次数MOVR O,#3 0HLOOP:MOVA,R 0MOVONE,AI NCR OMOVT W O,R 0CLRCS U BB A,0R 0JCNEX T;ONE小,T W O大继续比
10、下一对数MOVR 0,ONE;ONE大 放 后 面(交换)DECR OMOVR 0,T W O;T W O小放前面I NCR O*NEX T:DJNZ R 7,LOOPMOVBI G,3 7 HS JMP$END1 1.编写程序,把累加器A 中的二进制数变换成3位 B C D 码,并将百、十、个位数分别存放在内部RA M 的 5 0H、5 I H、5 2 H 中。答:单字节二进制数转换为压缩的B C D 码仅需要2个字节;在将压缩的B C D 码拆分存于3个单元。o r g 0MOV 5 2 H,#0MOV 5 1 H,#0MOV 5 0H,#0MOV A,#OF DhLCALL DCDT H
11、S JMP$DCDT H:MOVMOVR 7,#8R O,A;暂存于R OLOOP:CLR CMOVA,R OR LCAMOVR O,AMOVMOV A,R 1ADDC A,R 1 ;DA AMOV R 1,ADEC R IMOV A,R 1ADDC A,0R 1DA AMOV R 1,ADJNZ R 7,LOOPI NC R I ;5 0H已是结果,R I指向5 1 H,5 1 H单元需拆分MOV A,#00HX CH D A,R 1MOV 5 2 H,AMOV A,R 1S W AP AMOV R 1,AR ETEND12.编写子程序,W R I中的2个十六进制数转换为ASCII码后存放在
12、R3和R 4中。答:OR G 0MOVR 1,#5 BHMOVA,R IANLA,#OF OHS W APAACALLAS CI IMOVR 3,AMOVA,R IANLA,#OF HACALLAS CI IMOVR 4,AS JMP$AS CI I:PU S HACCCLRCS U BBA,#OAHPOPACCJC 1LOOPADDA,#07 1 1LOOP:ADDA,#3 0HR ETEND13.编写程序,求内部R A M中50H 59H十个单元内容的平均值,并存放在5AH单元。答:OR G0000HMOVR 7,#1 0MOVR O,#5 0HMOVB,#1 0CLRCCLRALOOP:
13、ADDCA,R OI NC R ODJNZ R 7,LOOPDI V ABMOV 5 AH,AS JMP$END1 4.如图4.1 0所示,编制程序实现:上电后显示“P”,有键按下时显示相应的键号“0”“7”。答:实现程序如下:T EMP EQU3 01 1OR G0000HJMPS T AR TOR G 01 00HS T AR T:MOVS P,#5 F HMOVPO,#8 CH;正序显示 PMOVP3,#OF F H;输入方式CLRCYNOKEY:MOVA,P3CPLAJZNOKEY;无键按下MOVT EMP,P3;有键按下CALLDl Om sMOVA,P3CJNEA,T EMP,NO
14、KEY;去抖动MOV R 2,#0;键号计数器复位MOV A,T EMPLP:R R CAJNC DONEI NCR 2S JMPLPDONE:MOVA,R 2MOVDPT R,#CODE_ POMOV CA,A+DPT RMOVPO,AJMPNOKEYD1 0m s:M0V R 5,#1 0;1 0MSDl m s:M0V R 4,#2 4 9DL:NOPNOPDJNZ R 4,DLDJNZ R 5,Di m sR ETCODE PO:DB OCOH,0F9H,0A4H,OBOH,99H,92H,82H,0F8HDB 80H,90H,88H,83H,0C6H,OA1H,86H,8EHEND五
15、章1.8 0C5 1有儿个中断源?各中断标志是如何产生的?又是如何复位的?C P U响应各中断时,其中断入口地址是多少?答:5个中断源,分 别 为外中断而5和 而1、T O和T 1溢出中断、串口中断。电平方式触发的外中断标志与引脚信号一致;边沿方式触发的外中断响应中断后由硬件自动复位。T O和T l,C P U响应中断时,由硬件自动复位。R I和TL由硬件置位。必须由软件复位。另外,所有能产生中断的标志位均可由软件置位或复位。各中断入口地址:I NT 0-0003 H,T O000BH,I NT I 001 3 H,T l 001 BH,R I和 T I 002 3 H,3.外部中断源有电平触
16、发和边沿触发两种触发方式,这两种触发方式所产生的中断过程有何不同?怎样设定?答:当I T 0=0时,而 为 电 平 触 发 方 式。电平触发方式时,C P U在每个机器周期的S 5 P2采样而所引脚电平,当采样到低电平时,置 正0=1向C P U请求中断;采样到高电平时,将I E0清0。在电平触发方式下,C P U响应中断时,不能自动清除I E0标志。电平触发方式时,外部中断源的有效低电平必须保持到请求获得响应时为止,不然就会漏掉;在中断服务结束之前,中断源的有效的低电平必须撤除,否则中断返回之后将再次产生中断。该方式适合于外部中断输入为低电平,且在中断服务程序中能清除外部中断请求源的情况。当
17、r r o=i时,而5为边沿触发方式。边沿触发方式时,C P U在每个机器周期的s 5 P 2采 样 而5引脚电平,如果在连续的两个机器周期检测到而引脚由高电平变为低电平,即第一个周期采样到而=1,第二个周期采样到布而=0,则置正0=1,产生中断请求。在边沿触发方式下,C P U响应中断时,能由硬件自动清除IE 0标志。边沿触发方式时,在相继两次采样中,先采样到外部中断输入为高电平,下一个周期采样到为低电平,则 在IE 0或IE I中将锁存一个逻辑1。若C P U暂时不能响应,中断申请标志也不会丢失,直 到C P U响应此中断时才清0。另外,为了保证下降沿能够被可靠地采样到,而和茴引脚上的负脉
18、冲宽度至少要保持一个机器周期(若晶振频率 为1 2 M H z,为1微秒)。边沿触发方式适合于以负脉冲形式输入的外部中断请求。8.利用定时/计数器T 0从P 1.0输出周期为1 s,脉宽为2 0 m s的正脉冲信号,晶振频 率 为1 2 M H z o试设计程序。答:采用定时2 0 m s,然后再计数1、4 9次的方法实现。a、T O工作在定时方式1时,控制字TMOD配置:M 1 M O=O 1,G A T E=O,C/f=O,可取方式控制字为 0 1 H;b、计算计数初值X:晶 振 为1 2 M H z,所以机器周期T cy为1睽。N=t/T cy =2 0 x 1 0-3/1 x 1 0-
19、6=2 0 0 0 0X=2I6-N=65536-200()0=45536=4E20H即应将4 E H送入T H 1中,2 0 H送入T L 1中。c、实现程序如下:O R G0 0 0 0 HA JM P M A IN;跳转到主程序O R G0 0 3 0 HM A IN:M O VT M O D,#0 1 H;设口工作于方式2M O VT H O,#4 E H;装入循环计数初值M O VT L O,#2 0 1 1;首次计数值L P O:S E T B P 1.0A C A L LN T OC L RP 1.0M O VR 7,#4 9;计数4 9次L P 1:A C A L LN T O
20、D JN Z R 7,L P 1A JM P L P ON T O:M O VT H O,#4 E HM O VT L O,#2 0 HS E T B T R OJN B T F O,$C L R T R OC L R T F OR E TE N D9.要求从P 1.1引脚输出1 0 0 0 H z方波,晶振频率为1 2 M H z。试设计程序。答:采用T 0实现a、T O工作在定时方式1时,控制字T M O D配置:M 1 M O=O 1,G A T E=O,C/f=O,可取方式控制字为 0 1 H;b、计算计数初值X:晶振为1 2 M H z,所以机器周期T cy为1即。1/1 0 0 0
21、=1 x 1 0 N=t/T cy =0.5X1 0 7/1X1 0 6=5 0 0X=21 6-N=6 5 5 3 6-5 0 0=6 5 0 3 6=F E 0 C H即应将F E H送入T H O中,O C H送入T L O中。c、实现程序如下:O R G 0 0 0 0 HS E T B E T O;T O 开中断A JM P M A IN;跳转到主程序O R GO O O B H;T O的中断入口地址L JM P D V T OO R G0 0 3 0 HM A IN:M O VT M O D,#0 1 H;设丁0工作于方式2M O VT H O,#O F E H;装入循环计数初值M
22、 O VT L O,#O C H;首次计数值S E T B E A ;C P U 开中断S E T B T R O;启动 T OS JM P$;等待中断D V T O:C P L P l.1M O V T 1 I0,t t O F E l lM O V T L O,#O C HS E T B T R OR E T IE N D10.试用定时/计数器T 1对外部事件计数。要求每计数100,就 将T 1改成定时方式,控 制P1.7输出一个脉宽为10ms的正脉冲,然后又转为计数方式,如此反复循环。设晶振频率为12MHz。答:a、T1工作在计数方式2时,控制字TMOD配置:M1 MO=1 O,G A
23、T E=O,C/T=1.可取方式控制字为 60 H;T1工作在定时方式1时,控制字TMOD配置:M1 MO=O 1,G A T E=O,C/=0,可取方式控制字为1 0 H;b、计算初值X:定 时10ms时:晶 振 为 1 2 MHz,所以机器周期T c y为 1 即。N=t/T c y=1 0 xl0-7 1 x l 0-6=1 0 0 0 0X=2I6-N=65536-10000=55536=D8F0H即应将D81 I 送 入 T H1 中,F 0 I 1 送 入 T L1 中。计 数100时:N=1 0 0X=28-N=256-100=156=9CHC、实现程序如下:O R G0 0 0
24、 0 HA J MP MA I N;跳转到主程序O R G0 0 1 B H;T 1 的中断入口地址LJ MP DVT 1O R G0 0 3 0 HMA I N:MO VT MO D,#60 1 1;T 1 工作于计数方式2MO VT H1,#9CH;装入计数初值MO VT L1,#9CHCLRP l.7S ET B ET 1;T 1 开中断S ET B EA;CP U开中断S ET B T R I;启 动 T 1S J MP$;等待中断DVT 1:S ET B P l.7CLRET 1ENDCLRT R IMO VT MO D,#1 0 H;T 1 工作于定时方式1MO VT H1,#O
25、D8H;装初值MO VT L1,#O F O HS ET B T R IJ NBT F 1,$;查询等待1 0 msCLR T F 1CLRT R ICLRP l.7MO VT MO D,#60 H;T 1 工作于计数方式2MO VT H1,#9CH;装初值MO VT L1,#9CHS ET B ET 1;T 1 开中断S ET B T R I;启动T 1R ET I1 1.利用定时/计数器T O 产生定时时钟,由 P 1 口控制8 个指示灯。编一个程序,使 8个指示灯依次闪动,闪动频率为1 次/秒(即,亮 1 秒后熄灭并点亮下一个,-一)。答:采用定时2 0 m s,计 数 5 0 次 实
26、现 1 秒定时。编 制 I 秒延时子程序,由主程序调用。a、T O 工作在定时方式1时,控制字TM OD 配置:M1 MO=O 1,G A T E=O,C/=0,可取方式控制字为0 1 H;b、计算计数初值X:晶 振 为 1 2 M Hz,所以机器周期T c y为 1 即。N=t/T c y=2 0X1 0-3/1X1 0-6=2 0 0 0 0X=2 6-N =6553 6-2 0 0 0 0=4553 6=4E2 0 H即应将4EH送 入 T H1 中,2 0 H送 入 T L1 中。c、实现程序如下:O R G 0 0 0 0 1 1A J MP MA I N;跳转到主程序O R G 0
27、 0 3 0 HMA I N:CLR CYMO V A,#0 1 HLP O:MO V P l,ACA LL DI S ECR L AA J MP LP ODI S EC:MO V R 7,#50 ;计数 50 次MO V T MO D,#0 1 1 1DL:MO V T HO,#4EHMO V T LO,#2 0 HSETB TROJNB TFO,$CLR TROCLR TFODJNZ R7,DLRETEND八 早5 .利用单片机串行口扩展并行输入接口电路如图所示。试编写程序完成将SW 1-SW 8的状态反应在P0 口所接的LED上(如SW 1闭合时L 7应点亮)。答:电路图如下:+5V 9
28、10Kx8HGFEDCBAI 5RXDTXDPO.PO.PO.PO.PO.PO,PO,PO.L7 1Kx899ISWZL1 2 3 4 5 6 7 889S512()SW1-SW8O R G 0 0 0 0 HMO V S CO N,#1 O HLO O P:CLR P l.7NO PNO PNO PS ET B P l.7CLR R IJ NB R I,$MO V A,S UB FS J MP LO O PEND6 .利用单片机串行口扩展并行输出接口电路如图所示。试编写程序完成将SW1SW8的状态反应在移位寄存器74LS164所接的LED上(如SW 1闭合时L 0应点亮。答:电路图如下:+5
29、VKI(=i-+0 (=W(=J-ABCDEFGHQQQQQQ6Q-9IS1WRXDTXD89S512001234567plplplplplplplplSWISW8ORGMOVMOVLOOP:MOVMOVJNBCLRSJMPOOOOHSCON,#OOHP l,#OFFHA,P lSUBF,AT I,$TILOOPEND七章1.以80c3 1为主机,用2片27c256扩展64KEPROM,试画出接口电路。答:P2.7-P2.0-P2.6ALEP080C31EAPSENO EQ7:QOpg3MGD7:DOA0-A7 A8-A14D-D7 QE CEA0-A7 A8-AI4D0-D 7 QE CE2
30、7C256 27c2562.以80c3 1为主机,用1片27c512扩展64KEPROM,试画出接口电路。答:P2.0-P2.7ALEP080C31EAPSEN百咨这7oGD:DN-A8-A1527C512A7AOCEDO D7OE3.以80C31为主机,用1片27C256扩展32K R A M,同时要扩展8 K的RAM,试画出接口电路。答,P2.0-P2.6ALEP080C31EAPSENRDWR-O EQ7:Q OGD7:.Do27C256 AO-A7 A8-AI4DO-D7 OECEA0-A7 A8-A12DO D7 OE WE CE62C64八章3.试根据图8.3的接口电路编制程序,实
31、现产生正向的锯齿波。答:设DATA1和DATA2为锯齿波的最低和最高值,有:START:MOVMOVSTEPkMOVDPTR,#7FFFHR7,#DATA1A,R7MOVX DPTR,AINC R7CJNE R7,#DATA2,STEP 1JMP START4.根 幽 8.6所示的接口电路,若要从该A/D转换器的通道1 采集数据,每 隔 10ms读 入 4 个数据,并将数据存入地址为30H 33H 的内部数据存储器中。试设计该程序。答:ORG0JMPMAINORG0013HJMPINTIORG0040HMAIN:MOVSP,#5FHMOVDPTR,#7FF9HSETBIT1SETBEXISETBEALP1:MOVR0,#30HMOVR7,#4LP2:MOVXDPTR,ASJMP$DJNZR7,LP2CALLDI 0msSJMPLP1D10ms:MOVR5,#10Dlms:MOVR4,#249DL:NOPNOPDJNZ R4,DLDJNZR5,DlmsRETORG0300HINTkMOVXA,DPTRMOVR0,ARETI
限制150内