单片机课后习题解答_第1页
单片机课后习题解答_第2页
单片机课后习题解答_第3页
单片机课后习题解答_第4页
单片机课后习题解答_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

1、练习练习练习第二章单片机结构及原理1、MCS-51单片机内部包含哪些主要功能部件?它们的作用是什么?答:(1) 一个8bit CPU是微处理器的核心,是运算和逻辑计算的中心。(2) 片内震荡器及时钟电路:提供标准时钟信号,所有动作都依据此进行。(3) 4K ROM程序存贮器:存贮程序及常用表格。(4) 128B RAM数据存贮器:存贮一些中间变量和常数等。(5) 两个16bit定时器/计数器:完全硬件定时器(6) 32根可编程I/O 口线:标准8位双向(4个)I/O接口,每一条I/O线都能独立地作输入 或输出。(7) 一个可编程全双工串行口。(8) 五个中断源。2、什么是指令?什么是程序?答:

2、指令是规定计算机执行某种操作的命令。程序是根据任务要求有序编排指令的集合。3、 如何认识89S51/52存储器空间在物理结构上可以划分为4个空间,而在逻辑上又可以划分为3个空间?答:89S51/52存储器空间在物理结构上设有4个存储器空间:片内程序存储器、片外程序存 储器、片内数据存储器、片外数据存储器。在逻辑上有3个存储器地址空间:片内、片外统一的 64KB程序存储器地址空间,片内256B数据存储器地址空间,片外64K B的数据存储器地址空间。4、 开机复位后,CPU使用的是哪组工作寄存器?他们的地址是多少?CPUffl何确定和改变当前工作 寄存器组?答:开机复位后,CPU用的是第0组工作寄

3、存器,地址为 00H07H, CPU®过改变状态字寄存器 PSW中的RS0和RS1来确定工作寄存器组。5、 什么是堆栈?堆栈有何作用?在程序设计时,有时为什么要对堆栈指针SP重新赋值?如果 CPU在操作中要使用两组工作寄存器,SP应该多大?答:堆栈是一个特殊的存储区,主要功能是暂时存放数据和地址,通常用来保护断点和现场。堆栈指针SP复位后指向07H单元,00卜1FH为工作寄存器区,20H2FH为位寻址区,这些单元有其他 功能,因此在程序设计时,需要对SP重新赋值。如果 CPU在操作中要使用两组工作寄存器,SP应该至少设置为0FH。6、 89S51/52的时钟周期、机器周期、指令周期是

4、如何分配的?当振荡频率为8MHz时,一个单片 机周期为多少微秒?答:时钟周期为时钟脉冲频率的倒数,他是单片机中最基本的、最小的时间单位。机器周期是指完成一个基本操作所需要的时间,一个机器周期由12个时钟周期组成。指令周期是执行一条指令所需要的时间,由若干个机器周期组成。若 fosc=8MHz,则一个机器周期 =1/8 X 12 s=1.5 s7、89S51/52扩展系统中,片外程序存储器和片外数据存储器共处同一地址空间为什么不会发生总 线冲突?答:访问片外程序存储器和访问数据存储器使用不同的指令用来区分同一地址空间。8、程序状态字寄存器 PSW勺作用是什么?常用状态标志有哪些位?作用是什么?答

5、:程序状态字 PSW 8位寄存器,用于存放程序运行的状态信息,PS珈各位状态通常是在指令执行的过程中自动形成的, 但也可以由用户根据需要采用传送指令加以改变。各个标志位的意义如下:PSW.7( G):进位标志位。PSW.6( AQ:辅助进位标志位,又称为半进位标志位。PSW.5( F0):用户标志位。PSW.4 PSW.3(RS1和RS0):寄存器组选择位。PSW.2( OV:溢出标志位。PSW.1 (空缺位):此位未定义。PSW.0( P):奇偶校验位。9、 位地址7CH和字节地址7CH有何区别?位地址 7CH具体在内存中什么位置?答:字节地址7CH是片内数据存储器中的一个地址单元,该地址单

6、元中可以存放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 , EA 主要通过 P3 口。11、89S51/52中4个I/O 端口

7、在结构上有何异同?89S51/52单片机的4个I/O 口在结构上是基本相同的,但又各具特点。这四个端口都是8位 双向口,每个端口都包括一个锁存器、一个输出驱动器和输入缓冲器。在无片外扩展存储器的系统 中,这四个端口的每一位都可以作为双向通用I/O端口使用。在作为一般的通用 I/O输入时,都必须先向锁存器写入“1” ,使输出驱动场效应管 FET截止,以免误读数据。各自特点如下:(1)P0 口为双向8位三态I/O 口,它既可作为通用I/O 口,又可作为外部扩展时的数据总线及低8位地址总线的分时复用口。作为通用I/O 口时,输出数据可以得到锁存,不需外接专用锁存器;输入数据可以得到缓冲,增加了数据输

8、入的可靠性。每个引脚可驱动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位

9、准双向I/O 口,内部具有上拉电阻, 它是双功能复用口, 每个引脚可驱动 4个TTL 负载。作为通用I/O 口时,功能与P1 口相同,常用第二功能。12、复位的作用是什么?有几种复位方法?复位后单片机的状态如何?答:复位是单片机的初始化操作。单片机在RST引脚产生两个机器周期(即 24个时钟周期)以上的高电平即可实现复位。 主要的复位方法有上电自动复位和按键手动复位两种。按键手动复位又分:按键电平复位和按键脉冲复位。第三章指令系统1、简述下列名词术语的基本概念:指令、指令系统、程序、汇编语言指令 答:指令:规定单片机进行某种操作的命令称为指令。指令系统:单片机能够执行的各种指令的集合。程序:一

10、系列指令的有序集合称为程序。汇编语言指令:用助记符形式来表示机器指令。2、80C51单片机有哪几种寻址方式?这几种寻址方式是如何寻址的?答:共7种寻址方式,分别为:寄存器寻址,直接寻址,寄存器间接寻址,立即寻址,变址寻址, 位寻址和相对寻址。寄存器寻址方式:由指令指出某一寄存器的内容做为操作数。直接寻址方式:指令中操作数直接以单元地址的形式给出。寄存器间接寻址方式 :寄存器间接寻址方式,寄存器中存放的则是操作数的地址,即操作数 是通过寄存器间接得到的。立即寻址方式:操作数在指令中直接给出。变址寻址方式:变址寻址是为了访问程序存储器中的数据和表格。MC& 51的变址寻址是以DPT硕PC作

11、基址寄存器,以累加器 A作变址寄存器,并以两者内容相加形成的16?位地址做为操作数地址,以达到访问数据和表格的目的。位寻址方式:指对片内 RAM勺位寻址区和某些可寻址的特殊功能寄存器进行位操作的寻址方相对寻址方式:相对寻址方式是为解决程序转移而专门设置的,为转移指令所采用。3、要访问特殊功能寄存器和片外数据寄存器,应采用哪些寻址方式?答:访问特殊功能寄存器可以采用直接寻址、寄存器寻址和位寻址(针对可以进行位寻址的特殊功 能寄存器)方式。访问片外数据存储器可采用寄存器间接寻址方式。4、80C51单片机的指令系统可以分为哪几类?说明各指令的功能。答:51单片机指令系统按功能可分为5类:(1)(2)

12、(3)(4)(5)数据传送指令算术运算指令逻辑运算指令控制转移指令位操作指令主要进行数据的传送、交换等;主要进行基本的加减乘除运算;主要实现逻辑运算与移位运算;主要是实现对程序流程的控制;5、外部数据传送指令有哪几条?有和区别?7、略8、DA A答:外部数据传送指令有读指令和写指令两类,每类指令的寻址范围不同,分别为:读外部存储器指令:MOVXA, Ri;寻址范围为256字节MOVXA, DPTR;寻址范围为64K字节写外部存储器指令:MOVXRi A;寻址范围为256字节MOVXDPTR A;寻址范围为64K字节6、在89S51片内 RAM中,已知(30H) =38H, (38H) =40H

13、, (40H) =48H析下段程序按序执行后的结果。,(48H) =90H,请分别分MOVA, 40H;A=48HMOVR0, A;R0=48HMOVP1, #0FFH;P1=FFHMOVR0 30H;(48H)=38HMOVDPTR #1246H;DPTR=1246HMOV40H 38H;(40H)=40HMOVR0 30H;R0=38HMOV90H R0;(90H)=38HMOV48H #30H;(48H)=30HMOVA R0;A=40HMOVP2 P1;P2=38H指令的作用是什么?怎样使用?答:对十进制 BCDa作加法时进行调整,当结果的低4位A0A3>9,或半进位 AC=1,

14、贝U A0A3+6,否则不加;当结果的高4位A4A7>9,或进位CY=1,则A4A7+ 6,否则不加;这条指令是在进行BC前加法运算时,跟在“ ADD和“ ADDC指令之后,用来对 BC前的加法运算结果自动进 行修正,使其仍为 BCD表示形式。9、试编程将片外数据存储器 60H中的内容传送到片内 RAM54HL元中。答: MOV R0, #60HMOVX A, R0MOV54H, A10、试编程将寄存器 R7的内容传送到 R1中去。答: MOV A, R7MOV R1, A11、 已知当前PC值为210H,请用两种方法将程序存储器2F0H中的常数送入累加器 A中。答:(1)以程序计数器P

15、C作为基址寄存器MOV A, #0E0HMOVC A, A+PC(2)以数据指针DPTR作为基址寄存器MOV DPTR #02F0HMOV A, #00HA=57H , CY=1, OV=1, AC=1, P=1A=3BH , CY=0 AC=1, OV=1MOVC A, A+DPTR16、试编程将片外RA" 30H和31H单元中的内容相乘,结果存放在32H (低位)和33H (高位)MOVR0, #0A7H;R0-A7H立即数送寄存器 R0XCHA, R0;A-A7H累加器A中的数据与R0中的数据进行交换SWAPA;A-7AH累加器A中的高低四位进行交换13、XCHA, R0;R0

16、-7AH数据交换回 R0请用物种万法实现累加器A与:寄存器B的内容父换。答:(1) MOVR0, AMOVA, BMOVB, R0(2) MOVR0, BXCHA, R014、试编程将片外RA" 40H单兀的内容与 R1的内容交换。答:MOVR0, #40HMOVXA, R0XCHA, R1MOVXR0 A15、已知:A=0C9H B=8DH CY=1。12、试说明下段程序中每条指令的作用,并分析当指令执行完后,R0中的内容是什么?执行指令ADDC A, B结果如何?执行指令SUBB A, B结果如何?单元中。答: MOV R0, #30HMOVX A, R0MOV B, AINC

17、R0MOVX A, R0MUL ABINC R0MOVX R0 AMOVA, BINCR0MOVXR0 A17、试用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)=EE

18、H19、求下列指令执行后,累加器 A及PS岫进位CY奇偶位P和溢出位OV的值。(1) 当A=5BH时;ADDA,#8CH(2) 当A=5BH时;ANLA,#7AH(3) 当A=5BH时;XRLA,#7FH(4) 当 A=5BH CY= 1 时;SUBB A, #0E8H答:(1) A=E7H CY=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单元。答: ANL A, #OFHMOV DPTR #2000HMOVX DPTR A21、 试说明指

19、令 CJNE R 1 #7AH, 10H的作用,若本指令地址为 250H,其转移地址是多少?答:指令作用:如果以 R1内容为地址的单元中的数据等于7AH,则程序顺序执行,否则转移后继续执行。若本指令地址为250H,则转移地址为 250H+ 03H+ 10H= 263H。22、 将累加器A中的数据由0递增,加到50,结果在累加器 A中。答:CLRAMOVR0, #50L1:INCADJNZR0, L123、试说明压栈指令和弹栈指令的作用及执行过程。24、下述程序执行后,SP=? , A=?,B=?。ORG2000HMOVSP #40HMOVA #30HLCALL250H;下条指令地址2008H送

20、ADDA #10HMOVBA;地址为200AHL1:SJMPL1ORG250HMOVDPTR #200AHPUSHDPL;SP+1=43H,DP曰(43H)PUSHDPH;SP+1=44H,DPH>(44H)RET;200AHR PC答:上述程序执行后,SP=42H A=30H B=30HSP的内容减1,此时SP指向新的栈顶。25、41H 42H,SP=42H发光二极管点亮规律:先是第 1和第8个亮,延时一段时间后,第 2和第7个亮,延时后,再 是第3和第6个亮,延时后,最后是第 4和第5个点亮,延时后循环。答:压栈(入栈或进栈)指令的作用是将数据存入堆栈中,其执行过程是先将堆栈指针 加

21、1,然后将直接地址单元中的数据压入SP指向的单元中。若数据已推入堆栈,则入数据所在的存储单元(即指向栈顶)。弹栈(出栈)指令的作用是将数据从堆栈中取出,其执行过程为先将堆栈指针 的内容送入直接寻址单元中,然后将SP的内容SP指向最后推SP所指出单元26、若系统晶振频率为 6MHz求子程序DELAYS延时时间,若想加长或缩短时间, 应该怎样修改?答:DELAY:MOVR2,#0FAHL1:MOVR3,#0FAHL2:DJNZR3,L2DJNZR2,L1RET总时间计算:T=4s +(250X 4 s + 4 s) X 250 + 4 s=251.008ms估算:T=250 X 4 s X 250

22、=250ms若想加长延时时间,可以增加循环次数或再加一重循环;若想减小延时时间,可以减少循环次数或较少一重循环。27、P1 口连接8个共阳极连接的发光二极管,是编制灯亮移位程序。答:MOVA, #0FEHL1:MOVP1, ARLALCALLDELAY;DELAY?程序同上题SJMPL128、试编一程序,将外部数据存储器2100H单兀中的高4位置“1”,其余位清“ 0”。答:MOVDPTR #2100HMOVXA, DPTRORLA, #0F0HANLA, #0F0HMOVXDPTR A29、试编程将片内数据存储器 40H单元的第0为和第7位置1,其余取反。答: MOVA, 40HCPLASE

23、TBACC.0SETBACC.7MOV40H, A30、将A.5与80H位相与的结果,通过 P1.4输出。MOVC, 80HANLC, ACC.5MOVP1.4 , C31、请用位操作指令,求下列逻辑方程。(1)P1.7 = ACC.0 (B.0 P2.1) P3.2(2)MOVC,B.0ORLC,P2.1ANLC,ACC.0ORLC,/P3.2MOV P1.7 , CPSW.5 = P1.3 ACC.2 B.5 P1.1(3)MOVC,P1.3ANLC,ACC.2MOV20H, CMOVC,B.5ANLC,/P1.1ORLC,20HMOV PSW.5, CP2.3 = P1.5 B.4 AC

24、C.7 P1.0MOVC,B.4ANLC,/P1.5MOV 20H, CMOVC,P1.0ANLC,/ACC.7ORLC,20H(下一行)MOVP2.3,C第四章汇编语言程序设计1、编程将片内40H60H单元中的内容送到以 3000H为首的存储区内。答:MOVR1, #40HMOVR2, #21HMOVDPTR #3000HL1:MOVA, R1MOVXDPTR AINCR1INCDPTRDJNZR2, L12、编程计算下列算式的程序(1) 23H+45H+ABH+03H=MOVA, #23HADDA, #45HADDA, #0ABHXCHA, B;溢出处理ADDCA, #00HXCHA, B

25、ADDA, #03H;A中为结果低位,B中为高位(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为低位,3

26、2H为高位3、设有两个4位BCD,分别存放在23H、22H单兀和33H、32H单兀中,求他们的和,并送入43H、42H单兀中(低位在低字七,局位在局字七)。答:MOVA, 22HADDA, 32HMOV42H, AMOVA, 23HADDCA, 33HMOV43H, A4、略5、编程计算片内RAMK 50i 59H单兀中数的平均值,结果存放在5AH中。答:MOVR0, #8MOVR1, #50HMOVA, #00HL1:ADDA, R1INCR1DJNZR0, L1MOVB, #8DIVABMOV5AH, A6、编写计算下式的程序。设乘积和平方结果均小于255。a、b值分别存在片外单兀中,结果

27、存于片外 3000H单兀中。”25,a = b(1) Y =M(M(a xb,a <ba 小 b,a > b)V DPTR #3001H )VX A, DPTRMOV30H, A; a 暂存 30H 单元INCDPLMOVX A, DPTRCJNEA, 30H, L1;是否 a=bMOVA, #25SJMP SAVEL1:JNCL2MOV B, 30HMUL ABSJMP SAVEL2:MOV B, AMOVA, 30HDIVABSAVE: M(M()V DPTR #3000H)VX DPRT A仁2一2(a +b) +10,(a +b) <10(2) Y =M(M(M(IN

28、M(ADM(a +b)2,(a +b)2 =10(a+b)2 -10,(a+b)2 >10)V DPTR #3001H )VX A, DPTR )V 30H, A CDPTR)VX A, DPTR )D A, 30H )V B, A_2MUL AB; (a + b)MOV31H, ACJNEA, #10, L1SJMP SAVEL1:JCL2CLRCSUBB A, #103001H 和 3002HSJMPSAVEL2:ADDA, #10SAVE:MOVDPTR #3000HMOVCDPTR A7、设有两个长度均为15的数组,分别存放在以200H和210H为首地址的存储区中, 试编程求其对

29、 应项之和,结果存放到以 220H为首地址的存储区中。答:MOVDPH #02HMOVR1, #15MOVR2, #00H;数组1首地址低位MOVR3, #10H;数组2首地址低位MOVR4, #20H;和首地址低位L1:MOVDPL R2MOVXA, DPTRMOVR1, AMOVDPL R3MOVXA, DPTRADDA, R1MOVDPL R4MOVXDTPR AINCR2INCR3INCR4DJNZR1, L1SJMP$8、设有100个无符号数,连续存放在以2000H为首地址的存储区中,试编程统计正数、负数和零的个数。答:MOV30H, #00H;正数计数器MOV31H, #00H;负

30、数计数器MOV32H, #00H;零计数器MOVDPTR #2000HMOVR1, #100L4:MOVXA, DPTRINCDPTRCJNEA, #0, L1INC32HSJMPL2L1:JCL3INC30HSJMPL2L3:INC31HL2:DJNZR1, L4SJMP$9、将片外数据存储器地址为1000H1030H的数据块,全部搬迁到片内RAM 30+ 60H中,并将原数据块区域全部清零。答: MOV R0, #30HMOV R2, #31HMOV DPTR , #1000HLP:MOVX A, DPTRMOVR0 AANDA, #00HMOVX DPTR AINCR0INCDPTRDJ

31、NZR2 LPSJMP$10、试编写一子程序,是 R1、R0指向的两个片外 RA谜续单元中的高 4位二进制数,合并成一个 字节,装入累加器 A中。已知R0指向低地址,并要求该单元高四位放在A中高四位。MOVXA,R1ANLA,#0F0HSWAPAMOVR2,AMOVXAR0ANLA#0F0HORLAR211、试编程把以2040H为首地址的连续 50个单元的无符号数按降序排列,存放到以3000H为首地址的存储区中。答:MOVR2 #50MOVR3 #20HMOVR4 #40H;源地址MOVR5 #30HMOVR6, #00H;目的地址SEND:MOVDPH R3;SEND务2040H数据块移入

32、3000H存储区MOVDPL R4MOVXA DPTRINCDPTRMOVR3 DPHMOVR4 DPLMOVDPH R5MOVDPL R6MOVXDPTR AINCDPTRMOVR5 DPHMOVR6 DPLDJNZR2 SENDMOVR2, #49;重复次数CMP1:MOVDPTR #3000HMOVR3 #49;比较次数CMP2:MOVXA DPTRMOVB, AINCDPTRMOVXA, DPTRCJNEA, B, L1L1:JCNOMOVEMOV30H, ACLRCMOVA, DPLSUBBA, #01HMOVDPL AMOVA, 30HMOVXDPTR AINCDPTRMOVA,

33、BMOVXDPTR ANOMOVE: DJNZR3, CMP2; 50个数重复一遍?DJNZR2, CMP1;排序结束?LJMP$12、试编一查表程序,从首地址为2000H,长度为100的数据块中找出 ASCII码为A,将其地址送到20A0H和20A1H单元中。答:MOVDPTR #2000HMOVR2, #100GO_ON:MOVXA, DPTRCJNEA, #41H, IFENDMOVA, DPHMOVB, DPLMOVDPTR #20A0HMOVXDPTR AINCDPTRXCHA, BMOVXDPTR ASJMPOVERIFEND:INCDPTRDJNZR2, GO_ONOVER:SJ

34、MPOVER13、设在200H204H单兀中,存放5个压缩BCD,编程将他们转换成ASCII码,存放至ij以205H单元为首地址的存储区。答:MOVR2, #05HMOVR3, #02HMOVR4, #00HMOVR5, #02HMOVR6, #05HCHLP:MOVDPH R3MOVDPL R4MOVXA, DPTRINC DPTRMOVR3, DPHMOVR4, DPLMOV B, A SWAP AANLA, #0FHORLA, #30HMOVDPH R5MOVDPL R6MOVX DPTR A INCDPTRMOVA, BANLA, #0FHORLA, #30HMOVX DPTR A M

35、OVR5, DPHMOVR6, DPLDJNZ R2, CHLP14、有-无符号数据块长度在30H单兀中,其首地址为31H单兀,求出数据块中最大值,并存入40H 中。答:MOVR0, #31HMOVR1, 30HMOV40H, #00HLOOP:MOVA, R0CJNEA, 40H, L1SJMPAGAINL1:JNCL2SJMPAGAINL2:MOV40H, AAGAIN:INCR0DJNZR1, LOOPSJMP$15、略16、在以2000H为首地址的存储区内,存放 20个用ASCII码表示的09之间的数,试编程,将它 们转换成BC咽,并以压缩 BC前的形式存在 3000卜3009H单元中

36、。答:MOVR2,#10MOVR3#20HMOVR4#00HMOVR5#30HMOVR6#00HLP:MOVDPHR3MOVDPLR4MOVXA DPTRANLA #0FHSWAPAXCHA, BINCDPTRMOVXA, DPTRANLA, #0FHORLA, BINCDPTRMOVR3, DPHMOVR4, DPLMOVDPH R5MOVDPL R6MOVXDPTR AINCDPTRMOVR5, DPHMOVR6, DPLDJNZR2, LPSJMP$17、试编程实现下列逻辑表达式功能。设P1.7P1.0为8个变量的输入端,而其中P1.7又作为变量的输出端。;输入端定义X0EQUP1.0X

37、1EQUP1.1X2EQUP1.2X3EQUP1.3X4EQUP1.4X5EQUP1.5X6EQUP1.6X7EQUP1.7(1 ) Y=X°X1X2 +又3 十 X4X5X6 十 X7MOVC,X0ANLC,X1ANLC,/X2ORLC,X3MOV00H, CMOVC,X4ANLC,X5ANLC,X6ORLC,/X7ORLC,00HMOVP1.7 , C Y =X°X1 +X2X3X4 +X5X6X7MOVC, X0ANLC, X1CPL CMOV00H, CMOVC,X2ANLC,X3ANLC,X4CPLCMOV01H, CMOVC,X5ANLC,X6ANLC,X7CP

38、LCORLC,O1HCPLCORLC,00HMOV P1.7 , C18、略19、略20、试编写延时1s、1min、1h 子程序。;单片机时钟fosc=12MHz,计算为近似值;1s延时子程序DLY_1S: MOVR0, #10L3:MOVR1,#200L2:MOVR2#250L1:DJNZR2L1DJNZR1,L2DJNZR0L3RET;延时1minDLY_1M: MOVR3#60L4:LCALLDLY_1SDJNZR3L4RET;延时1hDLY_1H: MOVR4#60L5:LCALLDLY_1MDJNZR4L5RET21、用程序实现 c=a2+b2。设a、b均小于10, a存在31H单元

39、中,b存在32H单元中,c存33H单 元。答:ORG1000HSRMOVA, 31HACALL SQRMOV R1, AMOVA, 32HACALLSQRADDA, R1MOV33H, ASJMP$;求平方子程序如下(采用查平方表的方法)SQR:INCMOVCRETAAA+PCTABLE:DB 0 ,1,4,9,16DB 25 ,END36,49, 64, 8122、如何实现将内存单元40H60H的数逐个对应传到片外 2540H2560H单元中?答:MOVMOVMOVR0, #40HDPTR #2540HR2, #21HL1:MOVA, R0MOVXDPTR AINCR0INCDPTRDJNZ

40、R2, L1SJMP$23、参考21题24、参考21题25、绘勺头验移序26、绘勺头验移序第五章 定时/计数器1、89S51单片机内部有几个定时/计数器,他们有哪些专用寄存器组成?答:89S51单片机内部有两个16位定时/计数器,为定时器 0 (T0)和定时器1 (T1)。在定时器/ 计数器的16位的计数器是由两个 8位的专用寄存器 THO TL0, TH1、TL1组成。2、89S51单片机的定时/计数器有哪几种工作方式,各有什么特点?答:定时器/计数器有四种工作方式:方式 0,方式1,方式2,方式3。其中,方式3只适用于T0o 以T0为例:方式 0, 16位寄存器只用了 13位,TL0的高三

41、位未用。由 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还可以设

42、置 为方式02,用于任何不需要中断控制的场合,或者用作串行口的波特率发生器。对外界计数频率有何3、 定时/计数器用作定时方式时,其定时时间与哪些因素有关?作为计数时,限制?答:定时/计数器作定时时,其计数脉冲由系统振荡器产生的内部时钟信号12分频后提供。定时时间与时钟频率和定时初值有关。定时/计数器作计数时,由于确认1次负跳变要花2个机器周期,即24个振荡周期,因此外部输入的计数脉冲的最高频率为系统振荡器频率的1/24。4、 当定时器T0用作方式3时,由于TR1位已被T0占用,如何控制定时器 T1的开启和关闭?答:定时器T0用作方式3时,由于TR1位已被T0占用,此时通过控制位 C/T切换其定

43、时或计数器工作方式。当设置好工作方式时,定时器T1自动开始运行,若要停止,只需送入一个置定时器T1为方式3的方式字。5、已知89S51单片机系统时钟频率为24MHz请利用定时器 T0和P1.2输出矩形脉冲。矩形波高电平宽度50饵,低电平宽度 350 g。答:ORG1000HMOVTMOD # 02H;设置工作方式MOVTH0, # 09CH;设置7E时命初值MOVTL0, # 09CHSETBTR0;启动定时器LOOPSETBP1.2;P1.0输出高电平MOV R007HDEL:JBCTF0 , REP;定时是否到?AJMPDELREPSETBP1.2;P1.0输出低电平DJNZR0, DEL

44、AJMPLOOPEND6、在89S51单片机中,已知时钟频率为12MHz请编程使 P1.0和P1.1分别输出周期为2ms 和 500s的方波。答:选择方式2,T1MOVTMOD #20HMOVTH1, #06HMOVTL1, #06HSETBTR1L1:MOVR2, #04HL2:JNBTF1, $CLRTF1,CPLP1.1DJNZR2 L2CPLP1.0LJMPL17、设系统时钟为24MHz试用定时器'T0做外部计数器,编程实现每计到1000个脉冲,是T1开始2ms定时:,定时时间到后,T0又开妃河数,循环往复。答:MOVTMOD #15H;T1定时方式1 , T0计数方式1L1:

45、MOVTH0, #0FCHMOVTL0, #18HSETBTR0JNBTF0,$CLRTR0CLRTF0MOVTH1,#HMOVTL1,#HSETBTR1JNBTF1,$CLRTR1CLRTF1LJMPL18、略 9、略第六章80C51的串行接口1、什么是串行异步通信?他有哪些特点?有哪几种帧格式?答:串行通信即所传输数据的各位按顺序一位一位的发送或接收。串行通信分为同步和异步两种方式。在异步通信中数据或字符是一帧一帧地传送的。帧定义为一个字符的完整的通信格式,通常也称为帧格式。它的主要特点:由于异步通信每传送一帧有固定的格式,通信双方只需按约定的帧格式来发送和接收数据,所以硬件结构比同步通信

46、方式简单;此外它还能利用校验位检测错误。帧格式的一般形式是先用一个起始位“0”表示字符的开始,然后是数据位,其后是奇偶校验位,最后是停止位,用以表示字符结束。2、 某异步通信接口按方式3传送,已知其每分钟传送 3600个字符,计算其传送波特率。答:设每个字符由1个起始位、8个数据位、1个可编程位和1个结束位组成,其传送波特率为:11b x 3600/60s=660bps3、80C51单片机的串行口由哪些基本功能部件组成?答:80C51单片机的串行口基本功能部件主要有:两个数据缓冲寄存器SBUF 一个串行口控制寄存器SCON 一个输入移位寄存器。4、 80C51单片机的串行口有几种工作方式?几种

47、帧格式?如何设置不同方式的波特率?答:80C51单片机的串行口有四种工作方式,由串行口控制寄存器中的SM0 SM1控制。80C51单片机的串行通信有 8位、10位、11位三种帧格式。波特率设置:4种工作方式波特率的计算方法不同,其中方式0和方式2的波特率是固定的,方式1和方式3的波特率是可变的,均由定时器 T1的溢出率控制。具体计算如下:方式0:波特率固定为时钟频率的1/12,不受SMOB勺影响。(SMOD;波特率倍增位)方式1的波特率=2SMOD32 X定时器T1的溢出率方式2的波特率=2SMO/64 X fosc方式3的波特率=2SMO/32 X定时器T1的溢出率5、 为什么定时器 T1用作串行口波特率发生器时,常采用工作方式2?答:在串行通信中,收发双方对发送或接收的数据速率(即波特率)要有一定的约定。串口有四种工作方式,其中方式 0和方式2的波特率是固定的,而方式 1和方式3的波特率是可变的,有定时器T1的溢出率控制。定时器 T1用作串行口波特率发生器时,因为工作方式2是自动重装载方式,因而定时器T1作波特率发生器常采用工作方式2.6、已知定时器T1设置成方式2,用作波特率

温馨提示

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

评论

0/150

提交评论