为了正常的体验网站,请在浏览器设置里面开启Javascript功能!
首页 > 单片机课后习题解答

单片机课后习题解答

2023-03-28 6页 pdf 1MB 6阅读

用户头像 个人认证

is_229578

热爱运动,跆拳道。

举报
单片机课后习题解答练习练习练习第二章单片机结构及原理1、MCS-51单片机内部包含哪些主要功能部件?它们的作用是什么?答:〔1〕一个8bitCPU是微处理器的核心,是运算和逻辑计算的中心。〔2〕片内震荡器及时钟电路:提供标准时钟信号,所有动作都依据此进行。〔3〕4KROM程序存贮器:存贮程序及常用表格。〔4〕128BRAM数据存贮器:存贮一些中间变量和常数等。〔5〕两个16bit定时器/计数器:完全硬件定时器〔6〕32根可编程I/O口线:标准8位双向〔4个〕I/O接口,每一条I/O线都能独立地作输入或输出。〔7〕一个可编程全双工串行口。〔8〕五...
单片机课后习题解答
练习练习练习第二章单片机结构及原理1、MCS-51单片机内部包含哪些主要功能部件?它们的作用是什么?答:〔1〕一个8bitCPU是微处理器的核心,是运算和逻辑计算的中心。〔2〕片内震荡器及时钟:提供标准时钟信号,所有动作都依据此进行。〔3〕4KROM程序存贮器:存贮程序及常用表格。〔4〕128BRAM数据存贮器:存贮一些中间变量和常数等。〔5〕两个16bit定时器/计数器:完全硬件定时器〔6〕32根可编程I/O口线:标准8位双向〔4个〕I/O接口,每一条I/O线都能独立地作输入或输出。〔7〕一个可编程全双工串行口。〔8〕五个中断源。2、什么是指令?什么是程序?答:指令是规定计算机执行某种操作的命令。程序是根据任务要求有序编排指令的集合。3、如何认识89S51/52存储器空间在物理结构上可以划分为4个空间,而在逻辑上又可以划分为3个空间?答:89S51/52存储器空间在物理结构上设有4个存储器空间:片内程序存储器、片外程序存储器、片内数据存储器、片外数据存储器。在逻辑上有3个存储器地址空间:片内、片外统一的64KB程序存储器地址空间,片内256B数据存储器地址空间,片外64KB的数据存储器地址空间。4、开机复位后,CPU1用的是哪组工作存放器?他们的地址是多少?CP狈口何确定和改变当前工作存放器组?答:开机复位后,CPU1用的是第0组工作存放器,地址为00H〜07H,CPU!过改变状态字存放器PSW/^BRS0和RS1来确定工作存放器组。5、什么是堆栈?堆栈有何作用?在程序时,有时为什么要对堆栈指针SP重新赋值?如果CPU在操作中要使用两组工作存放器,SP应该多大?答:堆栈是一个特殊的存储区,主要功能是暂时存放数据和地址,通常用来保护断点和现场。堆栈指针SP复位后指向07H单元,00H-1FH为工作存放器区,20H〜2FH为位寻址区,这些单元有其他功能,因此在程序设计时,需要对SP重新赋值。如果CPU在操作中要使用两组工作存放器,SP应该至少设置为0FH。6、89S51/52的时钟周期、机器周期、指令周期是如何分配的?当振荡频率为8MHz时,一个单片机周期为多少微秒?答:时钟周期为时钟脉冲频率的倒数,他是单片机中最根本的、最小的时间单位。机器周期是指完成一个根本操作所需要的时间,一个机器周期由12个时钟周期组成。指令周期是执行一条指令所需要的时间,由假设干个机器周期组成。假设fosc=8MHz,那么一个机器周期=1/8X12(is7、89S51/52扩展系统中,片外程序存储器和片外数据存储器共处同一地址空间为什么不会发生总线冲突?答:访问片外程序存储器和访问数据存储器使用不同的指令用来区分同一地址空间。8、程序状态字存放器PSW勺作用是什么?常用状态标志有哪些位?作用是什么?答:程序》太态字PSW^8位存放器,用于存放程序运行的状态信息,PSW^各位状态通常是在指令执行的过程中自动形成的,但也可以由用户根据需要采用传送指令加以改变。各个标志位的意义如下:PSW.7〔G〕:进位标志位。PSW.6〔AC〕:辅助进位标志位,又称为半进位标志位。PSW.5〔F0〕:用户标志位。PSW.4PSW.3〔RS1和RS0〕:存放器组选择位。PSW.2〔OM:溢出标志位。PSW.1〔空缺位〕:此位未定义。PSW.0〔P〕:奇偶校验位。9、位地址7CH和字节地址7CH有何区别?位地址7CH具体在内存中什么位置?答:字节地址7CH是片内数据存储器中的一个地址单元,该地址单元中可以存放8位二进制数,位地址7CH是内部数据存储器中位寻址区中的一位,该地址单元中可以存放1位二进制数。位地址7CH具体在片内数据存储器字节地址为2FH中的第4位〔2FH.4〕。10、89S51/52中4个I/O端口的作用是什么?89S51/52的片外三总线是如何分配的?答:I/O端口是单片机与外界联系的重要通道,实现与外部设备的信息的传输。总线分配:片外数据总线〔8根〕通过P0口输出,片外地址总线〔16根〕通过P0口〔低8位〕和P2口〔高8位〕输出,片外控制总线〔PSEN,ALE,RD,WR,EAO主要通过P3口。11、89S51/52中4个I/O端口在结构上有何异同?89S51/52单片机的4个I/O□在结构上是根本相同的,但又各具特点。这四个端口都是8位双向口,每个端口都包括一个锁存器、一个输出驱动器和输入缓冲器。在无片外扩展存储器的系统中,这四个端口的每一位都可以作为双向通用I/O端口使用。在作为一般的通用I/O输入时,都必须先向锁存器写入“「‘,使输出驱动场效应管FET截止,以免误读数据。各自特点如下:〔1〕P0口为双向8位三态I/O口,它既可作为通用I/O口,又可作为外部扩展时的数据总线及低8位地址总线的分时复用口。作为通用I/O口时,输出数据可以得到锁存,不需外接专用锁存器;输入数据可以得到缓冲,增加了数据输入的可靠性。每个引脚可驱动8个TTL负载。(数字电路按工艺有肖特基双极晶体管和CMOS艺两种,使用双极晶体管的数字电路称TTL数字电路,单片机输出端带负载能力,意思就是单片机的P3端口只能并联4个TTL型集成电路输入端。)〔2〕P1口为8位准双向I/O口,内部具有上拉电阻,一般作通用I/O□使用,它的每一位都可以分别定义为输入线或输出线,作为输入时,锁存器必须置1。每个引脚可驱动4个TTL负载。〔3〕P2口为8位准双向I/O口,内部具有上拉电阻,可直接连接外部I/O设备。它与地址总线高8位复用,可驱动4个TTL负载。一般作为外部扩展时的高8位地址总线使用。〔4〕P3口为8位准双向I/O口,内部具有上拉电阻,它是双功能复用口,每个引脚可驱动4个TTL负载。作为通用I/O口时,功能与P1□相同,常用第二功能。12、复位的作用是什么?有几种复位方法?复位后单片机的状态如何?答:复位是单片机的初始化操作。单片机在RST引脚产生两个机器周期〔即24个时钟周期〕以上的高电平即可实现复位。主要的复位方法有上电自动复位和按键手动复位两种。按键手动复位又分:按键电平复位和按键脉冲复位。第三章指令系统1、简述以下名词术语的根本概念:指令、指令系统、程序、汇编语言指令答:指令:规定单片机进行某种操作的命令称为指令。指令系统:单片机能够执行的各种指令的集合。程序:一系列指令的有序集合称为程序。汇编语言指令:用助记符形式来表示机器指令。2、80C51单片机有哪几种寻址方式?这几种寻址方式是如何寻址的?答:共7种寻址方式,分别为:存放器寻址,直接寻址,存放器间接寻址,立即寻址,变址寻址,位寻址和相对寻址。存放器寻址方式:由指令指出某一存放器的做为操作数。直接寻址方式:指令中操作数直接以单元地址的形式给出。存放器间接寻址方式:存放器间接寻址方式,存放器中存放的那么是操作数的地址,即操作数是通过存放器间接得到的。立即寻址方式:操作数在指令中直接给出。变址寻址方式:变址寻址是为了访问程序存储器中的数据和表格。MC极51的变址寻址是以DPTR^PC作基址存放器,以累加器A作变址存放器,并以两者内容相加形成的16?位地址做为操作数地址,以到达访问数据和表格的目的。位寻址方式:指对片内RAM勺位寻址区和某些可寻址的特殊功能存放器进行位操作的寻址方式。相对寻址方式:相对寻址方式是为解决程序转移而专门设置的,为转移指令所采用。3、要访问特殊功能存放器和片外数据存放器,应采用哪些寻址方式?答:访问特殊功能存放器可以采用直接寻址、存放器寻址和位寻址〔针对可以进行位寻址的特殊功能存放器〕方式。访问片外数据存储器可采用存放器间接寻址方式。4、80C51单片机的指令系统可以分为哪几类?说明各指令的功能。答:51单片机指令系统按功能可分为5类:〔1〕数据传送指令主要进行数据的传送、交换等;主要进行根本的加减乘除运算;主要实现逻辑运算与移位运〔2〕算术运算指令算;主要是实现对程序流程的控制;〔3〕逻辑运算指令〔4〕控制转移指令5、外部数据传送指令有哪几条?有和区别?〔5〕位操作指令答:外部数据传送指令有读指令和写指令两类,每类指令的寻址范围不同,分别为:读外部存储器指令:MOVXA,@Ri;寻址范围为256字节MOVXA,@DPTR;寻址范围为64K字节写外部存储器指令:MOVX@RiA;寻址范围为256字节MOVX@DPTRA;寻址范围为64K字节6、在89S51片内RAM43,〔30H〕=38H,〔38H〕=40H,〔40H〕=48H,〔48H〕=90H,请分别下段程序按序执行后的结果。MOVA,40H;A=48HMOVR0,A;R0=48HMOVP1,#0FFH;P1=FFHMOV@R030H;(48H)=38HMOVDPTR#1246H;DPTR=1246HMOV40H38H;(40H)=40HMOVR030H;R0=38HMOV90HR0;(90H)=38HMOV48H#30H;(48H)=30HMOVA@R0;A=40HMOVP2P1;P2=38H7、略8、DAA指令的作用是什么?怎样使用?答:对十进制BCD^作加法时进行调整,当结果的低4位A0〜A3>9,或半进位AC=1,那么A0〜A3+6,否那么不加;当结果的高4位A4〜A7>9,或进位CY=1,那么A4〜A7+6,否那么不加;这条指令是在进行BC加加法运算时,跟在“ADD和"ADDC指令之后,用来对BCD码的加法运算结果自动进行修正,使其仍为BC加表示形式。9、试编程将片外数据存储器60H中的内容传送到片内RAM54加元中。答:MOVR0,#60HMOVXA,@R0MOV54H,A10、试编程将存放器R7的内容传送到R1中去。答:MOVA,R7MOVR1,A11、当前PC值为210H,请用两种方法将程序存储器2F0H中的常数送入累加器A中。答:〔1〕以程序计数器PC作为基址存放器MOVA,#0E0HMOVCA,@A+PC〔2〕以数据指针DPTR作为基址存放器MOVDPTR#02F0HMOVA,#00H15、:A=0C9HB=8DHCY=1。执行指令ADDCA,B结果如何?A=57H,CY=1,OV=1AC=1,P=1执行指令SUBBA,B结果如何?A=3BH,CY=0AC=1OV=116、试编程将片外RAM4330H和31H单元中的内容相乘,结果存放在32H〔低位〕和33H〔高位〕MOVCA,@A+DPTR12答:〔、试说明下段程序中每条指令的作用,并分析当指令执行完后1〕MOVR0,A,R0中的内容是什么?MOVMOVR0,#0A7HA,B;R0=A/H立即数送存放器R0XCHMOVA,R0B,R0;A=A7H累加器A中的数据与R0中的数据进行交换〔2SWAP〕MOVAR0,B;A=7AH累加器A中的上下四位进行交换XCHXCHA,R0;R0=7AH数据交换回R01413、、请用两种方法实现累加器试编程将片外RAM4340H单元的内容A与存放器B的内容交换。R1的内容交换。与答:MOVR0,#40HMOVXA,@R0XCHA,R1MOVX@R0A单元中。答:MOVR0,#30HMOVXA,@R0MOVB,AINCR0MOVXA,@R0MULABINCR0MOVX@R0AMOVA,BINCR0MOVX@R0A17、试用3种方法将累加器A中的无符号数乘2.答:〔1〕MOVR0,AADDA,R0〔2〕MOVB,#2MULAB〔3〕RLA18、分析依次执行以下指令的结果:MOV30H,#0A4H;(30H)=A4HMOVA,#0D6H;A=D6HMOVR0,#30H;R0=30HMOVR2,#47H;R2=47HANLA,R2;A=46HORLA,@R0;A=E6HSWAPA;A=6EHCPLA;A=91HXRLA,#0FFH;A=6EHORL30H,A;(30H)=EEH19、求以下指令执行后,累加器A及PSW中进位CY奇偶位P和溢出位OV的值。〔1〕当A=5BH时;ADDA,#8CH〔2〕当A=5BH时;ANLA,#7AH〔3〕当A=5BH时;XRLA,#7FH〔4〕当A=5BHCY=1时;SUBBA,#0E8H答:〔1〕A=E7HCY=1,P=0,OV=0〔2〕A=5AH,P=0〔3〕A=24H,P=0〔4〕A=72H,CY=1,P=0,OV=020、把累加器A中的低4位数据送到外部数据存储器的2000H单元。答:ANLA,#OFHMOVDPTR#2000HMOVX@DPTRA21、试说明指令CJNE@R1#7AH,10H的作用,假设本指令地址为250H,其转移地址是多少?答:指令作用:如果以R1内容为地址的单元中的数据等于7AH,那么程序顺序执行,否那么转移后继续执行。假设本指令地址为250H,那么转移地址为250H+03H+10H=263H。22、将累加器A中的数据由0递增,加到50,结果在累加器A中。答:CLRAMOVR0,#50L1:INCADJNZR0,L123、试说明压栈指令和弹栈指令的作用及执行过程。答:压栈〔入栈或进栈〕指令的作用是将数据存入堆栈中,其执行过程是先将堆栈指针SP的内容加1,然后将直接地址单元中的数据压入SP指向的单元中。假设数据已推入堆栈,那么SP指向最后推入数据所在的存储单元〔即指向栈顶〕。弹栈〔出栈〕指令的作用是将数据从堆栈中取出,其执行过程为先将堆栈指针SP所指出单元的内容送入直接寻址单元中,然后将SP的内容减1,此时SP指向新的栈顶。24、下述程序执行后,SP=?,A=?,B=?。ORG2000HMOVSP,#40HMOVA,#30HLCALL250H;下条指令地址2021H送41T42H,SP=42HADDA,#10HMOVB,A;地址为200AHL1:SJMPL1ORG250HMOVDPTR#200AHPUSHDPL;SP+1=43H,DPg(43H)PUSHDPH;SP+1=44H,DP+(44H)RET;200AHRPC答:上述程序执行后,SP=42HA=30H,B=30H25、发光二极管点亮规律:先是第1和第8个亮,延时一段时间后,第2和第7个亮,延时后,再是第3和第6个亮,延时后,最后是第4和第5个点亮,延时后循环。26、假设系统晶振频率为6MH4求子程序DELAY勺延时时间,假设想加长或缩短时间,应该怎样修改?答:DELAY:MOVR2#0FAHL1:MOV,R3#0FAH,L2:DJNZR3L2,DJNZR2L1,RET总时间计算:T=4as+〔:250X4科s+4科s〕X250+4科估算:T=250X4科sX250=250ms假设想加长延时时间,可以增加循环次数或再加一重循环;27P1口连接8个共阳极连接的发光二极管,是编制灯亮移位程序。答、MOVA,#0FEH:L1MOVP1,A:RLALCALLDELAY;DELAY?程序同上SJMPL128试编一程将外部数据存储器2100H单兀中的高4位置“1"0、序,MOVDPTR#2100H假设想减小延时时间,可以减少循环次数或较少一重循环。MOVXA,@DPTRORLA,#0F0HANLA,#0F0HMOVX@DPTRA答:29、试编程将片内数据存储器40H单元的第0为和第7位置1,其余取反。答:MOVA,40HCPLASETBACC.7MOV40H,A30、将A.5与80H位相与的结果,通过P1.4输出。MOVC,80HMOVP1.4,C31、请用位操作指令,求以下逻辑方程。〔1〕P1.7ACC.0(B.0P2.1)P3.2MOVP1.7,C〔2〕PSW.5P1.3ACC.2B.5P1.1MOV20H,CORLC,20HMOVPSW.5,C〔3〕P2.3P15B.4ACC.7P1.0MOV20H,CORLC,20H〔下一行〕MOVP2.3,C第四章汇编语言程序设计1、编程将片内40H〜60H单元中的内容送到以3000H为首的存储区内。答:MOVR1,#40HMOVR2,#21HMOVDPTR#3000HL1:MOVA,@R1MOVX@DPTRAINCR1INCDPTRDJNZR2,L12、编程计算以下算式的程序〔1〕23H+45H+ABH+03H=MOVA,#23HADDA,#45HADDA,#0ABH;溢出处理XCHA,BADDCA,#00HXCHA,B;A中为结果低位,B中为高位ADDA,#03H〔2〕CDH+15H-38H-46H=MOVA,#0CDHADDA,#15HSUBBA,#38HSUBBA,#46H〔3〕1234H+8347H=MOVA,#34HADDA,#47HMOV30H,AMOVA,#12HADDCA,#83HMOV31,A;30H存结果低位,31H存结果高位〔4〕AB123H-43ADCH=CLRCMOVA,#23HSUBBA,DCHMOV30H,AMOVA,#0B1HSUBBA,#3AHMOV31H,AMOVA,#0AHSUBBA,,#04HMOV32H,A;30H为低位,32H为高位3、设有两个4位BC加,分别存放在23H、22H单元和33H、32H单元中,求他们的和,并送入43H、42H单元中〔低位在低字节,高位在高字节〕答:MOVA,22HADDA,32HMOV42H,AMOVA,23HADDCA,33HMOV43H,A4、略5、编程计算片内RAMK50HH59H单元中数的平均值,结果存放在5AH中。答:MOVR0,#8MOVR1,#50HMOVA#00HL1:ADDA,@R1INCR1DJNZR0,L1MOVB,#8DIVABMOV5AH,A6、编写计算下式的程序。设乘积和平方结果均小于255。a、b值分别存在片外3001H和3002H单元中,结果存于片外3000H单元中。2,ab〔Ya5b,ab1〕ab,abMOVDPTR#3001HMOVA,@DPTRXMOV30H,A;a暂存30H单元INCDPLMOVA,@DPTRXCJNEA,30H,L1;是否a=bMOVA,#25SJMPSAVEL1:JNCL2MOVB,30HMULABSJMPSAVEL2:MOVBAMOVA30HDIVABSAVMOVDPTR#3000HEMOV@DPRTAX(a,、2一2b)10,(ab)10〔Y(a222〕b),(ab)10(a22b)210,(ab)210MOVDPTR#3001HMOVA,@DPTRXMOV30HAINCDPTRMOVA,@DPTRXADDA30HMOVBAMULAB;(a+b)2MOV31H,ACJNEA,#10,L1SJMPSAVEL1:JCL2CLRCSUBBA,#10SJMPSAVEL2:ADDA,#10SAVE:MOVDPTR#3000HMOVC@DPTRA7、设有两个长度均为15的数组,分别存放在以200H和210H为首地址的存储区中,试编程求其对应项之,结果存放到以220H为首地址的存储区中。和,答:MOVDPH#02HMOVR1,#15MOVR2,#00H;数组1首地址低位MOVR3,#10H;数组2首地址低位MOVR4,#20H;和首地址低位L1:MOVDPL,R2MOVXA,@DPTRMOVR1,AMOVDPL,R3MOVXA,@DPTRADDA,R1MOVDPL,R4MOVX@DTPRAINCR2INCR3INCR4DJNZR1,L1SJMP$8、设有100个无符号数,连续存放在以2000H为首地址的存储区中,试编程统计正负数和零数的个数。答:MOV30H#00H;正数计数器MOV31H#00H;负数计数器MOV32H#00H;零计数器MOVDPTR#2000HMOVR1,#100L4:MOVXA,@DPTRINCDPTRCJNEA#0L1INC32HSJMPL2L1:JCL3INC30HSJMPL2L3:INC31HL2:DJNZR1L4SJMP$9、将片外数据存储器地址为1000H〜1030H的数据块,全部搬迁到片内RAM30+60H中,并将原数据块区域全部清零。答:MOVR0,#30HMOVR2,#31HMOVDPTR,#1000HLP:MOVXA,@DPTRMOV@R0AANDA#00HMOVX@DPTRAINCR0INCDPTRDJNZR2,LPSJMP$10、试编写一子程序,是R1、R0指向的两个片外RAM1续单元中的高4位二进制数,合并成一个字节,装入累加器A中。R0指向低地址,并要求该单元高四位放在A中高四位。答:MOVXA@R1ANLA#0F0HSWAPAMOVR2AMOVA@R0XANLA#0F0HORLAR211、试编程把以2040H为首地址的连续50个单兀的无符号数按降序排存放到以3000H为首地列,址的存储区中。答:MOVR2,#50MOVR3#20HMOVR4#40H;源地址MOVR5#30HMOVR6#00H;目的地址SEND:MOVDPHR3;SEND各2040H数据块非3000H存储区MOVDPLR4MOVA@DPTRXINCDPTRMOVR3DPHMOVR4DPLMOVDPHR5MOVDPLR6MOV@DPTRAXINCDPTRMOVR5DPHMOVR6DPLDJNZR2SENDMOVR2#49;重复次数CMP1:MOVDPTR#3000HMOVR3,#49;比拟次数CMP2:MOVXA,@DPTRMOVB,AINCDPTRMOVXA@DPTRCJNEA,B,L1L1:JCNOMOVEMOV30HACLRCMOVADPLSUBBA#01HMOVDPLAMOVA30HMOVX@DPTRAINCDPTRMOVABMOVX@DPTRANOMOVE:DJNZR3CMP2;50个数重复一遍?DJNZR2CMP1;排序结束?LJMP$12、试编一查表程序,从首地址为2000H,长度为100的数据块中找出ASCII码为A,将其地址送至U20A0H和20A1H单元中。答:MOVDPTR#2000HMOVR2#100GO_ON:MOVXA@DPTRCJNEA#41H,IFENDMOVADPHMOVBDPLMOVDPTR#20A0HMOVX@DPTRAINCDPTRXCHABMOVX@DPTRASJMPOVERIFEND:INCDPTRDJNZR2,GO_ONOVER:SJMPOVER13、设在200H〜204H单兀中,W单5个压缩BC加,编程将他们转换成ASCII码,存放到以205H元为首地址的存储区。答:MOVR2,#05HMOVR3#02HMOVR4#00HMOVR5#02HMOVR6,#05HCHLP:MOVDPHR3MOVDPL,R4MOVXA,@DPTRINCDPTRMOVR3,DPHMOVR4,DPLMOVB,ASWAPAANLA#0FHORLA#30HMOVDPHR5MOVDPLR6MOVX@DPTRAINCDPTRMOVABANLA#0FHORLA#30HMOVX@DPTRAMOVR5DPHMOVR6DPLDJNZR2CHLP14、无符号数据块长度在30H单兀中,其首地址为31H单元,求出数据块中最大值,并存入40H中。答:MOVR0#31HMOVR1,30HMOV40H#00HLOOP:MOVA@R0CJNEA40HL1SJMPAGAINL1:JNCL2SJMPAGAINL2:MOV40HAAGAININCR0:DJNZR1,LOOPSJMP$15、略16、在以2000H为首地址的存储区内,存放20个用ASCII码表示的0〜9之间的数,试编程,将它们转换成BC加,并以压缩BC加的形式存在3000H-3009H单元中。答:MOVR2,#10MOVR3,#20HMOVR4,#00HMOVR5,#30HMOVR6,#00HLP:MOVDPHR3MOVDPL,R4MOVXA,@DPTRANLA,#0FHSWAPAXCHA,BINCDPTRMOVXA,@DPTRANLA,#0FHORLA,BINCDPTRMOVR3,DPHMOVR4,DPLMOVDPHR5MOVDPL,R6MOVX@DPTRAINCDPTRMOVR5,DPHMOVR6,DPLDJNZR2,LPSJMP$17、试编程实现以下逻辑表达式功能。量设P1.7〜P1.0为8个变量的输入端,而其中P1.7又作为变的输出端。;输入端定义〔1〕丫XXXXX0X1X2X34567CMOVX0,ANLCX1,ANLC/X2,ORLCX3,MOV00H,CMOVCX4,ANLCX5,ANLCX6,ORLC/X7,ORLC00HMOV,P1.7,C〔〕YXXXXXXXX201234567MOVC,X0ANLC,X1CPLCMOV00H,CMOVC,X2ANLC,X3ANLC,X4CPLCMOV01H,CMOVC,X5ANLC,X6ANLC,X7CPLCORLC,O1HCPLCORLC,00HMOVP1.7,C18、略19、略20、试编写延时1s、1min、1h子程序。;单片机时钟fosc=12MHz,计算为近似值;1s延时子程序DLY1S:MOVR0,#10L3:_MOVR1,#200L2:MOVR2,#250L1:DJNZR2L1DJNZR1L2DJNZR0L3RET;延时1minDLY1M:MOVR3#60_L4:LCALLDL_1SYDJNZR3L4RET;延时1hDLY1H:MOVR4#60_L5:LCALLDL_1YMDJNZR4L5RET21、用程序实现c=a2+b2。设a、b均小于10,a存在31H单元中,b存在32H单元中,c存33H单元。答:ORG1000HSRMOVA,31HACALLSQRMOVR1,AMOVA32HACALLSQRADDAR1MOV33HASJMP$;求平方子程序如下〔采用查平方表的方法〕SQR:INCAMOVCA,@A+PCRETTABLE:DB0,1,4,9,16DB25,36,49,64,81END22、如何实现将内存单元40H〜60H的数逐个对应传到片外2540H〜2560H单元中?答MOVR0,#40H:MOVDPTR#2540HMOVR2,#21HL1MOV:MOVXINCINCDJNZA@R0@DPTRASJMPR0DPTRR2L1$23分什经21题有、24分什经21题、有25参考实验程序、26参考实验程序、第五章定时/计数器1、89S51单片机内部有几个定时/计数器,他们有哪些专用存放器组成?答:89S51单片机内部有两个16位定时/计数器,为定时器0〔T0〕和定时器1〔T1〕。在定时器/计数器的16位的计数器是由两个8位的专用存放器THOTL0,TH1、TL1组成。2、89S51单片机的定时/计数器有哪几种工作方式,各有什么特点?答:定时器/计数器有四种工作方式:方式0,方式1,方式2,方式3。其中,方式3只适用于T0o以T0为例:①方式0,16位存放器只用了13位,TL0的高三位未用。由TH0的8位和TL0的低5位组成一个13位计数器;②方式1,和方式0的工作相同,唯一的差异是TH0和TL0组成一个16位计数器;③方式2,把TL0配置成一个可以自动恢复初值的8位计数器,TH0作为常数缓冲器。TH0由软件预置值。当TL0产生溢出时,一方面使溢出标志TF0置1,同时把TH0中的8位数据重新装入TL0中;④方式3,将使TL0和TH0成为两个相互独立的8位计数器,TL0利用T0本身的一些控制,它的操作与方式0和方式1类似。而TH0被规定为只用作定时器功能,对机器周期计数,并借用了T1的控制位TR1和TF1。在这种情况下TH0控制了T1的中断。这时T1用于任何还可以设置为方式0〜2,不需要中断控制的场合,或者用作串行口的波特率发生器。3、定时/计数器用作定时方式时,其定时时间与哪些因素有关?作为计数时,限对外界计数频率有何制?答:定时/计数器作定时时,其计数脉冲由系统振荡器产生的内部时钟信号间与时12分频后提供。定时时钟频率和定时初值有关。24个振荡周期,因此外部定时/计数器作计数时,由于确认1次负跳变要花2个机器周期,即输入的计数脉冲的最高频率为系统振荡器频率的1/24。4、当定时器T0用作方式3时,由于TR1位已被T0占用,如何控制定时器T1的开启和关闭?答:定时器T0用作方式3时,由于TR1位已被T0占用,此时通过控制位C/T切换其定时或计数器工作方式。当设置好工作方式时,定时器T1自动开始运行,假设要停止,只需送入一个置定时器T1为方式3的方式字。5、89S51单片机系统时钟频率为24MHz请利用定时器T0和P1.2输出矩形脉冲。矩形波高电平宽度50^s,低电平宽度350^s。答ORG1000H:MOVTMOD#02H设置工作方式MOVTHO,#09CH设置定时器初值MOVTL0,009CHSETBTR0启动定时器MOVR007H;定时是否到?DEL:JBCTF0,REPAJMPDELDJNZR0DELAJMPLOOPEND心;的方波。s答选择方式2,T1:MOVTMOD#20HMOVTH1,#06HMOVTL1,#06HSETBTR1LMOVR2#04HL1:JNBTF1,$2:CLRTF1,DJNZR2L2LJMPL17设系统时钟为24MHz,试用定时器T0做外部计数器,编程实现每计到1000个脉冲,是T1开始、2ms定时,定时时间到后,T0又开始计数,循环往复。答:MOVTMOD#15H;T1定时方式1,T0计数方式1L1:MOVTH0,#0FCHMOVTL0,#18HSETBTR0JNBTF0,$CLRTR0CLRTF0MOVTH1,#HMOVTL1,#HSETBTR1JNBTF1,$CLRTR1CLRTF1LJMPL18、略9、略第六章80C51的串行接口1、什么是串行异步通信?他有哪些特点?有哪几种帧格式?答:串行通信即所传输数据的各位按顺序一位一位的发送或接收。串行通信分为同步和异步两种方式。在异步通信中数据或字符是一帧一帧地传送的。帧定义为一个字符的完整的通信格式,通常也称为帧格式。它的主要特点:由于异步通信每传送一帧有固定的格式,通信双方只需按约定的帧格式来发送和接收数据,所以硬件结构比同步通信方式简单;此外它还能利用校验位检测错误。帧格式的一般形式是先用一个起始位“0〃表示字符的开始,然后是数据位,其后是奇偶校验位,最后是停止位,用以表示字符结束。2、某异步通信接口按方式3传送,其每分钟传送3600个字符,计算其传送波特率。答:设每个字符由1个起始位、8个数据位、1个可编程位和1个结束位组成,其传送波特率为:11bx3600/60s=660bps3、80C51单片机的串行口由哪些根本功能部件组成?答:80C51单片机的串行口根本功能部件主要有:两个数据缓冲存放器SBUF一个串行口控制存放器SCON一个输入移位存放器。4、80C51单片机的串行口有几种工作方式?几种帧格式?如何设置不同方式的波特率?答:80C51单片机的串行口有四种工作方式,由串行口控制存放器中的SM0SM1控制。80C51单片机的串行通信有8位、10位、11位三种帧格式。波特率设置:4种工作方式波特率的计算方法不同,其中方式0和方式2的波特率是固定的,方式1和方式3的波特率是可变的,均由定时器T1的溢出率控制。具体计算如下:方式0:波特率固定为时钟频率的1/12,不受SMOD勺影响。[SMODr波特率倍增位〕方式1的波特率=2SMO32X定时器T1的溢出率D方式2的波特率=2SMO/64Xfosc方式3的波特率=2SMO32X定时器T1的溢出率D5、为什么定时器T1用作串行口波特率发生器时,常采用工作方式2?答:在串行通信中,收发双方对发送或接收的数据速率〔即波特率〕要有一定的约定。串口有四种工作方式,其中方式0和方式2的波特率是固定的,而方式1和方式3的波特率是可变的,有定时器T1的溢出率控制。定时器T1用作串行口波特率发生器时,因为工作方式2是自动重装载方式,因而定时器T1作波特率发生器常采用工作方式2.6、定时器T1设置成方式2,用作波特率发生器,系统时钟频率为24MHz求可能产生的最高和最低的波特率是多少?答:最高波特率:TH1=0FFHTL1=0FFH波特率最高=2/32X24M/〔12X最低波特率:TH1=00HTL1=00H波特率最低=1/32X24M/〔12X〔256—0〕〕bps=244bps9、串行口异步通信时,ASCII码“3〃的字符格式〔10位〕如何?答:串行口异步通信时,10位的数据帧结构为:一个起始位〔0〕,8个数据位〔先低位后高位〕,一个停止位〔1〕。故ASCII码"3"的字符格式为:0110011001B。10、假设选用定时器T1作波特率发生器,设fosc=6MHz,计数初值为0FDHSMOD=,1求波特率是多少?答:假设选用定时器T1作波特率发生器,波特率由下式确定:波特率=〔定时器T1溢出率〕/n公式中:①n为32或16,取决于特殊功能存放器PCO"白SMODfc的状态。假设SMOD=0那么n=32o假设SMOD=1那么n=16。②定时器T1溢出率=定时器T1的溢出次数/秒。由题可知:f=6MHz计数初值为0FDH,SMOD=1故osc6MHz10.42kHz16122560FDH第七章中断系统1、什么是中断?在单片机中中断能实现哪些功能?答:中断是通过硬件来改变CPU§序运行方向。计算机在执行程序过程中,由于CPU以外的原因,有必要尽快终止当前程序的执行,而去执行相应的处理程序,待处理结束后,在回来继续执行被终止的原程序。这种程序在执行过程中由于外界的原因而被中间打断的情况成为“中断。中断能实现的功能:〔1〕能实现中断及返回。〔2〕能实现优先权的排队。〔3〕能实现中断的嵌套。2、什么是中断优先级?中断优先级处理的原那么是什么?答:通常,在系统中会有多个中断源,有时会出现两个或更多个中断源同时提出中断请求的情况,这就要求计算机能区分各个中断源的请求,有能确定首先为哪一个中断源效劳。为了解决这一问题,通常给各中断源规定了优先级别,称为优先权或中断优先级。中断优先级处理原那么:两个或两个以上的中断源同时提出中断申请时,计算机首先为中断优先权最高的中断效劳,效劳结束以后,再响应级别较低的中断源。3、80C51有几个中断源,各中断标志如何产生的,又如何清"0〃的?CPU响应中断时,中断入口地址各是多少?答:8051单片机有5个中断源,分别是:外部中断0、定时器T0中断、外部中断1、定时器T1中断、串行口中断。中断标志产生与清“0〃:〔1〕外部中断:外部中断由外部原因引起,可以通过两个固定的引脚〔INT4niNTi〕输入信号。一旦输入信号有效,那么向CPU申请中断并使IE0〔或IE1〕=1。硬件复位。〔2〕定时器中断:定时器中断是为了满足定时或计数溢出处理的需要而设置的。当定时/计数器的计数结构发生计数溢出时,即说明定时时间到或计数次数到,此时就以计数器溢出信号作为中断请求,去置一个溢出标志位〔TF0或TF1=1]。使用中断时通过硬件复位,在查询方式下可由软件复位。〔3〕串口中断:串行中断请求是在单片机内部产生的。当发送完数据或接收完数据后,就会置相应标志位〔TI或RI=1]。一旦响应中断,必须由软件进行复位。中断入口地址:外部中断0、定时器T0中断、外部中断1、定时器T1中断、串行口中断的入口地址依次为:0003H,000BH,0013H,001BH,0023H。4、中断响应时间是否确定不变的?为什么?答:中断响应时间不是确定不变的。由于CPU^是在任何情况下都可以中断请求予以响应,不同情况对中断响应的时间也是不一样的。中断信号会在每个机器周期的S5P2时刻对相应中断标志位进行置位,假设CPUte下一个机器周期才能查询到中断请求,如果满足中断响应的条件,下一条指令将是一硬件长调用指令,使程序转入中断矢量入口,调用本身需要2个机器周期,因此响应中断至少需要3个机器周期。如遇正在执行的指令,或有同级、更高级的中断效劳正在进行,那么需更长时间。假设系统中只有一个中断源,那么响应时间为3〜8个机器周期。5、用定时器T1定时,要求在P1.6口输出一个方波,周期为1min,晶振为12MHz请用中断方式实现,并分析采用中断后的优点。答:使用定时器T1,工作在方式1,TE时50msORG0000HLJMPMAINORG001BHLJMPT1_SERORG0100HMAIN:MOVTMOD#10HMOVR0,#20;1s定时次数MOVR1,#30;定时30sMOVTH1,#3CHMOVTL1,#0B0HSETBET1SETBEASETBTR1SJMP$0RG0200HT1_SER:MOVTH1,#3CHMOVTL1,#0B0HDJNZR0,L1MOVR0,#20DJNZR1,L1MOVR1,#30L1:RETI6、中断响应过程中,为什么通常要保护现场?如何保护?答:因为一般主程序和中断效劳程序都可能会用到累加器、PSW及其他存放器。CP%进入中断效劳程序后,用到上述存放器时,就会破坏原来存在存放器中的内容,一旦中断返回,就会造成主程序的混乱。因此在进入中断效劳程序后,一般要先保护现场,然后在执行中断处理程序,在返回主程序之前再恢复现场。保护方法一般是把累加器、PSW;其他相关存放器数据压入堆栈。在保护现场时,一般规定此时CP"响应新的和中断请求,这就要求在编写中断效劳程序时,注意在保护现场或恢复现场时要关闭中断。7、试用中断法设计秒、分脉冲发生器。答:利用定时器T0定时,P1.0作为秒发生器输出端,P1.1作为分脉冲发生器的输出端。设晶振为12MH否片内50H和51H单元分别用于秒、分计数。使用T0方式1定时50m&ORG0000HLJMPMAINORG000BH'LJMPT0_SERORG0100HMAIN:MOVTMOD#01HMOVTH0#3CH,MOVTL0,#0B0HMOV50H#20,MOV51H#60,SETBET0SETBEASETBTR0SJMP$ORG0200HT0_SERMOVTH0#3CH:MOVTL0#0B0,HDJNZ50HL1MOV50H#20NOPNOPDJNZ51HL1MOV51H#60NOPNOPL1:SETBTR0RETI8、89S51单片机的和中断系统有几个优先级,如何设定?假设扩充8个中断源,如何确定优先级?答:51单片机有两个中断优先级,中断优先级的设定:由专用存放器IP同一管理,由软件设置每个中断源为高优先级中断或低优先级中断,实现两级中断嵌套。如果几个同一优先级中断源同时向CPU申请中断,CPUS硬件逻辑确定先后顺序。假设扩充8个中断源,可以采用中断和查询结合扩充外中断源的方法确定优先级。9、试用中断计数设计一个秒闪电路,其功能是发光二极管LED每秒闪400m&频率24MHz答:根据题意,LED点亮400ms,灭600msORG0000HLJMPMAINORG000BH'LJMPT0_SERORG0100HMAIN:MOVTMOD#01HMOVTH0,#3CHMOVTL0,#0B0HSETBET0SETBEAMOVR1,#00HSETBTR0SJMP$ORG0200HT0_SERPUSHPSW:INCR1CJNER1,#16,SUB1SUB1:CJNER1#24TENDMOVR1#00HTEND:MOVTH0#3CHMOVTL0#0B0HSETBTR0POPPSWRETI10、MCS-51单片机外部中断有哪两种触发方式?对触发电平或脉冲信号有何要求?如何选择和设定?答:MCS-51单片机外部中断有两种触发方式:①电平触发;②跳变触发。对于电平触发方式,要求中断引脚上的电平应至少保持12个振荡周期,以保证电平信号能被采样到,还要求在中断返回前撤销中断请求〔使引脚上的电平变高〕;对于跳变触发方式,要求输入的负脉冲宽度至少保持12个振荡周期,以确保检测到引脚上的电平跳变。MCS-51单片机的外部中断可以用程序控制为电平触发或跳变触发。即通过编程对定时器/计数器控制存放器TCO"白IT0和IT1位进行清“0〃或置“1〃。假设是0,那么为电平触发。第八章单片机的系统扩展1、在8051单片机扩展系统中,程序存储器和数据存储器共用16位地址线和8位数据线,为什么两个存储空间不会发生冲突?答:程序存储器和数据存储器虽然共用16位地址线和8位数据线,但由于数据存储器的读写信号由RD〔P3.7〕和WR〔P3.6〕信号控制,而程序存储器由读选通信号PSEN®制,因此虽然共处同一地址空间,但控制信号不同,所以不会发生总线冲突。2、问什么当P2作为扩展存储器的高8位地址后,不再适宜做通用I/O端口了?答:P2口做扩展存储器的高8位地址总线后,即使没有全部占用,空余的几根线也不宜作通用的I/O端口使用,否那么会给软件编写及使用带来不必要的麻烦。3、以89S51为主机,扩展2片6264RAM储器芯片,设计硬件布线图。4、根据图8—9电路设计程序,其功能是按下K0〜K3,对应LED4〜LED7发光,按下K4〜K7,对应LED0〜LED3发光。START:MOVDPTR#0FEFFHA,@MOVXDPTRA,#0FFH,L1SCJNESJTARTB,ADEL20MSMPA,@DPTRA,B,STAL1:MOVRTA@DPTRASTARLCALLTMOVXCJNESWAPMOVXLJMP答:根据要求不编程如下5、请利用译码器74HC138设计一个姨妈电路,分别选中2片29C256和2片62256,且列出个芯片所占的地址空间范围。15根地址线,电路连接如图。P2.7P2.6〜P2.0A0..A7]111Q7~Q0SSA0~A7A8~AI4EA0~A7A8~AI4A0~A7Ao~AI4A0~A7A8~AI4COOCO3736225662256ALE2725627256WGD7-D03WOD7-D040CD7~D01ClD7~D02E89S51P0.7〜P0.0PSENWRRD答:29C256和62256为32K字节的容量,需要地址空间范围:1〕0000H〜7FFFH〔2〕8000H〜FFFFH〔3〕0000H〜7FFFH〔4〕8000H〜FFFFH6、试说明8155内部结构特点,其定时/计数器与89S51内部的定时/计数器有何异同?答:8155内部有3个可编程的I/O端口,1个14位的可编程定时/计数器,还有256字节的数据存循指。与89S51的定时计数器不同的是:〔1〕8155的可编程定时/计数器是一个14位的减法计数器,其只有一种固定的工作方式。而89S51的定时/计数器是加1计数器,可以有8位、13位、16位等计数方式。[D0..D7]〔2〕8155的定时/计数器不管是定时还是计数,都需要由外部提供计数脉冲。89S51的定时/计数器在内部定时时,不需要单独提供计数脉冲。〔3〕8155定时/计数器计满溢出时,由TIMEOUTS输出脉冲或方波,输出波形通过软件可定义为4种;而89S51的定时/计数器那么没有专门的输出脉冲端。7、解释在80C51系列单片机扩展多个芯片时,可能出现“地址不连续’’或一个芯片有多个地址的现象?答:单片机在扩展芯片时,如果扩展芯片容量小于64K,P2□作为高8位地址线时就会多出一些地址线不用,这些多余的地址线一局部可以作为片选信号,还可能有剩余局部未用〔可以是0,也可以是1〕,此时采用不同的编址方式,就可以出现“地址不连续’’或一个芯片多个地址的现象。8、8255有哪几种工作方式?怎样进行选择?说明8255控制字的作用及各位功能。答:8255A有方式0、方式1、方式2三种工作方式。〔1〕方式0〔根本I/O方式〕8255A的PAPRPC-PC7,POO-PC3可分别被定义为方式0输入或方式0输出。方式0输出具有锁存功能,输入没有锁存。方式0适用于无条件传输数据的设备。〔2〕方式1〔应答I/O方式〕PAD、PB口定义为方式1时,PC口的某些位为状态控制线,其余的线为I/O线。方式1适用于打印机等具有握手信号的输入/输出设备。〔3〕方式2〔双向选通I/O方式〕方式2是方式1输入和方式1输出的结合,方式2仅对PA□有意义。方式2使PA口成为8位双向三态数据总线口。既可发送数据又可接收数据。PA口方式2工作时,PB口仍作I/O口,PC□高5位作状态控制线,低3位可作I/O线。8255A的工作方式可通过设置8255A的控制字来选择。8255A有两种控制字,即方式控制字和PC□位置位/复位控制字。方式控制字的格式及各位的含义如图1所示:D7D6D5D4D3D2D1D010:PC3〜PC0输出;1:PC3〜PC0输入_0:PB口输出;1:PB口输入一B口方式位0:方式0;1:方式1_0:PG〜PQ输出;1:PC7〜PQ输入_0:PA口输出;1:PA«输入A组一A口方式位00:方式0;01:方式1;1X:方式2图18255A方式控制字格式PC口位置位/复位控制字的格式及各位的含义如图2所示:D7D6D5D4DBD2D1D00XXX1—0:清“0”;1:置“1”—000:PC,0;010:PC,2;100:PC,4;110:PC,6一001:PC,1;011:PC,3;101:PC,5;111:PC,7图2PC□位置位/复位控制字格式9、8255A的A、B口工作于方式0,A□输输出,B口输输入,C口上半部输出,下半部输入。答:设A、B、C与控制端口的地址分别为FF80HFF81HFF82HFF83H,编写接口电路与8255A的初始化程序。MOVDPTR#0FF83H;初始化8255AMOVA,#13H;10000011BMOVX@DPTRA10、简述在扩展I/O接口中单片机RD和WR引脚在控制接口电路中起什么作用?答:在扩展I/O接口中,单片机的RD引脚功能是控制外部I/O接口电路将数据送到数据总线上,供CPU卖入;而WR引脚功能是是控制外部I/O接口电路将数据总线上的数据送到接口电路的内部存放器内,供接口电路的控制或数据传送。第九章接口技术1、试说明非编码键盘的工作原理,为何要消除键抖动?又为何要等待键释放?答:由非编码键盘所提供的行和列矩阵,通过接口电路或单片机的I/O□与CPU相连。CPM以采用查询或中断方式了解有无键输入并检查是哪一个键按下,且将键号送入CPU当设置的功能键或数字键按下时,计算机应用系统应完成该键所设定的功能。由于目前,无论是按键或是键盘的大局部,都是利用机械触点的合、断作用。机械触点在闭合及断开瞬间由于弹性作用的影响,在闭合及断开即释放瞬间均有抖动过程,从而使电压信号也出现抖动。抖动时间长短与开关的机械特性有关。按键的稳定闭合时间,有操作人员的按键动作所确定,一般为十分之几秒至几秒间。在此期间电压信号将出现屡次变化很容易产生误判。为了保证CPU寸键的依次闭合仅作依次键处理,必须去除抖动影响。当释放同时同样存在键抖动影响,为了确保键释放也需要等待和判断。2、LED的静态显示方式与动态显示方式有何区别?各有什么优缺点?答:静态显示时,数据是分开送到每一位LED上的。而动态显示那么是数据是送到每一个LED上,再根据位选线来确定是哪一位LED被显示。静态显示亮度很高,但口线占用较多。动态显示那么好一点,适合用在显示位数较多的场合。3、说明矩阵式键盘按键按下的识别原理。答:按键设置在行、列线交点上,行、列线分别连接到按键开关的两端。行线通过上拉电阻接到+5V上,无按键按下时,行线处于高电平状态,而当有按键按下时,行线电平状态将由与此行线相连的列线的电平决定。列线的电平如果为低,那么行线电平为低;列线的电平如果为高,那么行线的电平亦为高。将行、列线信号配合起来并做适当的处理,才能确定闭合键的位置。4、常用的开关型驱动器件有哪些?答:常用的开关型驱动器件有光电耦合器、继电器、晶闸管、功率MOST、集成功率电子开关、固本文档局部内容来源于网络,如有内容侵权请告知删除,感谢您的配合!
/
本文档为【单片机课后习题解答】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索