版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单片机C语言实践教程 习题及答案(雷建龙版)第一早一、填空题:.计算机中数据的存放是以字节 为单位的(用BYTE 表示可简写为B),IB=位,1KB=1024B。.微处器由CPU、存储器、I/O接口 三部分组成...计算机的系统总线有地址总线 、数据总线、 控制总线。.如果80C51单片机晶振频率为12MHz,则时钟频率为 12MHz、机器周期为IMS5.80C51单片机复位的条件是RST(9脚)输入2个机器周期以上宽度的正脉冲,复位方法一般采用上电复位和按键复位两种方法,复位后PC的值为() ,P0——P3口的值为Oxff.6.一个机器周期等于6个状态周期,振荡脉冲12分频后产生的时序信号的周期定义为机器周期。二、选择题:1、以下不是构成单片机的部件有(D)A微处理器(CPU)、B存储器C接口适配器(I\O接口电路)D打印机2、下列不是单片机总线的是(D)A地址总线 B控制总线C数据总线 D输出总线3、关于MCS-51的时钟问题,以下说法正确的是(B)A晶振频率=机器频率 B12*晶振周期=机器周期 C所有指令周期=机器周期D12*状态周期=机器周期4、关于PC寄存器,以下说法正确的是(C)A可以对PC直接读写B单片机复位后PC指向RAM的0000HC单片机复位后PC指向ROM的0000HD执行完一条指令后PC自动减15、MCS-51系统中,若晶振频率8MHz,一个机器周期等于(A )usA1.5B3C1 D0.5三、回答题:.单片机主要用途是什么?列举你所知道的目前应用较为广泛的单片机种类。控制。51系列;MC(摩托罗拉)系列;….计算机字长的含义是什么?8051单片机的字长是多少?字长是指计算机处理数据的位数,即数据总线的宽度或数据总线的条数。8051字长为8位。.请介绍单片机的应用领域.并举一个具体例子,说明单片机在其中所起的作用.如家电。在带电脑的电热水器中,电脑其实是一片单片机,它控制热水器的加热开关。.请说明单片机的主要特点.易于产品化,具有优异的性能价格比集成度高、体积小、可靠性高实时性强
低电压、低功耗.请说明当今单片机发展的方向有那些.(1)面对不同的应用对象,不断推出适合不同领域要求的,从简易性能到多全功能的单片机系列。(2)大力发展专用型单片机。(3)致力于提高单片机的综合品质。.单片机与通用微机有什么异同?都有CPU、存储器、IO接口。但单片机将它们集成在一块芯片中,而通用微机是分开的。.请画出单片机组成的结构框图,并加以说明.图1.6图1.6单片机结构框图所谓的单片微控制器一即单片机,它的外表通常只是一片大规模集成电路芯片。但在芯片的内部却集成了中央处理器单元(CPU),各种存储器(RAM、ROM、EPROM、E2PR0M和FlashROM等),各种输入/输出接口(定时器/计数器、并行I/O、串行I/O以及A/D转换接口等),等众多的功能部件。因此,一片芯片就构成了一个基本的微型计算机系统。8、80C51单片机复位后的状态如何?复位方法有几种?画出常用的两种复位电路.通过复位,单片机就将进入初始状态,从第一条指令开始运行。上电复位和按键复位。上电复位jr小子谭fcl!.±=.2_±ztJ_J-ZIJ-J-Hzszi-aLJ:_JL-i_fl.-lz5按键复位上电复位jr小子谭fcl!.±=.2_±ztJ_J-ZIJ-J-Hzszi-aLJ:_JL-i_fl.-lz5按键复位复合复位图2.10单片机的复位电路图9、在89c51单片机应用系统中而/Vpp引脚如何连接?为什么?接高电平。因为8051要选择内部程序存储器。10、什么是时钟周期?什么是机器周期?什么是指令周期?89C51CPU机器周期与时钟周期是什么关系?如果晶振频率为12MHz,则一个机器周期是多少微秒?是钟周期即为单片机时钟的周期,它等于晶振的振荡周期。机器周期是单片机运行一个基
本操作的时间。指令周期是单片机运行一条汇编指令的时间。89C51的机器周期等于12个时钟周期。如果外接晶振为12MHz时,振荡周期=1/12us品=12/以机器周期=1us11、请说明复位电路的作用.复位电路的作用是使单片机恢复到初始状态,即使它从0地址处开始运行。12、请说明单片机运行的基本过程.单片机运行的基本过程如下:(1)从存储器中取出下一条要执行的指令(取指)(2)对取出的指令进行识别(译码)(3)指挥运算器运算或控制数据传送(指挥)13、请画出单片机最小系统.C2T33pX1U1+5VC1
王
4u719►XTAL1CRYSTAL18XTAL2RSTPO.O/ADOPO.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD739363534~3332R1610k2930Z1C2T33pX1U1+5VC1
王
4u719►XTAL1CRYSTAL18XTAL2RSTPO.O/ADOPO.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD739363534~3332R1610k2930Z177T57gPSENALEEAP2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A1521~22_亘至26亘"28P1.0P1.1P12P1.3P1.4P1.5P1.6P1.7P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INTTP3.4/T0P3.5/T1P3.6WRP3.7/RD10
五亘14运正77AT89C5114、根据你的理解,请说明单片机系统制作的过程.根据电路图制作硬件;编写相应程序并调试;将程序下载到单片机中;上电运行。四、补充习题1、计算机中最常用的字符信息编码是(A)。(A)ASCII(B)BCD码(C)余3码 (D)循环码2、十六进制数7的ASCII码是(A)。(A)37 (B)7 (C)07 (D)473、在计算机中,字符的编码普遍采用的是(D)。A.BCD码B.十六进制C.格雷码D.ASCII码4、将下列各二进制数转换为十进制数。①U010101B②U0100UB③101010UB@10111101611010101B=21311010011B=21110101011B=1895、将下列各数转换为二进制数。①215D②253D③010000UBCD©00101001BCD215=110101116253=11111101801000011BCD=101011B00101001BCD=11101B6、已知原码如下,写出其反码和补码(其最高位为符号位)。①[X]原=01011001B②[X]原=00U1110B③原=U0U011B④[X]原=U11UOOB①[X]反=10100110:[X]补=01011001②[X]反=11000001;[X]补=00111110③[XI反=10100100;[X]补=10100101④[X]反=10000011;[X]补=100001007、当微机把下列数看成无符号数时,它们相应的十进制数为多少?若把它们看成是补码,最高位为符号位,那么它们相应的十进制数是多少?①10001110B②10110000B③OOOIOOOIB@01110101B当将它们看成无符号数时:(D10001110B=142;@10110000B=176;③00010001B=17;@01110101B=117当把它们看成补码,最高位为符号位时,它们相应的十进制数为:(D10001110B②10110000B③00010001B©OlllOlOlB-1145—80;17;117第二章一、填空题1、MCS-51片内 20H2FH范围内的数据存储器,既可以字节寻址又可以位寻址.80C51在物理有 4 个独立的存储空间。2、MCS-51型单片机的ROM寻址范围为0000-FFFFH,外RAM的寻址范围为0000-FFFFH,内部RAM低128B区可分为寄存器组区、位寻址区、用户RAM区三部分,高128B单元又称为特殊寄存器区,其中字节地址具有能被8整除特征的可进行位寻址。3、MCS-51有_4一个并行I、O□,其中P0~P3是准双向口,所以由输出转输入时必须先写入“1”4、P0口要能输出高低电平,必需外接上拉电阻.5、8051的几个端口中只有上口只作为通用IO口,其它几个端口都具有第二功能.6、P0口第二功能是 数据总线 和地址总线的低8位 .7、P2□的第二功能是 地址总线的高8位.8、P3□的第二功能中,与串行通信相关的引脚是P3.0(RXD)和P3.1(TXD);与中断相关的是P32INT0)和P3.3(INT1):与定时器相关的是P3.4(T0)和P3.5(T1):与扩展存储器相关的是P3.6(丽)和P3.7(而).二、选择题1、程序存储器的选通信号是(C)A.WRB.ALEC.PSEND.RD2、MCS-51系列单片机存储器主要分配特点是(AD)AROM和RAM分开编址 BROM和RAM统一编址 C内部ROM和外部ROM分开编址 D内部ROM和内部RAM统一编址3、如某存储器,地址线为A0-A10,数据线为D0-D7,则存储量为(A)A2KBB1KBC2KbitD1Kbit4、不具有第二功能的端口是(B)AP0BPlCP2DP35、不能输出高低电平的端口是(A)A P0 B Pl C P2 D P3TOC\o"1-5"\h\z6、数据总线是下列哪个端口(A)A P0 B Pl C P2 D P37、地址总线的高8位是哪个端口£)A P0 B Pl C P2 D P38、STC单片顶机程序下载使用的端口是(D)A P0 B Pl C P2 D P3三、问答题1、80C51单片机的存储器的组织采用何种结构?存储器地址空间如何划分?各地址空间的地址范围和容量如何?在使用上有何特点?8051采用哈佛结构,即RAM与ROM分开编址。从逻辑上可分为片内RAM、片外RAM和内外统一编址的ROM。内部RAM地址从00H—7FH,共128字节;外部RAM地址从0000H—FFFFH,共64K:ROM地址从0000H—FFFFH,共64K,而实际上8051内部ROM地址从0000H-0FFFH,共4K。在使用上通过不迥的寻址指令来访问不同的存储区.2、假设某CPU含有16根地址线,8根数据线,则该CPU最多寻址能力是多少KB?寻址能力是由地址线的位数决定的。16根地址线可访问的最大地址数为:2i6=64K。3、89C51CPU复位后内部RAM各单元内容是否改变?89C51复位后内部RMA各单元内容全部清零。4、8051单片机存储器的组织结构是怎样的?8051单片机存储器采用哈佛结构,即将数据存储器与程序存储器分开编址,这样即使访问同样的地址,它们也不会冲突。数据存储器又分为内部RAM(00H-7FH,即128B)和外部RAM(00000H-FFFFH,即64K):片内外程序存储器统一编址,地址从00000H-FFFFH,即64K.5、片内数据存储器分为哪几个性质和用途不同的区域?
片内数据存储器分为工作寄存器区,地址从00H-1FH共32个字节;位寻址区,地址20H-2FH共16B;用户RAM区,地址从30H-7FH,是用来存储用户临时数据用。6、在8031扩展系统中,外部程序存储器和数据存储器共用16位地址线和8位数据线,为什么两个存储空间不会发生冲突?因为51单片机采用的是哈佛结构,即程序存储器与数据存储器分开编址,故不会冲突。在硬件上,8031选择外部数据存储器使用的是标和丽两个信号;而选择外部程序存储器使用的是PSEN;在软件上访问外部数据存储器与访问程序存储器的指令也不要样。7、80C51单片机的P0-P3□在结构上有何不同?在使用上有何特点?P0输出为漏极开路形式,即它不能输出高电平,复位是为高阻状态,要输出高电平需要接上位电阻。P1为准双向端口;P0、P2、P3都有第二功能。它们在作为普通IO□输入时,必需先写“1”,使输出管截止,然后才能读入端口状态,否则可能读入错误的信息。8、P3口的第二功能是什么?见一6。9、复位后各端口的状态是怎样的?复位后各端口的状态是0XFFH,即各引脚为高电平,P0□为高阻状态。10、为什么在单片机直接外接LED时,要让电流流入而不是流出单片机引脚?因为单片机长于控制,而不是驱动,让电流流出单片机,则驱动电流由单片机提供,电流过大可能造成单片机工作不稳定;而让电流流入单片机,则驱动电流由外部提供,只要电流不是太大,不会影响单片机的工作。11、以P1口为例,说明单片机是怎样输出高低电平的.P1口具有输出、读引脚、读锁存器三种工作方式。图4.1P1口引脚的内部结构输出时: D端=1-*0=OfV截止图4.1P1口引脚的内部结构D端=0fQ=1-*V导通fPl.n=0读引脚时:Pl.n一读引脚三态门控制信号”读引脚”为1,打开三态门1,引脚的状态进入内部总线.读锁存器:读锁存器控制信号"读锁存器”为1,打开三态门,锁存器Q端状态通过三态门2进入内部总线.场效应管V的状态会影响Pl.n的状态:四、编程题1、请编写一程序将P1□的输出变为低电平.#include<reg5l.h>main()(Pl=0x00;while(l);2、请编写一程序读入Pl□的状态.
#include<reg5l.h>main()unsignedcharab;Pl=OxFF;ab=Pl;while(l);五、补充习题1、设计一个交通信号灯的检测报警电路。当信号灯正常工作时,红、黄、绿三个灯中只有一个灯亮,其余两灯灭,否则说明信号灯发生故障,此时应发出报警信号。用与非门实现。用R、Y、G表示红、黄绿灯的状态,亮为“1”,来为“0”;用L表示报警信号,报警为“1”,不报警为“0”.真值表如下:RYGL00010010010001111000101111011111赶写卡诺图:000111100101010111L=RGY+RG+RY+YG故=RGY+RG+RY+YG逻辑电路图如下图所示:2、用“与非”门组成下列逻辑门:(1)“与或”门(1)“与或”门Y^ABC+DEF.*Y=ABC+DEF=ABC+DEF=ABC・DEFFF(2)"或非"门Y=A+B+CY=A+B+C=ABC=ABC3、写出图4.123、写出图4.12所示两图的逻辑式。(a) (b)图412逻辑图(a)y=AB+AB (b)r=AC»BC第三章一、填空题1、Proteus软件具有仿真和PCB设计 两大功能.2、Proteus软件可以和 KeilC 软件联合仿真单片机,让程序在 KeilC运行,而运行的结果在 Proteus 中显示.3、Proteus软件中寻找元件时,电阻的符号是res ,电容的符号是 cap ,发光二极管的符号是led .数码管的符号是7seg.
二、选择题1、Proteus软件能仿真的单片机有(ABC)APICB8051CAVRDDSP2、、Proteus软件中的虚拟仪器有(ABCD)A示波器B信号发生器C逻辑分析仪D指示灯3、下列哪些方法仿真单片机是可行的(ABC)A直接将程序装载到Proteus软件的单片机运行;B直接在KeilC软件中运行程序;C在Proteus软件中建立电路,在Proteus软件中运行程序;D画好电路图后,点击运行按钮,就可在Proteus软件中运行程序了.三、操作题1、请用Proteus画出单片机最小系统的电路图,并仿真实现使Pl□输出为低电平.+5VA►XTAL1XTAL2RST6R110k12345678PSENALEEAPO.O/ADOPO.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6+5VA►XTAL1XTAL2RST6R110k12345678PSENALEEAPO.O/ADOPO.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/1NT0P3.3/1NTTP3.4/T0P3.5/T1P3.GWRP3.7/RD#include<reg51.h>main()(Pl=0x00;whiled);)将上述程序编译成.hex文件,下载到上述电路中,按运行键即可。2、在P0口外接8个LED,请画出电路图,并仿真实现点亮这8个发光二极管.
D7D8^^^D-GREENR15100RU1►XTALIXTAL2PSENALEEAPO.O/ADOP0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P06AD6P0.7/AD7P2.0/A8P2.1/A9P22A10P23'A11P2.4/A12P23/A13P2&A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3丽TTP3.4/T0P3.5/T1P3.&WRP3.7/RD璃FIFgFI-HfFI-HfRf-D9R16100R~D7D8^^^D-GREENR15100RU1►XTALIXTAL2PSENALEEAPO.O/ADOP0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P06AD6P0.7/AD7P2.0/A8P2.1/A9P22A10P23'A11P2.4/A12P23/A13P2&A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3丽TTP3.4/T0P3.5/T1P3.&WRP3.7/RD璃FIFgFI-HfFI-HfRf-D9R16100R~n9~ED-YELLOWD1CTD11D1100RLED-REDR10LED-GREElfboR~~R11100R.ED-YELLOWR12DI3LED-RED
_—1'□14^^ED-YELLOW■J.ILED-RED100RR13100R,R14100RAT89C51#include<reg5l.h>main(){P0=0x0();while(l);}将上述程序编译成.hex文件,下载到上述电路中,按运行键即可。3、制作点亮8个发光二极管的电路,并将程序下载到单片机中,实现这一功能.第四章一、填空题1、C51扩展的数据类型有: bit、sbit、sfr、sfrl6.2、用C51编写单片机程序,与用ANSIC编写程序的不同之处是,需要根据单片机结构及内部资源,定义相应的存储 类型和变量。3、C51变量定义的四个要素是一存储种类、数据类型、存储类型、变量名.4、sfr定义特殊功能寄存器SFR的地址,例如:sfrP0=0x80; 〃定义P0口 地址为80Hsfrl6DPTR=0x82;〃定义DPTR的 地址 为82H5、bitdoor=0; 〃定义一个叫door的 位变量且初值为().6、下列是一个子函数:bittestfunc(bitflagl9bitflag2){ /*flagl和—为bit类型的参数*/return(flag); /*flag是bit 类型的返回值*/}7、51系列单片机有三个逻辑存储空间: 内部RAM、外部RAM、ROM.数据可任意存储到其中某一存储器中。8、CODE区是用来存放可执行代码的存储区,用16位寻址空间可达一^]£代码段,是只读的.常数,如汉字字库常放在此区存储,但承或一般不能存储于此区域.9、data区是8051内128字节的内部RAM或8052的前128字节内部RAM存储区。访问data区比访问xdata区要快。通常我们把使用比较频繁的且或存储在data段中,但是必须节省使用data段,因为它的空间毕竟有限。10.另外一个子段叫做位寻址段bdata,包括16个字节,共128位,每一位都可单独寻址。11、xdata区存储空间为64K,和CODE区一样采用16位地址寻址称作外部数据区.这个区通常包括一些RAM,如SRAM或一些需要通过总线接口的外设.使用频繁的数据应尽量保存在data区中。12、switch-case语句的执行过程是:首先计算表达式的值,并逐个与case后的常量表达式的值相比较,当表达式的值与某个常量表达式的值相等时,则执行对应该常量表达式后的语句组,再执行break语句,跳出switch语句的执行,继续执行下一条语句。如果表达式的值与所有case后的常量表达式均不相同,则执行default后的语句组。二、选择题1、以下哪些是单片机扩展的数据类型(B)Abdata;Bbit;Ccode;Ddata2、以下哪个与其它三个语句的意义不同(D)AsbitCY=0xD7;BsfrPSW=OxDO;sbitCY=PSWA7;CsbitCY=0xD0A7;DsbitCY=0xD03、以下不正确的说法是(D)A用sbit定义的位变量,必须能够按位操作,而不能够对无位操作功能的位定义位变量。B用sbit定义位变量,必须放在函数外面作为全局位变量,而不能在函数内部定义。C用sbit每次只能定义一个位变量。D用sbit定义的是一种绝对定位的位变量(因为名字是与确定位地址对应的),具有特定的意义,在应用时能像bit型位变量那样随便使用。4、以下不正确的说法是(D)A位变量不能定义成一个指针,原因是不能通过指针访问“bit”类型的数据.如定义“bit*ptr;”是非法的。B不存在位数组,如不能定义bitSHOW.BUF[6].C在位定义中,允许定义存储类型,位变量都被放入一个位段,此位段总位于51单片机片内的RAM中,因此存储器类型限制为data、bdata、idata、pdata和xdata。如果把位变量的存储类型定义为其他存储类型,将导致编译出错。D值得注意的是,使用中断禁止(#pragmadisable)或包含明确的寄存器组切换(usingn)的函数不能返回位值,否则编译器会给出一个错误信息。5、C-51的包含的头文件有(ABCD)Areg51.h;Bmath.h;Cabsacc.h;Dintrins.h6、关于switch-case语句,下列不正确的是(B):A各个case及default出现的次序,不影响执行的结果。各个情况的地位相同。BBreak语句可以省略.C每一case的常量表达式必须互不相同,以免造成混乱。DBreak语句不可少。否则,不会退出,而会继续执行后面的case语句。7、以下不是循环结构的是(C)Awhile结构;Bdowhile结构;Cif语句;Dfor语句8、在一个函数中调用另一个函数需要具备如下条件(ABCD):A被调用函数必须是已经存在的函数(库函数或者用户自己已经定义的函数。B如果函数定义在调用之后,那么必须在调用之前(一般在程序头部)对函数进行声明。C如果程序使用了库函数,则要在程序的开头用#include预处理命令将调用函数所需要的信息包含在本文件中。D如果不是在本文件中定义的函数,那么在程序开始要用extern修饰符进行函数原型说明。三、编程题1、修改程序试改正下列程序(直接改)要示编写一段程序从P1□输出数据#include<reg5l.h>main(){ehafHwnsiencdchar;unsiinedintb;while(l)(for(a=0;a=<=255;a++)Pl=a;for(b=0;b<50000;b++);〃延时})I2、完善程序(在空中加入适当的语句)1)以下是计算100以内自然数的和的程序main()(unsignedinta,sum=0 ;for(;a<=100;a++)sum+=a;while(l);)2)、以下是计算100以内自然数的和的程序main(){inta=0 ,sum=0;for(;a<=100;)sum+=a;a++ ;)whiled);)3、编写程序1)试用while循环编写一段延时程序;voiddelay(void)(unsignedinta;a=0;while(a<50000)a++;)2)试用for循环编写一段延时程序;chardelay(chark){unsignedinta,b;for(a=0;a<k;a++)for(b=0;b<4000;b++);return0;}3)试编写一主程序及一子程序。子程序为有形参的延时程序,主程序调用子程序实现延时,时间到后使PL0输出低电平。#include<reg51.h>chardelay(chark)(unsignedinta,b;for(a=0;a<k;a++)for(b=0;b<4000;b++);return0;}main()(delay(200);Pl=0xfe;while(l);
4)编制一个循环闪烁的程序。有8个发光二极管,每次其中某个灯闪烁点亮10次后,转到下一个闪烁1()次,循环不止。画出电路图。XTAL1XTAL2RSTAT89C51V+5VPSENALEEAPO.O/ADOP0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7XTAL1XTAL2RSTAT89C51V+5VPSENALEEAP2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDpa.a/ifTfdP3.3/ifTnP3.4/TDP3.5/T1P3.aWRP3.7/RD#include<reg5l.h>#include<intrins.h>delay。(unsignedinta;for(a=0;a<20000;a++);}main()(unsignedcharc,b,i;while(l)(c=Oxfe;for(b=0;b<8;b++){for(i=0;i<10;i++){PO=c;delay();PO=Oxff;delay();)c=_crol_(c,l);delayO;delay();delay();delay。;delayO;})}5)利用89C51的Pl口控制8个发光二极管LED。相邻的4个LED为一组,使2组每隔0.5S交替发光一次,周而复始。试编写程序。#include<reg51.h>delay()(unsignedinta;for(a=0;a<35000;a++);}main()(while(l){Pl=OxfO;delay。;Pl=OxOf;delay。;D7P3.7/RDP3.6WRP3.5/T1P3.4710P3a,iNTrP3.2/INTDP3.1/TXDP3.0/RXDP1.7P16PI.5PI4PI.3PI.2P1.1D7P3.7/RDP3.6WRP3.5/T1P3.4710P3a,iNTrP3.2/INTDP3.1/TXDP3.0/RXDP1.7P16PI.5PI4PI.3PI.2P1.1P1.0①i=i=i=2132t=i=i=、P2.7/A15P2.6/A14P2.5/A13P2.4/A12P2.3/A11P2.2/A10P2.1/A9P2.0/A86ALEPSEN.ED-GREENR15LED-REDP0.7-AD7P0.&AD6P05AD5P0.4/AD4P0.3/AD3P0.2/AD2P0.1/AD1PO.O/ADORSTXTAL2XTAL111819AT89C516)试编制一跑马灯程序.要求控制Pl口所接的8个LED从两头向中央汇合.电路如上题所示。程序如下:#include<reg51.h>#include<intrins.h>unsignedchard[]={0x7e,0x3c,Ox18,0x00);delay()(unsignedinta;for(a=0;a<40000;a++);)main(){unsignedcharb;while(l)《for(b=0;b<4;b++){Pl=d[b];delay。;}Pl=Oxff;delay。;7)有如图所示电路,当开关SO闭合时,LEDO亮,…开关S7闭合时,LED7亮。其他情况下LED全灭,任一时刻只能有一个LED亮。要求用switch/case语句。图4.22习题3(7)电路图#include<reg51.h>main()(unsignedchark;while(1)//建立死循环(k=Pl&Oxff;〃读取Pl□的值,即开关的状态switch(k){case0xfe:P3=0xfe;break;//S0按下case0xfd:P3=0xfd;break;//Sl按下caseOxfb:P3=Oxfb;break;//S2按下?case0xf7:P3=0xf7;break;//S3按下case0xef:P3=0xef;break;//S4按下case0xdf:P3=0xdf;break;//S5按下case0xbf:P3=0xbf;break;//S6按下case0x7f:P3=0x7f;break;//S7按下default:P3=0x熊break;〃其它情况,全灭)8)如图所示电路,试用do…while循环编写一段程序,当P3.0闭合时,P1口的LED0-LED7闪烁,当断开时,全灭。图4.23习题3(8)对应电路图#include<reg5l.h>main(){unsignedinti;while(l){while((P3&0x01)==0)〃读取出P3.0的引脚状态(Pl=0x00;for(i=0;i<5000;i++);Pl=0xFf;for(i=0;i<5000;i++);}Pl=OxOff;9)综合练习在PO口接有8个发光二极管,试分别编写程序实现以下功能:①测试P1□的电平,若为低则相应的发光管亮;②8个发光管亮一会,灭一会,即不断闪烁。③2个发光管从右向左运动。要求画示出电路图及编写程序的流程图。①#includeMreg5Lhnmain()(chark;while⑴〃死循环k=Pl&Oxff;〃读取Pl的状态PO=k;)②#includeMreg51.hHmain()(unsignedinti;
while⑴〃死循环P0=0x00;for(l=0;i<5000;i++);P0=0xfT;for(i=0;i<5000;i++);))③#include<reg5l.h>#include<intrins.h>main()(unsignedinti;unsignedcharj,a;while(l)(a=0x3f;fora=0;j<4;j++)(P0=a;for(i=0;i<40000;i++);a=_cror_(a,2);}}V54321090}rl/46q图窿/ADADE馅s"76s4视2227/&5/4/3/Z1.W»2»2»2»2»2»2ppaQaaaoaopppppppplpppppp四、制作练习在已有的跑马灯电路板上,再制作交通灯.当SI按下时,东西向通行;S2当SI按下时,东西向通行;S2按要求:1、画出电路图;2、画出程序流程图;3、列出程序清单(详细注释);4、制作交通灯演示系统;5、将程序下载到单片机中,通电观察结果是否正确.解:1、AT89C513、#include<reg51.h>main()(unsignedinti;charaj,k;while(l)(Pl=Oxff;a=Pl;k=a&OxcO;switch(k)(case0x40:Pl=0x21;break;case0x80:Pl=0x0c;break;default:(Pl=0x21;for(j=0;j<120;j++)for(i=0;iv50000;i++fPl=0xI2;for(j=0;jv6;j++)for(i=0;i<50000;i++);Pl=OxOc;for(j=0;j<240;j++)for(i=0;i<50000;i++);Pl=0xl2;for(j=0;j<6;j++)for(i=0;i<50000;i++);break;})}第五章一、填空题1、中断是指在突发事件到来时先中止现在 的工作,转而去处理突发事件。待处理完成后,再返回到原来 的工作处,继续进行随后的工作。2、引起突发事件的来源称为 中断源 :中断源要求服务的请求称为中断请求;对中断请求提供的服务称为中断服务;中断管理系统处理事件的过程称为 中断处理.3、外部中断。可由ITO(TCON.O选择其为低电平有效还是负边沿有效。当CPU检测到P3.2引脚上出现有效的中断信号时,中断标志lEO(TCON.l)置-1,向CPU申请中断。4、CPU对中断系统所有中断以及某个中断源的开放和屏蔽是由中断允许寄存器IE控制的。中断允许寄存器中:EXO(IE.O),是外部中断() 允许位:EXKIE.2),是外部中断1允许位;EA(IE.7),CPU中断总中断允许位。以上各位为1时,允许相应的中断,为时禁止相应的中断,其中,EA 为中断的总开关。5、8051单片机有」 个中断优先级,即可实现2级中断服务嵌套.每个中断源的中断优先级都是由中断优先级寄存器IP 中的相应位的状态来规定的。中断优先级寄存器中:PXO(IP.0),是外部中断() 优先级设定位:PX1(IP.2),是外部中断1优先级设定位:上面各位为1时,是高优先级,为J时为低优先级。6、进入中断服务是单片机自动安排的,如进入前会保存中断处断点地址 及其它重要信息。进入中断服务程序后则执行相应的服务程序,执行完后还要恢复原来的中断地址 及重要信息,然后返回到 中断处断续执行原来的程序。7、中断响应时间即从发出中断请求到中断响应的时间,这一时间不长,一般为1―8个机器周期。8、中断响应过程就是自动调用并执行 中断的过程。C51编译器支持在C源程序中直接以函数形式编写中断服务程序。常用的中断函数定义语法如下:void函数名()interruptn其中n为中断号,C51编译器允许0〜31个中断,标准8051,n取值范围是川-40二、选择题1、8051单片机的中断优先级有三条原则(ABD):ACPU同时接收到几个中断时,首先响应优先级别最高的中断请求。B正在进行的中断过程不能被新的同级或低优先级的中断请求所中断。C正在进行的中断过程在中断服务程序结束前不能被中断.D正在进行的低优先级中断服务,能被高优先级中断请求所中断。2、中断响应条件是(D)A中断源有中断请求;B此中断源的中断允许位为1;CCPU开中断(即EA=1)。D同时满足上述条件时,CPU才有可能响应中断。3、以下寄存器中与中断无关的寄存器是:CAIP;BIE;CTMOD;DTCON8051单片机有(C)个中断源。A.2 B.3 C.5 D.325.8051能进行(A)级中断嵌套。A.2 B.3 C.5D.328051中断响应时间为(C)。A.3个机器周期 B.8个机器周期C.3〜8个机器周期D.07.要打开外部中断0需要进行的设置有(AC)0A.EA=1 B.EX1=1C.EXO=1D.EXO=O8.要同时打开定时器TO、T1的中断,并将TO设为高优先级中断,所要进行的设置有(BD)。A.IE=0 B.IE=0x8a C.IP=OxO2 D.IP=0x40三、问答题KMCS-51系列单片机能提供几个中断源、几个中断优先级?各个中断源的优先级怎样确定?在同一优先级中,各个中断源的优先顺序怎样确定?MCS-51系列单片机能提供5个中断源;2个中断优先级;各中断源的优先级通过中断优先级寄存器IP来确定。位76543210字节地址:B8HPSPT1PX1PTOPXOIP中断优先级控制寄存器IPPXO(IP.0),外部中断()优先级设定位;PTO(IP.1),定时/计数器T0优先级设定位;PX1(IP.2),外部中断()优先级设定位;PT1(IP.3),定时/计数器T1优先级设定位;PS(IP.4),串行口优先级设定位;上面各位为1时,是高优先级,为0时为低优先级。同一优先级中的中断申请不止一个时,则有中断优先权排队问题。同一优先级的中断优先权排队,由中断系统硬件确定的自然优先级形成,其排列如所示:表7.1各中断源响应优先级中断程序入口地址表中断源中断标志中断服务程序入口优先级顺序外部中断0(INTO)IE00003H高定时/计数器0(TO)TFOOOOBH外部中断1(WTO)IE10013H定时/计数器1(Tl)IF1001BH1串行口RI或TIOO23H低2、MCS-51有几个中断优先级?试通过修改IP寄存器,使串行口中断优先级最高,定时器T1的中断优先级最低。MCS-51有2个中断优先级。使串行口中断优先级最高,定时器T1的中断优先级最低。贝!hIP=00010000B=0xl0.3、MCS-51外部中断源有电平触发和边沿触发两种触发方式,这两种触发方式所产生的中断过程有何不同?怎样设定?1、电平触发中断可由ITO(TCON.O)、IT1(TCON.2)选择其为低电平有效还是下降沿有效。当ITO=O(当IT1=O)时,为电平触发方式。处理器每个指令周期查询中断引脚,当发现引脚电平为低时,触发中断.如果信号从1变为0,一个周期后又变为1,中断并不会被清除,直到中断执行完毕并用RETI指令返回之后2、边沿触发方式当IT0=l(当m=D时,为电平触发方式。当外部中断引脚电平由高向低变化时,将触发中断处理器.每个指令周期查询中断引脚,当前一个指令周期是引脚电平为高,紧接着下一个指令周期检测到引脚电平为低时,将触发中断.4、CPU响应中断请求后,不能自动清除哪些中断请求标志?CPU响应中断请求后,不能自动清除串行口产生的中断,即RI(SCON.O)或TI(SCON.l)需要手工清除。5、80C51有几个中断源?各中断标志是如何产生的?又是如何复位的?CPU响应各中断时,其中断入口地址是多少?80c51有5个中断源。INTO(P3.2).可由ITO(TCON.O)选择其为低电平有效还是下降沿有效。当CPU检测到P3.2引脚上出现有效的中断信号时,中断标志IEOCTCON.1)置1,向CPU申请中断。W门(P3.3).可由IT1(TCON.2)选择其为低电平有效还是下降沿有效。当CPU检测到P3.3引脚上出现有效的中断信号时,中断标志IEMTCON.3)置1,向CPU申请中断。以上两个中断源称作外部中断源,因为它们都是由外部输入的。3)定时器TO。TFO(TCON.5),片内定时/计数器TO溢出中断请求标志。当定时/计数器T0发生溢出时,置位TF0,并向CPU申请中断。4)定时器TLTF1(TCON.7),片内定时/计数器T1溢出中断请求标志。当定时/计数器T1发生溢出时,置位TFL并向CPU申请中断。5)串行通信。RI(SCON.O)或TI(SCON.1),串行口中断请求标志。当串行口接收完一帧串行数据时置位RI或当串行口发送完一帧串行数据时置位TL向CPU申请中断。前4个中断源在中断执行完后会自动复位。而RI(SCON.O)或TI(SCON.1)需要手工清除。中断入口地址是:中断源中断服务程序入口外部中断0(INTO)0003H定时/计数器0(T0)000BH外部中断1(INTO)0013H定时/计数器1(T1)001BH
串行口0023H四、编程题1、用中断控制的交通灯控制系统编写一交通灯控制程序.要求:正常情况下东西向通行60秒,黄灯转换3秒;然后南北向通行120秒,黄灯转换3秒,如此反复循环.如果有紧急情况,交警干预:按下S1时,强制南北向通行,而东西向停止通行;按下S2时,强制东西向通行,而南北向停止通行.实现方式:交警的干预使用中断的方式进行.仿真要求:在Proteus环境下建立电路图,在KeilC环境下输入程序;在KeilC环境下运行程序,在Proteus环境下观看运行结果.1)设计原理图;2)建立程序流程图;3)建立仿真环境;4)调试程序;1)PSENALEEA工QJ.2.34567P1P1P1P1P1P1P1P1R7PSENALEEA工QJ.2.34567P1P1P1P1P1P1P1P1R7图7.11交通灯电路图2)#include<reg51.h>voiddelay(unsignedint);main()(IE=0x85;//开中断:总中断及两个外部中断,等效于{EA=1;EXO=1;EX1=1;}TCON=OxOO;〃电平触发方式,等效于{IT0=0;ITl=0;}IP=0x04;//外中断0为低优先级,外中断1为高优先级,等效于{PXO=O;PX1=1;}while(l){〃正常运行的交通灯循环程序Pl=0x21;delay(800);Pl=0xll;delay(300);Pl=0x0c;delay(1600);Pl=0x0a;delay(300);))voidintO()interrupt0〃外中断0,中断号为0.Pl=0x21;〃强制东西通行delay(lOO);voidintl()interrupt2〃外中断1,中断号为2.Pl=0x0c;delay(lOO);〃强制南北通行voiddelay(unsignedintj)unsignedinti,k;for(k=0;k<j;k++)for(i=0;i<500;i++){;}2、如图所示电路,要求中断开关断开时,在LED条上显示你的学号(两位BCD码),中断开关闭合时,产生中断,显示P0口开关的状态的反码(接电源相应的LED亮;接地相应的LED不亮).并思考:1)中断过程是怎样的?2)如果要开关不断转换,能在显示学号与显示开关状态间I产一1swBW8F,而而囹/.13刁题四-2电筠囹 转换,程序该怎样编写?3)外部中断改为边沿触发,如何改?改后能实现原来的显示功能吗?为什么?#include,,reg51.hMvoiddelay(unsignedint);main()IE=0x81;TCON=OXOO;while(l)Pl=~0x03;delay(lOO);))voidinto()interrupt0{P1=~PO;delay(lOO);)voiddelay(unsignedintj)(unsignedinti,k;for(k=0;k<j;k++)for(i=0;i<500;i++){;}}1)每一机器周期检测INTO引脚状态,如果有低电平,则转到中断服务程序,显示学号,并且一直显示,直到开关断开;如果没有,则显示开关状态。TCON=OXOO;即设置:IT0=0,为电平中断。TCON=0X01;即设置:ITO=1,为边沿触发。这样只有转换一次,因为按下开关后产生一个负跳变。显示开关状态一次,之后回到显示学号状态.在上面的开关不断变换时,显示不能转换,因为这时负脉冲已经过去了.而如果设置:IT0=0,为电平中断时则一直可响应中断,能够显示上面开关状态的变化。3、如图所示中断嵌套实验中如果不用译码器,直接将数码管接到三个端口,要达到同样的效果,程序该如何编写?1)画出电路图;2)画出主程序及中断程序流程图;3)编写相应的程序.1)
|勰2畿第01234567po.po.|勰2畿第01234567po.po.敞popo.po.popo.U13)〃中断嵌套实验〃头文件引用include•,reg51.hH〃宏定义#defineucharunsignedchar#defineuintunsignedintucharcodeLED_CODES[]={OxcO,Oxf9,Oxa4,OxBO,0X99,0X92,0X82,0XF8,0X80,0X90);uintz=0;〃延时子程序voiddelay(uintk){uintij;for(i=0;i<100;i++)for(j=0;j<k;j++);)〃外部中断0响应程序voidintO()interrupt0(uchari;for(i=0xf0;i<0xfa;i++){Pl=LED_CODES[z];//Pl=i;delay(850);z++;P1=O;z=0;I〃外部中断1响应程序voidintl()interrupt2(uchari;for(i=0xf0;i<0xfa;i++){P2=LED_CODES[z];//P2=i;delay(850);z++;)P2=0;z=0;}〃主程序niain()(uchari;IE=0x85;〃开中断总开关及开外部中断0与1//EA=1;EXO=1;EX1=1;TCON=OxOO;〃外部中断为电平触发//IT0=0;ITl=0;IP=0x()4;〃外部中断0为低级中断,外部中断1为高级中断//PXO=O;PX1=1;while(l)(for(i=0;i<10;i++)(P0=LED_CODES[z];〃P0=i;deIay(850);〃延时1秒z++;}z=0;)}第六章一、填空题1、工作方式寄存器TMTD作用:用来确定两个定时器的工作方式。低半字节设置定时器_T0_»高半字节设置定时器T1.它的字节地址是89H,不能位寻址。2、GATE=1时,要用软件使TRO或TR1为1,同时外部中断引脚也为高电平时,才能启动定时/计数器工作。3、C/T:定时/计数模式选择位。=0为计数模式;=1为定时模式。4、M1M0:工作方式设置位。定时/计数器有U工作方式,由M1M0进行设置。5、TRI(TCON.6):定时器T1运行控制位。TR1置1时,定时器开始工作;TR1置0时,停止工作。TR1由软件置1或清()。所以,用软件可控制定时/计数器的启动与停止。TRO(TCON.4):定时器TO运行控制位,其功能与TR1类同。6、TH、TL是计数器的高8位和低8位,包括TH1、TL1(对应定时器T1)TH()、TL0(对应定时器T0).7、当定时器To工作在方式3 时,要占定时器T1的 TR1和TF1两个控制位.8.定时器在工作方式0时,计算定时器计数初值的公式中,M为小。二、选择题1、定时器的工作方式有(ABCD)A13位定时/计数方式;B16位定时/计数方式;CTO拆分为二个定时/计数器;D8位自动重装定时器/计数器.2、定时器T1常用作为串行通信的波特率发生器,此时,定时器工作在(2)A13位定时/计数方式;B16位定时/计数方式;C方式2;D方式3.3、计数器也要预装初值,初值是所要计数值的补数。故四种方式初值可按如下方法计算:X=M-计数值对于不同的工作方式,计数器位数不同,故最大计数值M也不同,方式2的M为:CAM=213=8192;BM=216=65536;CM=28=256;DM=210;4.将TO设定为计数方式,T1设定为定时方式,都工作在方式2,则设定方法是(A)。A.TMOD=Ox26B.TMOD=Ox22 C.TMOD=Ox66D.TMOD=OxOO.单片机晶振频率为6MHz,要求定时器工作在方式1,每10ms定时中断一次,则定时器的计数初值为(C).A.jt=2I3-5OOOB.a=2,6-10000 C.jc=2,6-5000D.jt=-5000.串行口的波特率发生器常采用下列哪个定时器,工作在哪种方式(B)。A.T1,方式1B.T1,方式2 C.T0,方式1 D.T0,方式2.门控位GATE=1时,要启动定时器T0的条件是(AC)。A.TRO=1 B.TR0=0 C.INTO=1 D.而5=0.(C)寄存器不能位寻址。A.IE B.IP C.TMOD D.TCON.TO工作在方式3时,要借用的T1的控制位有(AB)。A.TRI B.TFI C.TFO D.TR0三、问答题1、综述MCS-51系列单片机定时器0、1的结构与工作原理。8051定时器作定时和计数时,其计数脉冲分别由谁提供?结构与工作原理(略)8051定时器作定时器时,计数脉冲由内部提供;作为计数器时,由外部提供。2、8051定时器的门控信号GATE为1时,定时器如何启动?GATA=1时,要用软件使TR0或TR1为1,同时外部中断引脚也为高电平时,才能启动定时/计数器工作。即此时定时器的启动条件,加上了或引脚为高电平这一条件。3、如果系统晶振频率为12MHz,分别指出定时/计数器方式1和方式2最长定时时间。f„sc=12MHz,则TM=12/foSC=lUS.故:方式1时,最长定时时间为:2,6*Ttt=65536uS=6.5536mS;方式2时,最长定时时间为:28*1'机=256PS。4、定时/计数器工作于定时和计数方式时有何异同点?定时/计数器工作于定时器方式时,计数脉冲由单片机内部提供;而工作于计数器方式时,计数脉冲由外部提供,即T0由外部引脚T0输入,T1由外部引脚T1输入。5、当定时/计数器T。用作方式3时,定时/计数器T1可以工作在何种方式下?如何控制T1的开启和关闭?方式3只适用于定时/计数器T0,定时器T1处于方式3时相当于TR1=O,停止计数。工作方式3将T0分成为两个独立的8位计数器TLO和TH0。TH0+TF1+TRI组成的8位定时器,TL0+TF0+TR0组成的8位定时/计数器,T1组成的无中断功能的定时器。特点:方式3下T0可有2个具有中断功能的8位定时器。在定时器T0用作方式3时,T1仍可设置为方式0-2.四、编程题1、应用单片机内部定时器T0工作在方式1下,从P1.0输出周期为2ms的方波脉冲信号,已知单片机的晶振频率为6MHZO请(1)计算时间常数X,应用公式X=2"-t(f/12)(2)写出程序清单解:⑴Ttn=12/€^=2uS周期为2mS,则半周期为ImS;X=2'‘一t/T机=65536-1000/2=65036(2)#include<reg51.h>sbitP1O=P1AO;main()TMOD=0X01;TH0=65036/256;TL0=65036%256;EA=1;ETO=1;TRO=1;while(l);Ivoidpulse()interrupt1{ET0=0;PIO二〜PIO;TH0=65036/256;TL0=65036%256;ETO=1;}2、以定时器1进行外部事件计数,每计数1000个脉冲后,定时器I转为定时工作方式。定时10ms后,又转为计数方式。如此循环不止。设fo§c=6MHz,试用模式1编程。#include<reg5l.h>bitT=O;//T为0是为计数,为1时为定时。main(){TMOD=0X50;THl=(65536-1000)/256;TLl=(65536-1000)%256;EA=1;ET1=1;TR1=1;while(l);1voidpulse()interrupt3(T=~T;if(T)〃定时(ET1=O;TMOD=0X10;TH1=(65536-10000/2)/256;TL1=(65536-10000/2)%256;ET1=1;}else〃计数(ET1=O;TMOD=0X50;THl=(65536-1000)/256;TLl=(65536-1000)%256;ET1=1;}}3、设:fosc=12MHz,试编写一段程序,功能为:对定时器TO初始化,使之工作在模式2,产生200口s定时,并用查询T0溢出标志的方法,控制PL1输出周期为2ms的方波。#include<reg5l.h>sbitP11=P1A1;main(){unsignedT=0;TMOD=0X02;TH0=(256-200)/256;TL0=(256-200)%256;TRO=1;whiled)(while(!TFO);TR0=0;TFO=O;TH0=(256-200)/256;TL0=(256-200)%256;T++;TRO=1;if(T==5)(T=O;P11=^P11;})}4、利用定时/计数器TO从P1.0输出周期为1s,脉宽为20ms的正脉冲信号,晶振频率为12MHz.试设计程序。#include<reg5l.h>sbitP1O=P1AO;main()(unsignedT=0;TMOD=0X01;TH0=(65536-20000)/256;TL0=(65536-20000)%256;TRO=1;while(l){vvhile(!TFO);TR0=0;TFO=O;TH0=(65536-20000)/256;TL0=(65536-20000)%256;T++;TR0=l;if(T==l)(P10=0;}elseif(T==50)(T=O;P1O=1;}))方法二:中断法#include<reg5l.h>sbitP10=PlA0;unsignedT=0;main()(EA=1;ETO=1;TMOD=0X01;TH0=(65536-20000)/256;TL0=(65536-20000)%256;TRO=1;while(l);voidtime()interrupt1TH0=(65536-20000)/256;TL0=(65536-20000)%256;T++;if(T==l)(P10=0;)elseif(T==50){T=0;P10=l;})5、要求从PL1引脚输出1000Hz方波,晶振频率为12MHz。试设计程序。#include<reg5l.h>sbitP11=P1A1;main(){TMOD=0X01;TH0=(65536-500)/256;TL0=(65536-500)%256;TRO=1;EA=1;ETO=1;while(l);}voidpulse()interrupt1(P11=-P11;TH0=(65536-500)/256;TL0=(65536-500)%256;}6、试用定时/计数器T1对外部事件计数。要求每计数100,就将T1改成定时方式,控制P1.7输出一个脉宽为10ms的正脉冲,然后又转为计数方式,如此反复循环。设晶振频率为12MHzo#include<reg51.h>sbitP17=P1A7;bitT=O;//T为0是为计数,为1时为定时。main()P17=0;TMOD=0X50;THl=(65536-100)/256;TLl=(65536-100)%256;EA=1;ET1=1;TR1=1;while(l);}voidpulse()interrupt3{T=~T;if(T)〃定时{ET1=O;TMOD=0X10;TH1=(65536-10000)/256;TLl=(65536-10000)%256;P17=l;ET1=1;}else〃计数{P17=0;ET1=O;TMOD=0X50;THl=(65536-100)/256;TLl=(65536-100)%256;ET1=1;)}7、利用定时/计数器TO产生定时时钟,由Pl口控制8个指示灯。编一个程序,使8个指示灯依次一个一个闪动,闪动频率为20次/秒(8个灯依次亮一遍为一个周期)。#include<reg5l.h>#include<intrins.h>unsignedchara=Oxfe;main()TMOD=0X01;TH0=(・50000/8)/256;〃闪烁频率为20次/每秒,周期为0.05秒,即50毫秒。TL0=(・50000/8)%256;〃每一LED移动的间隔为50/8毫秒,设晶振频率为12M。EA=1;ET0=l;TR0=l;while(l);}voidtimerOOinterrupt1{ET0=0;TH0=(-50000/l)/256;TL0=(-50000/l)%256;Pl=a;a=_crol_(a,l);ETO=1;)五、制作题请完成以下制作任务:1、制作一包含8个跑马灯和6个3种颜色的交通灯的电路;2、编写控制跑马灯和交通灯同时运行的程序;3、画出程序流程图及电路图;4、下载并调试程序,实现两功能同时运行.#include<reg51.h>#defineledP0unsignedcharlist[]={0x7e,0x3c,0x18,0x00,0x18,0x3c,0x7e,0xff};unsignedcharX=0;unsignedcharTL=0;unsignedchari=0;unsignedchartimerl=120,timer2=6,timer3=240,timer4=6;unsignedchar*T=list;main(){EA=1;ETO=1;TMOD=0x01;TH0=(-10(M)0/2)/256;TLO=(-10000/2)%256;TR0=l;while(l);)voiddelay(unsignedintj)(unsignedinti,t;for(t=j;t>0;t«){for(i=0;i<250;i++)}voidint0()interrupt1(ET0=0;TR()=();TH0=(-10000/2)/256;TL0=(-10000/2)%256;TR0=l;ET0=l;switch(X)(case0:(X=X+1;led=*T;delay(50);i++;T++;if(i>7){i=0;T=Ust;}break;)case1:(unsignedinti;chara,k;X=0;Pl=0xff;a=Pl;k=a&0xc0;switch(k)case0x40:{Pl=0xde;for(i=0;iv5000;i++);〃加上此延时,可实现所需功能*/break;}case0x80:{Pl=0xf3;for(i=0;i<5000;i++);break;}default:{switch(TL)(case0:(Pl=0xde;timerl-;if(timerl==00)(timerl=120;TL++;}break;1{Pl=0xee;timer2-;if(timer2==00){timer2=6;TL++;)break;}(Pl=0xf3;timer3—;if(timer3==00)(timer3=240;TL++;)break;}{Pl=0xf5;timer4—;if(timer4==00)timer4=6;TL=O;}break;default:break;})})default:break;}D7U1AT89C51,:迥前a嚏嚏嚏T-HfR-HTD8D9R15R16R11IiiD1R10一R14+5V第七章一、填空题1、通信有并行 通信和串行通信两种方式。在多微机系统以及现代测控系统中信息的交换多采用串行通信方式。2、并行通信通常是将数据字节的各位用多条数据线同时进行传送.并行通信控制简单、传输速度遮 ;由于传输线较多,长距离传送时成本高且接收方的各位同时接收存在困难。3、串行通信是将数据字节分成一位一位的形式在1条传输线上逐个地传送。串行通信的特点:传输线少,长距离传送时成本低,且可以利用电话网等现成的设备,但数据的传送控制比并行通信复杂。4、串行通信又分为异步通信与同步通信。5、异步通信是指通信的发送与接收设备使用各自的时钟 控制数据的发送和接收过程。为使双方的收发协调,要求发送和接收设备的时钟频率 尽可能一致。6、异步通信是以字符(构成的帧)为单位进行传输,字符与字符之间的间隙(时间间隔)是任意的的,但每个字符中的各位是以固定的时间传送的,即字符之间是异步的(字符之间不一定有“位间隔”的整数倍的关系),但同一字符内的各位是同步的(各位之间的距离均为“位间隔”的整数倍)。7、同步通信时要建立发送方时钟对接收方时钟的直接控制,使双方达到完全同步。此时,传输数据的位之间的距离均为“位间隔”的整数倍,同时传送的字符间间隙,即保持位同步关系,也保持字符同步关系。8、奇校验时,数据中“1”的个数与校验位“1”的个数之和应为奇数;偶校验时,数据中“r,的个数与校验位,,1”的个数之和应为偶数。接收字符时,对“1”的个数进行校验,若发现不一致,则说明传输数据过程中出现了错误。9、比特率是每秒钟传输二进制代码的倍数,单位是:位/秒(bps)。如每秒钟传送240个字符,而每个字符格式包含10位,这时的比特率为:10位X240个/秒=2400bps10.波特率表示每秒钟调制信号变化的次数,单位是:波特(Baud),,波特率和比特率不总是相同的,对于将数字信号1或o直接用两种不同电压表示的所谓传输,比特率和波特率是相同 的。所以,我们也经常用波特率表示数据的传输速率。11、8051在串行口的结构上有两个物理上独立的接收、发送缓冲器SBUF,它们占用同一地址-99H;接收器是双缓冲结构;发送缓冲器,因为发送时CPU是主动的,不会产生重叠错误。通过对SBUF的读、写语句来区别是对接收缓冲器还是发送缓冲器进行操作。CPU在写SBUF时,操作的是发送 缓冲器:读SBUF时,就是读接收 缓冲器的内容。12、方式2和方式3中;当接收机的SM2=1时可以利用收到的RB8来控制是否激活RKRB8=0时不激活RI,收到的信息丢弃;RB8=1时收到的数据进入SBUF,并激活RL进而在中断服务中将数据从SBUF读走).当SM2=0时,不论收到的RB8为0和1,均可以使收到的数据进入SBUF,并激活RI(即此时RB8不具有控制RI激活的功能)。通过控制SM2,可以实现多机通信。在方式0时,SM2必须是1 。在方式1时,若SM2=L则只有接收到有效停止位时,RI才置1。13、方式。时,串行口为同步移位寄存器的输入输出方式。主要用于扩展并行输入或输出口。数据由RXD(P3.0)引脚输入或输出,同步移位脉冲由TXD(P3.1)引脚输出。发送和接收均为18位数据,低在先,高位在后。波特率固定为f。正“2。14、方式1是10 位数据的异步通信口。TXD为数据输出引脚,RXD为数据接收引脚,其中」 位起始位,8位数据位,1位停止位。15、方式2或方式3时为11大位数据的异步通信口。TXD 为数据发送引脚,RXD为数据接收引脚.方式2和方式3时起始位1位,数据9位(含1位附加的第9位,发送时为SCON中的TB8,接收时为RB8),停止位1位,一帧数据为11位。方式2的波特率固定 为晶振频率的1/64或1/32,方式3的波特率由 T1的溢出率决定。16、MCS-51串行接口有4种工作方式,这可在初始化程序中用软件填写特殊功能寄存器SCON加以选择.用串口扩并口时,串行接口工作方式应选为方式』.二选择题1、控制串行口工作方式的寄存器是(C)(A)TCON(B)PCON(C)SCON(D)TMOD2、MCS-51的中断允许触发器内容为83H,CPU将响应的中断请求是(??? )(A)T1,(B)TO,T1 (C)T1,串行接口 (D),T03、根据串行通信的传输方向,串行通信又分为(A、B、D)方式A单工;B半双工;C同步与异步;D全双工.4、串行通信的错误校验方式有(A、B、D)A奇偶校验;B代码和校验;C计算机校验;D循环冗余校验等。5、下列电平哪些是TTL电平(C、D)A逻辑“0”:+5V〜+15V;B逻辑“1”:-5V〜-15V;C逻辑“()”:OV;D逻辑“1”:+5V.6、必需用软件清除的中断标志是(B、C)ATFO;BRI;CTI;DIE0.7、以下公式中计算方式2的波特率公式是(B):A波特率=fosc/12B 波特率=(2SMOD/64) foscC 波特率=(2Smod/32) .(T1溢出率)D 波特率=(2SMOD/32) (TO溢出率)8、以下公式中计算方式3的波特率公式是(C).A.波特率=人“
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 增值税分录试题及答案
- 鲁班锁试题及答案
- 法律答案试题及答案
- HJ 784-2016 土壤和沉积物 多环芳烃的测定 高效液相色谱法-建筑规范、标准、图集
- 某煤矿厂安全生产操作细则
- 广西壮族自治区贺州市八步区2023-2024学年九年级上学期语文期中试卷(含答案)
- 2026年气道异物、外伤急救护理试题
- 四年级上册s版语文单元测试题及答案
- 高热护理试题及答案
- 师范类心理学试题及答案
- 雨课堂学堂在线学堂云《景观水文(北京林业)》单元测试考核答案
- GB/T 20854-2025金属和合金的腐蚀循环暴露在盐雾、“干”和“湿”条件下的加速试验
- 介入室规章制度及流程
- 华南师范大学《计算机程序设计(python)》2023-2024学年第一学期期末试卷
- 《自然语言处理》期末考试试卷附答案
- 高空作业车(剪叉式、曲臂式)验收表
- 安全生产培训教育管理制度
- (高清版)TDT 1037-2013 土地整治重大项目可行性研究报告编制规程
- JB T 6664.3-2004自吸泵 第3部分:自吸性能试验方法
- 日式收纳培训课件
- 采购基础知识培训课件
评论
0/150
提交评论