




免费预览已结束,剩余27页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单片机原理及应用习题答案习题1解答1. 填空: 201010014;1100101B10165;1F8H1 1111 1000504; 1个字节由 8 个二进制位组成,每个二进制位只有 2 种状态,可表示为 0 或 1 ; 1K字节就是2的 10 次方字节,即 1024 个字节;1M字节就是2的 20 次方字节,约为 1048567 个字节。2. 在8位二进制中,26、26、127、1的补码(用十六进制表示)是多少?解:正数的补码等于原码,负数的补码等于它的原码除符号位不变,其余的各位求反加1。26原=0001 10101B=1AH,26补=1AH26原=1001 10101B,26补=1110 0101B+1=1110 0110B=0E6H127原=1111 1111B,127补=1000 0000B+1=1000 0001B=81H1原=1000 0001B,1补=1111 1110B+1=1111 1111B=0FFH3. 用十进制写出下列补码表示的数的真值:FEH、FBH、80H、11H、70H、7FH。解:真值是指日常用“+”或“ ”号表示的数。机器数是指计算机中用编码表示的数,正数的符号以最高位为0表示,负数的符号以最高位为1表示。根据补码求真值的一个通俗口诀是“正码不变,负码求补,补后勿忘添负号”。FEH=1111 1110B,其符号位为“1”,属负数,故其原码为1000 0001B+1=1000 0010B,即FEH真值为2;同理FBH属负数,其真值为5;80H的真值为128;11H的真值为+17;70H的真值为+112;7FH的真值为+127。4. 微型计算机主要由哪几部分组成?各部分有何功能?答:一台微型计算机由中央处理单元(CPU)、存储器、I/O接口及I/O设备等组成,相互之间通过三组总线(Bus):即地址总线AB、数据总线DB和控制总线CB来连接。CPU由运算器和控制器组成,运算器能够完成各种算术运算和逻辑运算操作,控制器用于控制计算机进行各种操作。存储器是计算机系统中的“记忆”装置,其功能是存放程序和数据。按其功能可分为RAM和ROM。输入/输出(I/O)接口是CPU与外部设备进行信息交换的部件。总线是将CPU、存储器和I/O接口等相对独立的功能部件连接起来,并传送信息的公共通道。5. 何为存储器单元的地址?答:存储器中存放二进制数的单元称为存储单元。存储器中包含许多存储单元,为了便于信息的存入和取出,每一个存储单元必须有一个固定的编号来标识,称这个编号为存储器单元地址。6 .何谓单片机?单片机有何特点?答:单片机(Single Chip Microcomputer)是指把CPU、RAM、ROM、定时器/计数器以及I/O接口电路等主要部件集成在一块半导体芯片上的微型计算机。单片机在控制应用领域中的特点:面向控制,能针对性地解决从简决从简单到复杂的各类控制任务,因而获得最佳的性能价格比;抗干扰能力强、适应温度范围宽,能在各种恶劣的环境下都能可靠性地工作;能方便地实现多机和分布式控制,从而使整个控制系统的效率和可靠性大大提高;体积小、功耗低、低成本、控制功能强、易于产品化,能方便地组成各种智能化的控制设备和仪器,做到机、电、仪一体化。7 .单片机内部ROM的配置有几种形式?答:单片机片内ROM的配置状态可分四种:片内掩膜(Mask)ROM型单片机(如8051),适合于定型大批量应用产品的生产;片内EPROM型单片机(如8751),适合于研制产品样机;片内无ROM型单片机(如8031),需外接EPROM,单片机扩展灵活,适用于研制新产品;EEPROM(或Flash ROM)型单片机(如89C51),内部程序存储器电可擦除,使用更方便。习题2解答1.8051单片机内包含哪些主要逻辑功能部件?答:8051单片机是一个完整的单片微型计算机。它包括以下功能部件:一个芯片上,集成了一个微型计算机的基本组成部分。它包括以下功能部件:1个8位CPU;片内4KB的程序存储器ROM;片内128B的数据存储器RAM;可寻址外部程序存储器和数据存储器空间各64KB的控制电路;21个特殊功能寄存器SFR;4个8位并行I/O口P0P3,共32根I/O线;1个全双工的串行口;2个16位定时器/计数器;5个中断源,有2个优先级嵌套中断结构;片内振荡器及时钟电路。2.8051单片机的信号有何功能?8031的引脚应如何处理,为什么?答:(1) 是访问外部程序存储器ROM的控制信号。当为低电平(接地)时,CPU只执行外部程序存储器中的程序。当为高电平且PC值小于0FFFH(4K)时,CPU执行内部程序存储器的程序,但当PC的值超出4K时(对8051/8751/8951)将自动转去执行片外程序存储器内的程序。8031单片机无片内ROM的,必须外接程序存储器,因此,8031的必须接地(低电平)。38051单片机的P0P3口各有什么特点?8051单片机有P0、P1、P2、P3四个双向的8位并行I/O口,每个端口可以按字节输入或输出,每一条I/O线也可以单独用作输入或输出(即按位进行输入或输出)。每个端口都是由一个锁存器(即特殊功能寄存器P0P3),一个输出驱动器和两个(P3口为3个)输入缓冲器组成。并行I/O口作输出时数据可以锁存,作输入时数据可以缓冲,但它们又各具特点。P0口和P2口构成MCS51单片机的16位地址总线,P0口还是8位的数据总线。P3口多用于第二功能输入或输出,。通常只有P1口用于一般输入/输出。P3口各位的第二功能P3口引脚第二功能P3口引脚第二功能P3.0RXD(串行输入端)P3.4T0(定时器0的外部输入)P3.1TXD(串行输出端)P3.5T1(定时器1的外部输入)P3.2(外部中断0输入)P3.6(片外数据存储器写选通控制输出)P3.3(外部中断1输入)P3.7(片外数据存储器读选通控制输出)系统复位后,P0P3口的32个管脚均输出高电平,因此在系统的设计过程中,应保证这些管脚控制的外设不会因为系统复位而发生误动作。P0P3口输出级的电路结构有所不同。P0口是三态输出,其每个管脚均可以驱动8个LSTTL输入,而P1P3口的输出级均有上拉电阻,每个管脚可驱动4个LSTTL输入。每个并行口,可定义一部分管脚为输入脚,另一部分管脚为输出脚,没有使用的管脚可以悬空。4.简述8051单片机存储器的组织结构和片内RAM的空间分配。答:8051单片机的存储器包括程序存储器和数据存储器,从用户使用的角度可分为三个逻辑地址空间:片内、片外统一编址的64KB程序存储器地址空间0000HFFFFH;64KB的外部数据存储器或扩展I/O口地址空间0000HFFFFH;256B的片内数据存储器地址空间00HFFH(包括低128B的内部RAM地址00H7FH和高128B的特殊功能寄存器地址空间,21个SFR离散地分布在这个区域)。内部RAM共有128个单元,根据用途可划分为工作寄存器区、位寻址区和通用RAM区,各区域的特性如下:工作寄存器区(00H1FH) 寄存器区32个单元共分4个组,每个组有8个8位的寄存器R0R7。在任何时刻,四个组中只能有一组可以成为当前工作寄存器组使用,其他三组作为一般的内部RAM使用。当前工作寄存器组由程序状态字寄存器PSW的RS0和RS1两位的状态来决定。 位寻址区( 20H2FH)共16个单元,每个单元有8个位,每个位都有一个位地址,编号为00H7FH,位寻址区的16个单元也可以按字节寻址,作为一般的内部RAM使用。 通用RAM区(30H7FH) 这部分存储空间作为一般的内部RAM区或堆栈区,CPU只能按字节方式寻址。5. 8051单片机有哪些特殊功能寄存器?各在单片机中的哪些功能部件中?答: 8051单片机有21个8位的特殊功能寄存器(SFR),它们的地址离散地分部在内部数据存储器的80HFFH地址空间。在8051单片机结构中,21个SFR在物理上是分散在片内各功能部件中: CPU的中SFR:Acc、B、PSW、SP和DPTR(16位寄存器,由DPH和DPL组成); 定时/计数器单元中的寄存器:TMOD、TCON、T0(16位寄存器,由TH0和TL0组成)和T1(16位寄存器,由TH1和TL1组成); 并行I/O口寄存器:P0、P1、P2和P3; 中断系统内的寄存器:IE和IP; 串行端口中的寄存器:SCON、SBUF和PCON。6程序计数器PC有何作用?是否属于SFR,为什么?答:程序计数器PC是一个16位的专用寄存器,用来存放即将要执行的指令地址,可对64KB的程序存储器直接寻址。它具有自动加1功能,当CPU要取指令时,PC的内容送地址总线上,从存储器中取出指令后,PC内容则自动加1,指向下一条指令,从而保证程序按顺序执行。PC虽然也是CPU内部的一个寄存器,但它在物理结构上是独立的,没有地址,是不可寻址的,用户无法对它进行直接读写,不属特殊功能寄存器。7什么叫堆栈?堆栈指针SP的作用是什么?8051单片机堆栈的最大容量是多少字节?答:堆栈是按照“先进后出,后进先出”的原则来存取数据的一个内部RAM区域,这个存储器区域的一端是固定的(栈底),另一端是活动的(栈顶),每个存储单元是不能按字节任意访问的。堆栈指针SP始终指向栈顶单元,栈顶随着数据入栈和出栈上下浮动。8051单片机堆栈的最大容量是128字节88051单片机的程序存储器和数据存储器可以有相同的地址,而单片机在对这两个存储区的数据进行操作时,不会发生错误,为什么?答:对于不同的存储地址空间,8051单片机采用不同的存取指令和控制信号: CPU访问片内、外ROM时,采用“MOVC”指令,外部ROM用选通;访问外部RAM或扩展I/O口时,采用“MOVX”指令,由(读)信号和(写)信号选通;访问片内RAM和特殊功能寄存器时,采用“MOV”指令。因此,尽管程序存储器地址和数据存储器地址空间重叠,但不会发生混乱。98051单片机是如何确定和改变当前工作寄存器组?答:在任何时刻,8051单片机的四个工作寄存器组中只能有一组可以成为当前工作寄存器组使用,其他三组作为一般的内部RAM使用。当前工作寄存器组由程序状态字寄存器PSW的RS0和RS1两位的状态来决定,如表所示。当前工作寄存器组的选择RS1RS0被选寄存器组寄存器R0R7的地址000组00H07H011组08H0FH102组10H17H113组18H1FH根据需要,用户可以利用传送指令或位操作指令改变RS1和RS0的内容来选择不同的工作寄存器组。10单片机复位后,CPU使用了哪一组工作寄存器?工作寄存器R0R7对应的单元地址是什么?答:单片机复位后,RS1和RS0都为0,CPU选中第0组作为当前工作寄存器组,工作寄存器R0R7对应的单元地址是00H07H。11程序状态字寄存器PSW的作用是什么?常用标志位有哪些位?作用是什么?答:PSW是一个8位的特殊功能寄存器,由一些标志位组成,用于存放程序运行中的各种状态信息。它可以进行位寻址,各位的定义如下:位D7D6D5D4D3D2D1D0位名称CyACF0RS1RS0OVPCy:进位标志位。在进行加(或减)法运算时,若操作结果的最高位(D7位)有进位(或借位)时,Cy由硬件置1,否则Cy清0。在进行位操作时,Cy又是位累加器,指令助记符用C表示。AC:辅助进位标志位。在进行加(或减)运算时,若操作结果的低半字节(D3位)向高半字节产生进位(或借位)时,AC位将由硬件自动置1,否则AC位清0。F0:用户标志位。用户根据需要对F0置位或复位,作为软件标志。RS1和RS0:工作寄存器组选择控制位。由用户用软件改变RS1和RS0的状态,以选择内RAM中的哪组工作寄存器为当前工作寄存器组。OV:溢出标志位。当进行补码运算时,运算结果超出128127范围时,产生溢出,则OV自动置1,否则OV清0。PSW.1:保留位。8051中未定义。P:奇偶校验标志位。每条指令执行完后,该位始终跟踪累加器A中1的数目的奇偶性。如果A中有奇数个1,则P1;否则P0。128051单片机的晶体振荡器频率为6MHz,则它一个机器周期为多少微秒?答:机器周期是指CPU完成某一个规定操作所需的时间,8051单片机的一个机器周期包含6个状态,并依次表示为S1S6,每个状态分为2个节拍。因此一个机器周期包含12个时钟周期(振荡周期),依次表示为:S1P1、S1P2、S2P1、S6P1、S6P2。当fosc=6MHz时,机器周期T=12(1/6MHz)=2s138051单片机复位后寄存器PC、A、PSW、SP 、P0P3的状态各是什么?复位后内部RAM中的数据有何影响?答:8051单片机复位后PC、A、PSW、SP 、P0P3的状态如下:PC:0000H;A、PSW:00HSP:07H;P0P3:FFH单片机的复位不影响内部RAM的状态(包括工作寄存器Rn )。习题3解答1若访问工作寄存器、特殊功能寄存器、片外数据存储器、程序存储器分别可使用哪些寻址方式?答:访问工作寄存器采用寄存器寻址,特殊功能寄存器采用直接寻址,片外数据存储器采用寄存器间接寻址,程序存储器的寻址方式有立即寻、变址寻址、相对寻址。2写出下列源操作数的寻址方式。(1) JZ 20H(2) MOV A,R2(3) MOV A,B(4) MOV DPTR,#4012H(5) MOVX A,DPTR(6) MOVC A,APC(7) PUSH B(8) POP ACC(9) MOV C,20H(10)MOV A,20H答:各指令的源操作数的寻址方式是 相对寻址; 寄存器寻址; 寄存器寻址; 立即寻址; 寄存器间接寻址; 变址寻址 ; 直接寻址; 直接寻址; 位寻址; 直接寻址3设片内RAM的30H单元的内容为40H,即(30H)40H,(40H)10H,(10H)00H,端口P1CAH,执行下列程序段填结果。MOV R0,#30H;R0=30HMOV A,R0;A=(R0)=(30H)=40HMOV R1,A;R1=40HMOV B,R1;B=(40H)=10HMOV R1,P1;(40H)=0CAHMOV A,P1;A=0CAHMOV 10H,#20H;(10H)=20HMOV 30H,10H;(30H)=20H结果:R0 ,R1 ,A ,B ,P1 ,(40H) ,(30H) ,(10H) 。解:每一条指令执行后的结果如注释字段所标。最后的结果为R030H,R140H,A0CAH,B10H,P10CAH,(40H)0CAH,(30H)20H,(10H)20H。4设A94H,R237H,(40H)6EH,R140H,RS1RS000 执行程序段填结果。MOV P2,AMOV A0H,R2MOV D0H,R1MOV 02H,#98H结果:A ,(02H) ,(40H) , (01H) , P2 ,PSW 。解:结果:A94H,(02H)98H,(40H)6EH, (01H)40H, P237H,PSW6EH。5A83H,R017H,(17H)34H , 执行以下指令后A?ANL A,#17H;A=03HORL 17H,A;(17H)=37HXRL A,R0;A=34HCPL A;A=0CBH解:每一条指令执行后的结果如注释字段所标。所以执行以下指令后A0CBH。6若要完成下列数据传送,应如何用MCS51的指令来实现。 A的内容送到P1。解:MOVA,P1 R1的内容传送到R0。解:MOVA,R1MOVR0,A 片内RAM 20H单元的内容送片内RAM 30H单元。解:MOV31H,20H 片外RAM 20H单元的内容送片内RAM 30H单元。解:MOVR0,#20HMOVXA,R0MOV30H,A 片外RAM 20H单元的内容送片外RAM 30H单元。解:MOVR0,#20HMOVXA,R0MOVR1,#30HMOVXR1,A 用两种方法将程序存储器ROM 3040H中的常数送到A中,已知PC当前值为3000H。解:MOVA,#00HMOVDPTR,#3040HMOVCA,A+DPTRMOVA,#40HMOVCA,A+PC3000H:3040H: ROM 2000H单元的内容送到片外RAM 1000H单元中。解:CLR AMOVDPTR,#2000HMOVA,A+ DPTRMOVDPTR,#1000HMOV DPTR,A 将A中的内容与寄存器B中的内容交换。解:XCHA,B 将片内RAM 30H单元内容与片外 40H单元的内容交换。解:MOVR0,#40HMOVXA,R0XCHA,30HMOVXR0,A 将片外RAM 30H单元内容与片外 40H单元的内容交换。解:MOVR0,#30HMOVXA,R0MOVR7,A;暂存外部RAM 30H单元的内容MOVR1,#40HMOVXA,R1MOVXR0,A;外部RAM 40H单元的内容送外部RAM 30H单元MOVA,R7MOVXR1,A;外部RAM 30H单元的内容送外部RAM 40H单元7设位单元00H、01H中的内容为0,下列程序段执行后P1口的8条I/O线为何状态?位单元00H、01H的值。 START:CLR C;Cy=0 MOV A,#56H;A=56H=0101 0110B JC LP1 CPL C;Cy=1 SETB 01H;(01H)=1LP1: MOV ACC.0,C; ACC.0=1 JB ACC.2 ,;因ACC.2=1,转向LP2SETB 00H;该指令不执行LP2: MOV P1,A;P1=A=0101 0111BRET解:每一条指令执行后的结果如注释字段所标。P1=0101 0111B,即P1口的8条I/O线中P0.0、P0.1、P0.2、P0.4、P0.6为高电平状态,P0.3、 P0.5、 P0.7为低电平状态,8下列指令哪些是非法指令?(1) CPL B(2) ADDC B,#20H(3) SETB 30H,0(4)MOV R1,R2(5) SUBB A,R2(6) CJNE R0,#64H,LABEL(7) MOVX R0,20H(8) DJNZ R0,LABEL(9) PUSH B(10) POP R1(11) RL B(12)MOV R7, R0(13) RLC A(14) MOV R1,#1234H(15) ANL R0,A(16) ORL C,/ACC.5(17) XRL C,ACC.5(18) DEC DPTR(19) XCHD A ,R1(20) SWAP B(21) MOVX A,ADPTR(22) MOVC A,ADPTR(23) XCH A,R1(24) SUB A,#12H(25) MUL A,B(26) DIV AB(27)DA A(28) JMP LABEL(29) LJMP LABEL(30) RETI解:(1);(2);(3);(4);(5);(6);(7);(8);(9);(10);(11);(12);(13);(14);(15);(16);(17);(18);(19);(20);(21);(22);(23); (24) ;(25);(26); (27); (28); (29);(30)。9执行下列程序填结果。MOV SP,#2FH;SP=2FHMOV A,#50H;A=50HMOV B,#51H;B=51HPUSH ACC;SP=30H,(30H)=50HPUSH B;SP=31H,(31H)=51HPOP ACC;A=51H,SP=30HPOP B;B=50H.SP=2FH结果:SP ,A ,B ,(30H) ,(31H) 。解:结果:SP2FH ,A51H,B50H,(30H)50H,(31H)51H。10SP70H,MA1000H,SUBPR4060H。试问下列程序中哪些是正确的?为什么?哪些程序最好,为什么?若SUBPR1060H,则哪个程序最好,为什么?(1)MA:ACALL SUBPR(2)MA:LCALL SUBPR(3)MA:LJMP 4000H 4000H:ACALL SUBPR LJMP 1003H解:因为ACALL指令转去子程序的入口地址与ACALL的下一条指令必须在同一个2k范围,而LCALL指令转去子程序的入口地址与LCALL的下一条指令范围为64k。所以当SUBPR4060H时,程序(2)和(3)是正确的,(1)的程序是错误的,程序(2)较(3)快捷;当SUBPR1060H时,程序(1)和(2)是正确的,程序(3)是错误的,程序(1)较程序(2)节省一个存储单元。11设A53H,PSW81H,转移指令所在地址为3090H,执行下列各条指令后,PC?(1)JNZ 12H(2)JNC 34H(3)JNB P,56H(4)JBC AC,78H(5)CJNE A,#50H,9AH(6)DJNZ PSW,0BCH(7)SJMP 0B4H解:(1)因A0,所以转移,故PC=(3090H+2)+12H=30A4H;(2)因Cy=1,所以不转移,故PC=3090H+2=3092H;(3)因P=1,所以不转移,故PC=3090H+3=3093H;(4)因AC=0,所以不转移,故PC=3090H+3=3093H;(5)因A50H,所以转移,故PC=(3090H+3)+9AH=3093H-66H=302DH(注意:补码数9AH的最高位为1属负数,故应先求得其真值为-66H)(6)因PSW=PSW-1=80H0,所以转移,故PC=(3090H+3)+0BCH=3093H-44H=304FH(7)无条件转移,PC=(3090H+2)+0B4H=3092H-4CH=3046H。12阅读下列程序,说明其功能。MOV R1,#40H;设(40H)=xMOV A,R1;A= xRL A;A2MOV R0,A;R0=2RLA;A2*2=4RLA;A4*2=8ADD A,R0;A8+2=10MOV R1,A ;(40H)=10x解:各指令的注释如程序所标,程序的功能为40H单元的内容乘10。13执行程序填结果(1)MOV A,#19H;A=19HADD A,#72H;A=8BHDA A;A=91H结果:A解:A=91H(2) CLR C ;Cy=0MOV A,#9AH;A=9AHSUBB A,#19H ;A=81HADD A,#72H;A=0F3HDA A;A=53H,Cy=1结果:A 解:A=53H14设(SP)50H,MA0123H,SUB0345H。执行指令“MA: ACALL SUB”后PC?,SP?,(51H)?,(52H)?。解:PC=0345H,SP=52H,(51H)=25H,(52H)=01H15(SP)4BH,(49H)12H,(4AH)5AH,(4BH)68H。执行指令“RET”后PC?,SP?。解:PC=685AH,SP=48H习题 4解答1按下面要求编程。(51H) 0 ;若(50H)为奇数 1 ;若(50H)为偶数解:MOV A,50HMOVB,#2DIVAB;偶数除以2的余数为0MOVA,BJNZL1;判余数是否为0MOV51H,#01H;为偶数,1送51H单元SJMPNEXTL1:MOV51H,#00H;为奇数,0送51H单元NEXT:SJMPNEXT2按下面要求编程。 1;若 (50H)20(51H) 0;若 20(50H)40 1;若 (50H)40解:MOVA, 50H;设50H单元的内容为XCJNEA,#20,L1;X20时,转向L1SJMPL4;X=20时,转向L4L1:JCL4;X20时,转向L4L2:CJNEA,#40,L3;X20且X40时,转向L3SJMPL4;X=40时,转向L4L3:JNCL4;X4 0时,转向L4MOV51H,#00H;20X40时,送0到51H单元SJMPNEXTL4:MOV51H,#0FFH;X20或X40时,送1 到51H单元NEXT:SJMPNEXT3试编写程序,将片外8000H开始的16个连续单元清0。解:方法一:MOVDPTR,#8000H;数据块首址CLRALOOP:MOVXDPTR,A;单元清0INCDPTRMOVR7,DPLCJNER7,#10H,LOOPSJMP$方法二MOVDPTR,#8000HMOVR7,#10H;数据块长度16CLRALOOP:MOVXDPTR ,AINCDPTRDJNZR7,LOOPSJMP$4在片内50H开始的单元中存有8个无符号数,找出其中最大数存于70H单元中。解:MOVR0,#50H;数据块首址MOVR2,#8;长度计数器赋初值MOVA,R0;取第一个数LOOP:INCR0;取下一个数MOVB,R0CJNEA,B,NEXTNEXT:JNCNEXT1;两数比较,若AB时,A中放当前数MOVA,R0;若AB时,送大数到A中NEXT1:DJNZR2,LOOP;数据块比较完否?MOV70H,A;最大值送入70H单元中HERE:SJMPHERE5试编写程序,求出片内RAM 30H单元中的数据含“1”的个数,将结果存入31H单元。解:要统计一个8位二进制数中“1”的个数,可以把这个数一位一位地移到Cy中,然后加以判断和统计。程序设计如下:MOVR2,#8;移位次数MOVR1,#10;R1作为统计“1”的个数的计数器MOVA,30H;取数LOOP:RLCA;数的最高位移入CyJNCNEXTINCR1;若Cy=1,则计数器加1NEXT:DJNZR2,LOOPMOV31H,R1;存结果HERE:SJMPHERE6编制用软件延时1秒的子程序,控制P1脚上所接的8个发光二极管交叉灯亮一秒。解:设晶体振荡器的频率为6MHz.MOV A,#0AAHLOOP:MOVP1,A;交叉亮LCALLDEY1S;调延时1S子程序CPLASJMPLOOPDEY1S: MOV R5,#2;延时1S子程序LOOP3: MOVR6,#200LOOP2: MOVR7,#250LOOP1: NOP NOP NOP DJNZR7,LOOP1 DJNZR6,LOOP2 DJNZR5,LOOP3 RET7设计灯移位程序,要求P1脚上所接的8只发光二极管每次点亮一个,点亮时间为0.5秒。顺序从低位到高位循环点亮。解:MOVA,#01HLOOP: MOV P1,A LCALL DEY05S RL ASJMP LOOPDEY1S: MOV R5,#1;延时0.5S子程序LOOP3: MOVR6,#200LOOP2: MOVR7,#250LOOP1: NOP NOP NOP DJNZR7,LOOP1 DJNZR6,LOOP2 DJNZR5,LOOP3 RET8将累加器A中的2位十六进制数,转换为ASCII码,存放在片内RAM 30H和31H单元中。解:MOVR0,A;暂存A中的数在R0中ANLA,#0FH;屏蔽高位MOVDPTR,#ASCTABMOVCA,A+DPTR;低位转换成ASCII码MOV31H,A;存低位MOVA,R0SWAPA;将高位交换到低位ANLA,#0FHMOVCA,A+DPTRMOV30H,A;存高位ASCII:DB 30H,31H,32H,33H,34H,35H,36HDB 37H,38H,39H,41H,42H,43H,44HDB 45H,46H9将两字节ASCII码,转换为二进制数,编成子程序形式。解:子程序为AASCH如下:;功能:将两字节ASCII码,转换为一个字节二进制数(即十六进制);入口参数:(R0)为ASCII码的首地址;出口参数:(R1)为转换后的二进制数的地址AASCH:MOVA,R0;取ASCII码的高位ACALLASCH;调用子程序ACHSWAPA;将十六进制数放在A的高位MOVR1,A;存十六进制数到高4位INCR0;指向下一个ASCII码数MOVA,R0ACALLASCHXCHDA,R1;存十六进制数到低4位RETACH:CLRC;将A中的ASCII码数转换成十六进制数并存放在A中的子程序SUBBA,#30HCJNEA,#0AH,NEXT;判ASCII码数是数字还是字母?NEXT:JCAH;若为数字(09),转移SUBBA,#07H;十六进制数为字母是减7AH:RET10将两字节ASCII码,转换为BCD码,编成子程序形式。解:两字节ASCII码转换为BCD码,用压缩BCD码的形式表示正好占用一个字节。子程序ASCBCD如下:;功能:将两字节ASCII码,转换为BCD码,若ASCII码数为非法BCD码(即AF),则在相应半字中置入“$”符号,以示区别;入口参数:(R1)为ASCII码的首地址;出口参数:(R0)为转换后的BCD码的地址ASCBCD:MOVA, R1;取一个ASCII码ACALLACB;调用ACB子程序SWAPA;BCD码的放在A的高4位MOVAR0,A;存BCD码到高4位INCR1MOVA,R1ACALLACBXCHDA,R0RETACB:CLRC;将A中的ASCII码转换为BCD码的子程序SUBBA,#30HCJNEA,#0AH,L1L1:JCL2;是BCD码数则转L2MOVA,#24H;非法BCD码数,则送入“$”符号L2:RET11将两位十进制数的BCD码,转换为ASCII,编成子程序形式。解:子程序BCAC如下:;功能:将两位十进制数的BCD码,转换为ASCII;入口参数:R1存放BCD码数的地址;出口参数:(R0)和(R0)+1存放结果的地址BCAS:MOVA,R1;取BCD码数MOVR2,A;暂存BCD码数在R2中ANLA,#0FH;屏蔽高4位ADDA,#30H;低4位BCD码转换成为ASCII码MOVR0,A;存入第一个ASCII码MOVA,R2SWAPA;取原BCD码,把高4位交换到低4位ANLA,#0FH;屏蔽高4位INCR0MOVR0,A;存入第二个ASCII码RET12将20H单元中的8位无符号二进制数转换为BCD码,存入21H、22H。解:程序设计如下:;功能:将20H单元中的8位无符号二进制数转换为BCD码 ;入口参数:20H单元中存放要转换的二进制数 ;出口参数:21H单元存放的是百位BCD码,22H单元存放的是十位和个位BCD码,高半字节放十位,低半字节放个位。 ;占用寄存器:A,B BINBCD: MOV A,20H;取数MOV B,#64HDIV AB;除以100,A为百位数MOV 21H,A;存入21H单元MOV A,#0AHXCH A,B;余数B送ADIV AB;除以10,得十位和个位SWAP A;十位数放于高半字节ADD A,B;个位数放于低半字节MOV 22H,A;十位、个位存22H单元RET13用查表程序求08之间整数的平方。解:设08之间的整数存放在R0单元中,查表结果存在R1中MOVR0,#DATAMOVA,R0MOVDPTR,#TABMOVCA,A+DPTRMOVR1,ATAB:DB 0,1,4,9,16,25,36,49,6414编写程序,实现下列逻辑函数的功能。其中X、Y、Z、F都是位单元地址。F XY+解:XBIT20H.0YBIT20H.1ZBIT20H.2FBIT20H.3TEMPBIT20H.4MOVC,XANLC,Y;C=XYMOVF,C;存XY在F 中MOVC,YANLC,/Z;C=YMOVTEMP,C;暂存Y在TEMP中MOVC,ZANLC,/Y;C= ZORLC,TEMPCPLCORLC,FMOVF,C15有一16位二进制数存放于50H、51H单元,50H存高位,编程实现全部左移一位。解:CLRCMOVA,51HRLCAMOV51H,AMOVA,50HRLCAMOV50H,ASJMP$16完成两字节压缩BCD码的加法。(30H 31H)+(40H 41H)(30H 31H)解:MOVA,31HADDA,41H;低字节相加DAA;十进制调整MOV31H,A;存结果低字节MOVA,30HADDCA,40HDAAMOV30H,ASJMP$17编程实现(R3 R2)*10(R3 R2)解:本题可以采用乘法指令或者用循环移位指令实现,此处采用用乘法指令。MOVA,R2MOVB,#0AHMULAB;被乘数低8位乘以10,即R210MOVR2,A;MOVR4,B;R210的高8位暂存于R4中MOVA,R3;MOVB,#0AHMULAB;被乘数高8位乘以10,即R310ADDA,R4;R310的低8位与R210的高8位之和送R3MOVR3,AMOVR4,BSJMP$习题5解答5.1MCS51型单片机有几个中断源?有几级中断优先级?各中断源中断标志是怎样产生的?答:MCS51单片机的有5个中断源:2个外部中断源,即和;3个内部中断源,两个片内定时器/计数器溢出中断T0和T1,1个片内全双工串行口中断源。有两级中断优先级:即高优先级和低先级,实现两级中断服务程序嵌套,同一优先级的中断源,由硬件查询来确定优先序列,从高到低依次为外部中断、定时器T0溢出中断、外部中断定时器、T1溢出中断、串行口中断。各中断源请求的中断的标志分别由特殊功能寄存器TCON和SCON的相应位锁存,这些标志位的产生如下:TF1:定时器T1的溢出中断请求标志位。当计数器T1产生溢出时,由硬件使TF1置1,并向CPU发出中断请求。TF0:定时器T0的溢出中断请求标志位。含义与TF1相同。IE1:外部中断1(即)的中断请求标志位。当检测到外部中断引脚(P3.2)上存在有效的中断请求信号时,由硬件使IE1置1。IE0:外部中断的中断请求标志位,其含义与IE1类同TI:串行口发送中断请求标志位。CPU将一个数据写入发送缓冲器SBUF时,每发送完一帧串行数据后,硬件置位TI(TI1)。RI:串行口接收中断请求标志位。在串行口允许接收时,每接收完一个串行帧,硬件置位RI。5.2编写程序将设为脉冲下降沿触发的高优先级中断源。解:用位操作:SETBIT1;设为边沿触发方式SETBPX1;设高优先级中断源用字节操作:MOVTCON,#04H;设为边沿触发方式MOVIP,#04H;设高优先级中断源5.3试编程实现将设为高优先级中断,且为电平触发方式,T0设为低优先级中断计数器,串行口中断为高优先级中断,其余中断源设为禁止状态。解:MOVTMOD,#04H;设T0为计数器状态MOVTCON,#00H;设外部中断1为电平触发方式MOVIE,#96H;开放外部中断1、T0和串行口中断MOVIP,#14H;设和串行口为高优先级,T0设为低优先级5.4在MCS51型单片机中,哪些中断标志可以在响应后自动撤除?哪些需要用户撤除?如何撤除?答: CPU在响应中断请求后会自动清除的中断标志的有:定时器T0、T1的溢出中断请求标志TF0、TF1;边沿触发方式下的外部、的中断请求标志IE0、IE1。 CPU响应中断后不会自动清除,只能在中断服务程序中用软件清除的有:串行口的接收、发送中断标志RI、TI,用“CLR 中断请求标志位”指令清除;在电平触发方式下的外部中断标志IE0和IE1,则是根据引脚和的电平而变化的,CPU无法直接干预,需在引脚外加硬件(如D触发器)使其自动撤消外部中断请求。5.5MCS51型单片机响应中断后,各中断源的中断入口地址是什么?答: 中断源中断入口地址外部中断00003H定时器T0中断000BH外部中断10013H定时器T1中断001BH串行口中断0023H5.6简述MCS51型单片机中断响应全过程。答:当有中断源发出中断请求、允许中断位开放、无同级或更高级中断正在被服务、当前的指令周期已经结束时,CPU按优先级顺序查询中断标志,如查询到某个中断标志为1CPU响应中断请求,CPU响应中断后即转至中断服务程序的入口,执行中断服务程序。5.7试比较用单片机的可编程定时器实现时钟计时与用硬件电路实现时钟计时有什么不同。答:不可编程的硬件定时:对于时间较长的定时,常使用硬件电路完成。硬件定时方法的特点是:定时功能全部由硬件电路完成,不占用CPU时间。但需通过改变电路中的元件参数来调节定时时间,在使用上不够灵活方便。单片机的可编程定时器定
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 3、监理工作报告√
- 电站运行规程知识培训课件
- 电磁铁与电磁继电器
- 电石炉料面岗位知识培训课件
- 电瓶车销售知识培训课件
- 高空安全知识培训内容课件
- 北师一年级下考试卷子及答案
- Mitochondrial-IN-1-生命科学试剂-MCE
- 北海特岗教师考试真题及答案
- 高温燃气安全知识培训课件
- 国务院部署实施“人工智能+”行动的意见解读
- 2025-2026秋学期学校主题升旗仪式安排表+主题班会安排表
- 青岛科学四年级上册《风的形成》课件
- 《MATLAB编程及应用》全套教学课件
- 提高住院病历完成及时性持续改进(PDCA)
- 招标代理机构从业人员考试(单选题题库)
- 嘉兴华雯化工 - 201604
- (完整版)初一英语完形填空(20篇)
- 八年级数学开学第一课(课堂PPT)
- 酒店工程部维修流程图
- 小学四年级下册综合实践活动.巧做寿司-(22张)ppt
评论
0/150
提交评论