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

下载本文档

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

文档简介

1、练习练习练习第二章 单片机结构及原理1、MCS-51单片机内部包含哪些主要功能部件?它们的作用是什么? 答: 1 一个 8bit CPU 是微处理器的核心,是运算和逻辑计算的中心。2片内震荡器及时钟电路:提供标准时钟信号,所有动作都依据此进行。34K 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程序存储器地址空间,片内256 B数据存储器地址空间,片外64KB的数据存储器地址空间。4、 开机复位后,CPU使用的是哪组工作存放器?他们的地址是多少?CPU如何确定和改变当前工作 存放器组?答:开机复位后,CPU使用的是第0组

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

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

5、用是什么?答:程序状态字 PSW是 8位存放器,用于存放程序运行的状态信息,PSW中各位状态通常是在指令执行的过程中自动形成的, 但也可以由用户根据需要采用传送指令加以改变。 各个标志位的意义如 下:PSW.7Cy :进位标志位。PSW.6 AC:辅助进位标志位,又称为半进位标志位。PSW.5 F0:用户标志位。PSW.4 PSW.3 RS1和RSO:存放器组选择位。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 端口在结构上有何异同?89S

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

8、每个引脚可驱动8个TTL负载。数字电路按工艺有肖特基双极晶体管和CMO工艺两种,使用双极晶体管的数字电路称TTL数字电路,单片机输出端带负载能力,意思就是单片机的P3端口只能并联4个TTL型集成电路输 入端。 2 P1 口为 8 位准双向 I/O 口,内部具有上拉电阻,一般作通用 I/O 口使用,它的每一位都 可以分别定义为输入线或输出线,作为输入时,锁存器必须置1。每个引脚可驱动 4个TTL负载。3P2 口为8位准双向I/O 口,内部具有上拉电阻,可直接连接外部I/O设备。它与地址总线高8位复用,可驱动4个TTL负载。一般作为外部扩展时的高8位地址总线使用。4P3 口为8位准双向I/O 口,

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

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

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

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

13、8H=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=38H7、略8、 DA A 指令的作用是什么?怎样使用?答:对十进制 BCD数作加法时进行调整,当结果的低4位A0A3>

14、;9,或半进位 AC=1,贝U A0A3+6,否那么不加;当结果的高4位A4A7>9,或进位CY=1,那么A4A7+ 6,否那么不加;这条指令是在进行BCD码加法运算时,跟在“ ADD和“ ADDC指令之后,用来对 BCD码的加法运算结果自动进 行修正,使其仍为 BCD码表示形式。9、试编程将片外数据存储器 60H中的内容传送到片内 RAM54H单元中。答:MOVR0, #60HMOVX A, R0MOV 54H, AA=57H , CY=1, OV=1, AC=1, P=1A=3BH , CY=0, AC=1, OV=116、试编程将片外RAM中 30H和31H单元中的内容相乘,结果存

15、放在32H低位和33H高位10、试编程将存放器 R7的内容传送到 R1中去。答:MOVA, R7MOVR1, A11、答:当前PC值为210H,请用两种方法将程序存储器2F0H中的常数送入累加器 A中。1以程序计数器PC作为基址存放器MOVA, #0E0HMOVC A, A+PC2以数据指针DPTR作为基址存放器MOVDPTR, #02F0HMOVA, #00HMOVC A, A+DPTRMOVXCHSWAPXCHR0, #0A7HA, R0AA, R0;R0-A7H立即数送存放器 R0;A-A7H累加器A中的数据与R0中的数据进行交换;A-7AH累加器A中的上下四位进行交换;R0-7AH数据

16、交换回 R013、请用两种方法实现累加器A与存放器B的内容交换。答: 1 MOVR0, AMOVA, BMOVB, R0 2 MOVR0, BXCHA, R014 、试编程将片外RAM中 40H单兀的内容与 R1的内容交换。答:MOVR0, #40HMOVXA, R0XCHA, R1MOVXR0, A12、试说明下段程序中每条指令的作用,并分析当指令执行完后,R0中的内容是什么?15、: A=0C9H, B=8DH, CY=1。执行指令ADDC A, B结果如何? 执行指令SUBB A,B结果如何?单元中。答: MOV R0, #30HMOVX A, R0MOV B, AINC R0MOVX

17、A, R0MUL ABINC R0MOVX R0, AMOVA, BINC R0MOVX R0, A17、试用 3 种方法将累加器 A 中的无符号数乘 2.答: 1MOV R0, AADDA, R0 2MOV B, #2MUL AB 3RLA18、分析依次执行以下指令的结果: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)=EEH1

18、9、求以下指令执行后,累加器A及PSW中进位CY奇偶位P和溢出位OV的值。1当A=5BH时;ADDA, #8CH2当A=5BH时;ANLA, #7AH3当A=5BH时;XRLA, #7FH4当 A=5BH, CY=1 时 ;SUBB A, #0E8H答:1 A=E7H, 2A=5AH , 3A=24H ,CY=1, P=0,P=0P=0OV=04A=72H,CY=1, P=0,OV=020、 把累加器A中的低4位数据送到外部数据存储器的2000H单元。答: ANLA, #OFHMOVDPTR, #2000HMOVX DPT,R A21、 试说明指令 CJNE R1 #7AH, 10H的作用,假

19、设本指令地址为250H,其转移地址是多少?答:指令作用:如果以 R1内容为地址的单元中的数据等于7AH,那么程序顺序执行,否那么转移后继续执行。假设本指令地址为250H,那么转移地址为 250H+ 03H+ 10H= 263H。22、将累加器A中的数据由0递增,加到50,结果在累加器 A中。答:CLRAMOVR0, #50L1:INCADJNZR0, L123、试说明压栈指令和弹栈指令的作用及执行过程。答:压栈入栈或进栈指令的作用是将数据存入堆栈中,其执行过程是先将堆栈指针SP 的内容加 1,然后将直接地址单元中的数据压入SP 指向的单元中。假设数据已推入堆栈,那么SP 指向最后推入数据所在的

20、存储单元即指向栈顶。弹栈出栈指令的作用是将数据从堆栈中取出,其执行过程为先将堆栈指针SP所指出单元的内容送入直接寻址单元中,然后将SP的内容减1,此时SP指向新的栈顶。24、下述程序执行后,SP=?, A=?, B=?。L1:ORG2000HMOVSP, #40HMOVA, #30HLCALL250H;下条指令地址 2022H送41H 42H,SP=42HADDA, #10HMOVB, A;地址为 200AHSJMPL1ORG250HMOVDPTR, #200AHPUSHDPL;SP+1=43H,DP (43H)PUSHDPH;SP+1=44H,DPHk(44H)RET;200AHH PC答:

21、上述程序执行后, SP=42H, A=30H, B=30H。25、发光二极管点亮规律:先是第 1 和第 8个亮,延时一段时间后,第 2和第 7个亮,延时后,再是第 3 和第 6 个亮,延时后,最后是第 4 和第 5 个点亮,延时后循环。26、假设系统晶振频率为 6MHz求子程序DELAY的延时时间,假设想加长或缩短时间,应该怎样 修改?答:DELAY: MOV R2, #0FAHL1:MOVR3, #0FAHL2:DJNZR3, L2DJNZR2, L1RET总时间计算:T=4 s + 250X 4卩 s + 4 卩 sX 250 + 4卩估算:T=250 X 4 卩 s X 250=250m

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

23、 ACC.7MOV 40H, A30、将A.5与80H位相与的结果,通过 P1.4输出。MOVC, 80HMOV P1.4 , C31、请用位操作指令,求以下逻辑方程。1P1.7 ACC.0 (B.0 P2.1) P32MOV P1.7,C2PSW.5P1.3 ACC.2 B.5 P1.1MOV20H, CORL C,20HMOVPSW.5, C3P2.3P1.5 B.4ACC.7 P1.0MOV20H, CORLC,20H下一行MOVP2.3,C第四章汇编语言程序设计1、编程将片内40H60H单元中的内容送到以 3000H为首的存储区内。答:MOVR1, #40HMOVR2, #21HMOV

24、DPTR #3000HL1:MOVA, R1MOVXDPTR AINCR1INCDPTRDJNZR2, L12、编程计算以下算式的程序123H+45H+ABH+03H=MOVA,#23HADDA,#45HADDA,#0ABHXCHA,B;溢出处理ADDCA,#00HXCHA,BADDA,#03H;A中为结果低位,B中为高位2CDH+15H-38H-46H=MOVA,#0CDHADDA,#15HSUBBA,#38HSUBBA,#46H31234H+8347H=MOVA,#34HADDA,#47HMOV30H, AMOVA, #12HADDC A, #83HMOV31, A; 30H 存结果低位,

25、 31H 存结果高位4 AB123H-43ADCH=CLRCMOVA, #23HSUBBA, DCHMOV30H, AMOVA, #0B1HSUBBA, #3AHMOV31H, AMOVA, #0AHSUBBA, #04HMOV32H, A;30H为低位,32H为高位3、设有两个4位BCD码,分别存放在23H、22H单元和33H、32H单元中,求他们的和,并送入43H、 42H单元中低位在低字节,高位在高字节。答: MOVA,22HADDA,32HMOV42H, AMOVA,23HADDCA,33HMOV43H, A4、略5、编程计算片内RAM区 50H- 59H单元中数的平均值,结果存放在5

26、AH 中。答: MOVR0, #8MOV R1, #50HMOVA, #00HL1:ADDA, R1INCR1DJNZR0, L1MOVB, #8DIVABMOV5AH, A6、编写计算下式的程序。设乘积和平方结果均小于255。 a、b值分别存在片外 3001H和3002H单元中,结果存于片外3000H单元中。25,a b1 Yab ,a bab ,a bMOVDPTR, #3001HMOVXA, DPTRMOV30H, A;a暂存30H单元INCDPLMOVXA, DPTRCJNEA, 30H, L1;是否 a=bMOVA, #25SJMPSAVEL1:JNCL2MOVB, 30HMULAB

27、SJMPSAVEL2:MOVB, AMOVA, 30HDIVABSAVE:MOVDPTR, #3000HMOVXDPR,T A(ab) 2 10,(ab)2 102Y(ab)2,(ab)2 10(ab) 2 10,(a2b)2 10MOVDPTR, #3001HMOVXA, DPTRMOV30H, AINCDPTRMOVXA, DPTRADDA, 30HMOVB, AMULAB;(a b) 2MOV31H, ACJNEA, #10, L1SJMPSAVEL1:JCL2CLRC答:MOVDPH, #02HMOVR1, #15MOVR2, #00H; 数组 1 首地址低位MOVR3, #10H;

28、数组 2 首地址低位MOVR4, #20H; 和首地址低位L1:MOVDPL, R2MOVXA, DPTRMOVR1, AMOVDPL, R3MOVXA, DPTRADDA, R1MOVDPL, R4MOVXDTP,R AINCR2INCR3INCR4DJNZR1, L1SJMP$8、设有100个无符号数,连续存放在以2000H为首地址的存储区中,试编程统计正数、负数和零的个数。答:MOV30H, #00H;正数计数器MOV31H, #00H;负数计数器MOV32H, #00H;零计数器MOVDPTR, #2000HMOVR1, #100L4:MOVXA, DPTRINCDPTRCJNEA,

29、#0, L1INC32HSJMPL2L1:JCL3INC30HSJMPL2L3:INC31HL2:DJNZR1, L4SJMP$7、设有两个长度均为 15 的数组, 分别存放在以 200H 和 210H 为首地址的存储区中, 试编程求其对9、将片外数据存储器地址为1000H1030H的数据块,全部搬迁到片内RAM 30H-60H中,并将原数据块区域全部清零。SUBBSJMPA, #10SAVEL2:ADDA, #10SAVE:MOVDPTR, #3000HMOVCDPT,R A应项之和,结果存放到以 220H 为首地址的存储区中。答:MOVR0, #30HMOVR2, #31HMOVDPTR

30、, #1000HLP:MOVXA, DPTRMOVR0, AANDA, #00HMOVXDPT,R AINCR0INCDPTRDJNZR2, LPSJMP$10、试编写一子程序,是R1、RO指向的两个片外 RAM连续单元中的高4 位二进制数,合并成一个字节,装入累加器A中。R0指向低地址,并要求该单元高四位放在A中高四位。答: MOVX A, R1ANLA, #OFOHSWAP AMOVR2, AMOVX A, ROANL A, #OFOHORLA, R22040H为首地址的连续 50个单元的无符号数按降序排列,存放到以3OOOH 为首地址的存储区中。答:MOVR2, #50MOVR3, #2

31、0HMOVR4, #40HMOVR5, #30HMOVR6, #00HSEND:MOVDPH, R3MOVDPL, R4MOVXA, DPTRINCDPTRMOVR3, DPHMOVR4, DPLMOVDPH, R5MOVDPL, R6MOVXDPT,R AINCDPTRMOVR5, DPHMOVR6, DPLDJNZR2, SENDMOVR2, #49CMP1:MOVDPTR, #3000HMOVR3, #4911、试编程把以;源地址;目的地址;SEND各2040H数据块移入 3000H存储区;重复次数;比拟次数CMP2:MOVXMOVINCMOVXCJNEA, DPTRB, ADPTRA,

32、 DPTRA, B, L1L1:JCNOMOVEMOV30H, ACLRCMOVA, DPLSUBBA, #01HMOVDPL, AMOVA, 30HMOVXDPT,R AINCDPTRMOVA, BMOVXDPT,R ANOMOVE: DJNZR3, CMP2; 50 个数重复一遍?DJNZR2, CMP1;排序结束?LJMP$12、试编一查表程序,从首地址为2000H,长度为100的数据块中找出 ASCII码为A,将其地址送到20A0H和20A伯单元中。答:MOVDPTR, #2000HMOVR2, #100GO_ON:MOVXA, DPTRCJNEA, #41H, IFENDMOVA,

33、DPHMOVB, DPLMOVDPTR, #20A0HMOVXDPT,R AINCDPTRXCHA, BMOVXDPT,R ASJMPOVERIFEND:INCDPTRDJNZR2, GO_ONOVER:SJMPOVER13、设在200H204H单元中,存放5个压缩BCD码,编程将他们转换成 ASCII码,存放到以205H 单元为首地址的存储区。答:MOVR2,#05HMOVR3,#02HMOVR4,#00HMOVR5,#02HMOVR6,#05HCHLP:MOVDPH,R3MOVDPL,R4MOVXA, DPTRINCDPTRMOVR3, DPHMOVR4, DPLMOVB, ASWAPAA

34、NLA, #0FHORLA, #30HMOVDPH, R5MOVDPL, R6MOVXDPT,R AINCDPTRMOVA, BANLA, #0FHORLA, #30HMOVXDPT,R AMOVR5, DPHMOVR6, DPLDJNZR2, CHLP14、有一无符号数据块长度在 30H 单元中,其首地址为 31H 单元,求出数据块中最大值,并存入40H 中。答:MOVR0, #31HMOVR1, 30HMOV40H, #00HLOOP:MOVA, R0CJNEA, 40H, L1SJMPAGAINL1:JNCL2SJMPAGAINL2:MOV40H, AAGAIN:INCR0DJNZR1,

35、 LOOPSJMP $15、略16、在以2000H为首地址的存储区内,存放20个用ASCII码表示的09之间的数,试编程,将它们转换成BCD码,并以压缩 BCD码的形式存在 3000H- 3009H单元中。R2,#10R3,#20HR4,#00HR5,#30HR6,#00HDPH,R3DPL,R4A, DPTRA, #0FH答: MOVMOVMOVMOVMOVLP: MOVMOVMOVXANLSWAPAXCHA,BINCDPTRMOVXA,DPTRANLA, #0FHORLA,BINCDPTRMOVR3,DPHMOVR4, DPLMOVDPH R5MOVDPL,R6MOVXDPTR AINCD

36、PTRMOVR5,DPHMOVR6,DPLDJNZR2, LPSJMP$17、试编程实现以下逻辑表达式功能。设P1.7P1.0为8个变量的输入端,而其中P1.7又作为变量的输出端。;输入端定义1Y X0X1X2 X3 X4X5X6 X7MOVC,X0ANLC,X1ANLC,/X2ORLC,X3MOVOOH, CMOVC,X4ANLC,X5ANLC,X6ORLC,/X7ORLC,00HMOVP1.7,C2Y X0X1X2X3X4X5X6X7MOVC,X0ANLC,X1CPLCMOV00H, CMOVC, X2ANLC, X3ANLC, X4CPLCMOV01H, CMOVC, X5ANLC, X

37、6ANLC, X7CPLCORLC, O1HCPLCORLC, 00HMOVP1.7 , C18 、略19 、略20、试编写延时1s、 1min、1h 子程序。;单片机时钟fosc=12MHz,计算为近似值; 1s 延时子程序21 、用程序实现c=a2+b2。设a、b均小于10, a存在31H单兀中,元。答: ORG1000HSR:MOVA, 31HACALLSQRMOVR1, Ab 存在 32H 单元中,c存33H单DLY_1S: MOVR0, #10L3:MOVR1,#200L2:MOVR2,#250L1:DJNZR2,L1DJNZR1,L2DJNZR0,L3RET;延时1minDLY_1

38、M: MOVR3,#60L4:LCALLDLY_1SDJNZR3,L4RET;延时1hDLY_1H: MOVR4,#60L5:LCALLDLY_1MDJNZR4,L5RETMOVA, 32HACALLSQRADDA, R1MOV33H, ASJMP$;求平方子程序如下采用查平方表的方法SQR:INCAMOVCA,A+PCRETTABLE:DB O ,1 ,4,9,16DB 25 ,36,49, 64,81END22、如何实现将内存单元40H60H的数逐个对应传到片外 2540H2560H单元中?答:MOVMOVMOVRO, #4OH DPTR, #254OHR2, #21HL1:MOVA, R

39、OMOVXDPT,R AINCROINCDPTRDJNZR2, L1SJMP$23、4 -4y.参考21 题24、4 -4y.参考21 题25、参考实验程序26、参考实验程序第五章 定时/ 计数器1、89S51单片机内部有几个定时/计数器,他们有哪些专用存放器组成?答:89S51单片机内部有两个16位定时/计数器,为定时器 0 TO和定时器1 T1。在定时器/ 计数器的16位的计数器是由两个 8位的专用存放器 THO TLO, TH1、TL1组成。2、89S51 单片机的定时 /计数器有哪几种工作方式,各有什么特点?答:定时器 /计数器有四种工作方式:方式0,方式 1,方式 2,方式 3。其中

40、,方式 3只适用于 T0。以TO为例:方式 0, 16位存放器只用了 13位,TLO的高三位未用。由 TH0的8位和TLO的 低5位组成一个13位计数器;方式 1,和方式O的工作相同,唯一的差异是THO和TLO组成一个16位计数器;方式 2,把TLO配置成一个可以自动恢复初值的8位计数器,THO作为常数缓冲器。THO由软件预置值。当 TLO产生溢出时,一方面使溢出标志TFO置1,同时把THO中的8位数据重新装入TLO中;方式3,将使TLO和THO成为两个相互独立的 8位计数器,TLO利用TO本身 的一些控制,它的操作与方式O和方式1类似。而THO被规定为只用作定时器功能,对机器周期计数,并借用

41、了 T1的控制位TR1和TF1。在这种情况下 THO控制了 T1的中断。这时 T1还可以设置为方式02,用于任何不需要中断控制的场合,或者用作串行口的波特率发生器。3、定时/ 计数器用作定时方式时, 其定时时间与哪些因素有关?作为计数时, 对外界计数频率有何 限制?答:定时 /计数器作定时时,其计数脉冲由系统振荡器产生的内部时钟信号12分频后提供。定时时间与时钟频率和定时初值有关。定时/计数器作计数时,由于确认 1次负跳变要花 2个机器周期,即 24个振荡周期,因此外部 输入的计数脉冲的最高频率为系统振荡器频率的 1/24 。T1 自动开始运行,假设要停止,只需送入一个置定时器4、 当定时器T

42、0用作方式3时,由于TR1位已被T0占用,如何控制定时器 T1的开启和关闭?答:定时器T0用作方式3时,由于TR1位已被T0占用,此时通过控制位 C/T切换其定时或计数器 工作方式。当设置好工作方式时,定时器T1 为方式 3 的方式字。24MHz请利用定时器 T0和P1.2输出矩形脉冲。矩形波高5、 89S51 单片机系统时钟频率为 电平宽度50宙,低电平宽度 350 e。ORGMOVTMOD, 02H;设置工作方式MOVTH0, 09CH;设置定时器初值MOVTL0, 09CHSETBTR0;启动定时器MOV R0, 07HJBCTF0 , REP;定时是否到?AJMPDELDJNZR0,

43、DELAJMPLOOPEND1000HDEL:答:选择方式 2,用定时器 T1MOVTMOD, #20HMOVTH1, #06HMOVTL1 , #06HSETBTR1L1:MOVR2, #04HL2:JNBTF1, $CLRTF1,DJNZR2, L2LJMPL17、设系统时钟为24MHz试用;卩s的方波。2ms定时,定时时间到后,答:L1:MOV MOV MOV SETBTMOD,TH0, #0FCHTL0, #18HTR0T0 做外部计数器,编程实现每计到 1000 个脉冲,是 T1 开始 T0 又开始计数,循环往复。#15H;T1定时方式1,T0计数方式1答:JNBTF0,$CLRTR

44、0CLRTF0MOVTH1,# HMOVTL1,# HSETBTR1JNBTF1,$CLRTR1CLRTF1LJMPL18、略9、略第六章 80C51 的串行接口1、什么是串行异步通信?他有哪些特点?有哪几种帧格式? 答: 串行通信即所传输数据的各位按顺序一位一位的发送或接收。串行通信分为同步和异步两种方式。在异步通信中数据或字符是一帧一帧地传送的。 帧定义为一个字符的完整的通信格式, 通常也 称为帧格式。它的主要特点: 由于异步通信每传送一帧有固定的格式, 通信双方只需按约定的帧格式来发送 和接收数据,所以硬件结构比同步通信方式简单;此外它还能利用校验位检测错误。帧格式的一般形式是先用一个起

45、始位“0表示字符的开始,然后是数据位,其后是奇偶校验位,最后是停止位,用以表示字符结束。2、某异步通信接口按方式 3 传送,其每分钟传送 3600 个字符,计算其传送波特率。 答:设每个字符由 1个起始位、 8 个数据位、 1个可编程位和 1 个结束位组成,其传送波特率为:11b x 3600/60s=660bps3、80C51 单片机的串行口由哪些根本功能部件组成?答:80C51单片机的串行口根本功能部件主要有:两个数据缓冲存放器SBUF 个串行口控制存放器SCON个输入移位存放器。4、 80C51 单片机的串行口有几种工作方式?几种帧格式?如何设置不同方式的波特率?答:80C51单片机的串

46、行口有四种工作方式,由串行口控制存放器中的SM0 SM1控制。80C51单片机的串行通信有 8位、10位、11位三种帧格式。波特率设置: 4种工作方式波特率的计算方法不同,其中方式0和方式 2的波特率是固定的,方式 1 和方式 3 的波特率是可变的,均由定时器 T1 的溢出率控制。具体计算如下:方式0:波特率固定为时钟频率的1/12,不受SMO啲影响。SMO场波特率倍增位方式1的波特率=2SMOD32 X定时器T1的溢出率方式 2 的波特率 =2SMO/D64 x fosc方式3的波特率=2SMO/32 X定时器T1的溢出率5、 为什么定时器 T1 用作串行口波特率发生器时,常采用工作方式2?

47、 答:在串行通信中,收发双方对发送或接收的数据速率即波特率要有一定的约定。串口有四种 工作方式,其中方式 0和方式 2 的波特率是固定的,而方式 1 和方式 3 的波特率是可变的,有定时器T1的溢出率控制。定时器 T1用作串行口波特率发生器时,因为工作方式2是自动重装载方式,因而定时器T1作波特率发生器常采用工作方式2.6、定时器T1设置成方式2,用作波特率发生器,系统时钟频率为24MHz求可能产生的最高和最低的波特率是多少?答:最高波特率: TH1=0FFH TL1=0FFH波特率 最高=2/32 X 24M/ 12X最低波特率:TH1=00H TL仁00H波特率最低=1/32 X 24M/ 12X 256- 0bps=244bps9、 串行口异步通信时,ASCII码“3的字符格式10位如何?答:串行口异步通信时,10位的数据帧结构为: 一个起始位0,8个数据位先低位后高位, 一个停止位1。故ASCII码“ 3 的字符格式为:0110011001B。10、 假设选用定时器 T1作波特率发生器,设 fosc=6MHz,计数初值为OFDH SMOD=,1求波特率是 多少?答:假设选用定时器T1作波

温馨提示

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

评论

0/150

提交评论