单片机技术及应用清华大学基础工业训练中心冯一兵2020年4月10日星期五2第一章单片机的基础知识第二章MCS-51单片机的初步认识第三章MCS-51的指令系统2020年4月10日星期五3第四章汇编语言程序设计第五章定时器/计数器第六章中断的基本概念第七章串行口的应用2020年4月10日星期五4第一章单片机的基础知识1.1微计算机与单片机单片机是计算机的一种。一台完整的计算机由硬件和软件共同组成。计算机的软件由各种程序组成,包括操作系统(如windows)和各种应用程序(如word),计算机的硬件由下列几个部份构成:CPU、存储器、外部设备及接口。单片机主要用于简单的数据采集和控制,原本的意思是将CPU、存储器和外设接口(I/O)集成在一个芯片(singlechip)上的处理器(Processor),后来的正式名称是微控制器(microcontroller)。因此在网上查找资料时,可以使用微控制器作为关键词查找。2020年4月10日星期五5单片微型计算机就是将CPU、RAM、ROM、定时/计数器和多种接口都集成到一块集成电路芯片上的微型计算机。因此,一块芯片就构成了一台计算机。它已成为工业控制领域、智能仪器仪表、尖端武器、日常生活中最广泛使用的计算机。2020年4月10日星期五6CPU:CPU(centralcontrolunit)的全称是中央处理器。负责计算机的计算和控制计算机的运行。存储器:存储器存放各种程序和数据。存储器分为内部存储器和外部存储器两部分。外部存储器大家都比较熟悉,如硬盘、光盘、软盘等等。内部存储器有两种:一部分称为ROM(只读存储器),存放最基本的程序,主要用于计算机启动时使用,如在PC机中存放BIOS;另一部分成为RAM,它能够随时读写。存放正在运行的程序和使用的数据。内部存储器的读写速度远远高于外部存储器,而外部存储器的容量则远远大于内部存储器。外部输入输出设备(I/O)及接口:用于和人打交道。如显示器、键盘、鼠标等等,硬盘、光盘等也属于外部设备2020年4月10日星期五71.2MCS-51系列单片机20世纪80年代初,Intel推出了MCS-51系列单片机,3个基本型:8031:内部没有程序存储器8051:内部有程序存储器(ROM4K)8751:内部有可编程可改写程序存储器(EPROM4K)Intel在推出MCS-51体系结构后不久,开放了8051内核技术,为MCS-51系列单片机的发展起了很大作用。2020年4月10日星期五8在Intel公司推出了MCS-51不久便实施了最彻底的技术开放政策;在众多电器商、半导体商的积极参与下,将MCS-51发展成了众多型号系列的80C51MCU家族。MCS-51经典的体系结构、极好的兼容性和Intel公司的开放政策不仅使众多厂家参与发展,也诱使半导体厂家对MCS-51实行为所欲为的改造。2020年4月10日星期五9Philips公司着力发展基于51内核的控制功能及外围单元,把MCS-51迅速推进到80C51的MCU时代。另外基于FlashROM的在线可编程(ISP)技术,改变了单片机应用系统的结构模式和开发运行条件。P80C51P80C52Atmel公司推出了采用FlashROM技术的AT89C51AT89C52AT89S52等,增加了一些外部接口功能。Cygnal公司2003年推出51内核的SOC(片上系统)型单片机,C8051F系列单片机。2020年4月10日星期五101.3计算机中常用的几个术语1.3.1电平(level):计算机和数字电路中常使用电平一词,用于反映信号(signal)的状态。一个信号或者作为数字电路的一个输入,或者作为数字电路的输出。通常使用+5V直流电源作为数字电路的供电电源,一个信号有2个稳定的状态,一个称为高电平,一个称为低电平。高电平是指电压在+2.7V以上、5V以下的状态,低电平是指+0.8V以下、0V以上的状态。因此,对于一个器件,输出3.1V或者输出3.8V还是输出4.3V本质上是一样的,都属于高电平状态;同样输出0.7V还是0.3V也属于同一种状态,即低电平状态,也没有什么差别。咱们这次做实验,用的是+5V直流电源。判断一个电路是否正常工作,要按上述标准进行。随着技术的快速发展,现在许多器件使用+3.3V甚至2.2V直流电源,对这些器件,高电平、低电平的定义也进行了相应修改。2020年4月10日星期五111.3.2二进制和十六进制由于数字电路中一个信号只有2个稳定的状态:高电平(用“1”表示)和低电平(用“0”表示),因此在计算机中,数据采用的是二进制而不是十进制。二进制数就是以2为基数,数符为0、1,逢二进一。书写时,右边代表低位,左边代表高位。下面是二进制数的例子:(8)(4)(2)(1)0110等于十进制61010等于十进制101111等于十进制152020年4月10日星期五12虽然计算机中采用的是二进制,不过有时却不太方便,因此有时使用十六进制,即把二进制数中的4位作为一组一起表示。在十六进制中,数符为0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F。其中A、B、C、D、E、F分别代表十进制的10、11、12、13、14、15。如:二进制数01011001表示为十六进制数59二进制数00111111表示为十六进制数3F十六进制数只是为了方便人们的阅读和书写,计算机实际处理的还是二进制数。在汇编语言和其它高级语言中,为了将二进制数、十六进制数和十进制数加以区分,在二进制数后加一个后缀B,在十六进制数后加一个后缀H,十进制数后不加任何后缀。如:01011100B8585H0D3H十六进制数如果最高位是字母,则必须前面加一个0。2020年4月10日星期五131.3.3位(bit)、字节(byte)、字(word)在二进制中,每一“位”叫bit,一般通俗称为位。连续的8位组织在一起称为一个字节(byte)。字节是计算机组织数据的基本单位。我们通常说一个计算机的内存多大,比如100M,指的就是它的内存是100M字节。再比如说一个硬盘是100G,也是指这个硬盘能够存储100G个字节的数据。1M等于100万,1G等于1000M。字(word)是每种特定的计算机组织数据和进行运算的单位。比如计算机做加法时能够一次做多少位二进制数的加法。每种计算机,字长差别很大,单片机字长一般是8位或者16位,而PC机字长则有64位甚至更多。我们通常说这是多少位的计算机就是指该计算机的字长是多少位。2020年4月10日星期五141.3.4寄存器(register)CPU中有很多寄存器。所谓寄存器就是可以存放东西的地方,这些东西可以是指令、地址等,也可以是数。寄存器的长度(位数)等于计算机的字长。一个8位单片机中寄存器的长度就是8位。一个64位PC机中寄存器的位数就是64位。下面介绍一些CPU中常用的寄存器。指令寄IR(InstructionRegister):存放CPU从存储器中取出的指令码。CPU对指令进行译码,产生各种控制信号,这些控制信号指挥CPU内部的各种部件完成该指令规定的动作,比如对2个数做加法、减法、逻辑与、从存储器中取一个数、向存储器中写一个数、将一个数向外部设备输出、从外部设备输入一个数等等。2020年4月10日星期五151.3.5程序计数器PC(ProgramCounter):指出程序中当前指令在存储器中的地址。程序是由一条条指令构成的,它们存放在存储器中。存放程序的存储器叫做程序存储器。存储器由许多单元组成,每个单元像个小房间,可以向里放东西,也可以从中取东西。每个单元对应一个存储器地址(就像房间的房间号)。第1条指令第2条指令最后1条指令…………00000001FFFF程序的存放2020年4月10日星期五161.3.6数据、地址、指令:之所以将这三者放在一起,是因为这三者的本质都是一样的──数字,或者说都是一串‘0’和‘1’组成的序列。换言之,地址、指令也都是数据。指令:由单片机芯片的设计者规定的一种数字,它与我们常用的指令助记符有着严格的一一对应关系,不可以由单片机的开发者更改。地址:是寻找单片机内部、外部的存储单元、输入输出口的依据,内部单元的地址值已由芯片设计者规定好,不可更改,外部的单元可以由单片机开发者自行决定,但有一些地址单元是一定要有的(详见程序的执行过程)。数据:这是由微处理器处理的对象,在各种不同的应用电路中各不相同,2020年4月10日星期五171.3.7总线:在计算机中,各部件是以处理器(CPU)为核心的,各部件都要与处理器相连接,各部件之间的工作必须相互协调,如果处理器和各部件间单独连线,则线的数量将多得惊人,所以在处理机中引入了总线的概念,各个部件共同享用连线,所有器件的8根数据线全部接到8根公用的线上,即相当于各个器件并联起来。但仅这样还不行,如果有两个器件同时送出数据,一个为0,一个为1,那么,接收方接收到的究竟是什么呢?这种情况是不允许的,所以要对器件进行选择和控制,使器件分时工作,任何时候只能有一个器件发送或接受数据。器件的数据线也就被称为数据总线,器件所有的控制线被称为控制总线。在单片机内部或者外部存储器及其它器件中有存储单元,这些存储单元要被分配地址,才能使用,由于存储单元比较多,所以,用于地址分配的线也较多,这些线被称为地址总线。2020年4月10日星期五18内部总线时钟电路CPUINT0T1T0并行接口串行接口P0P1P2P3TXDRXD中断系统ROMRAM定时/计数器INT12020年4月10日星期五191.4程序的执行过程2020年4月10日星期五20一个计算机是这样工作的。当加电之后,时钟信号产生,并且自动产生一个复位信号。复位信号将程序计数器PC复位为0;CPU以PC的值为存储器地址从存储器0单元中取出第一条指令放到指令寄存器IR中;然后CPU对IR中的指令进行译码,产生各种控制信号,这些控制信号完成该指令规定的功能;在完成该指令功能的同时,程序计数器PC加1,为从存储器中取出下一条指令做准备。第一条指令执行结束以后,CPU以PC的值为存储器地址从存储器1单元中取出第2条指令放到指令寄存器IR中,…,一直继续下去,直到程序执行结束。单片机在通电复位后8051内的程序计数器(PC)中的值为‘0000’,所以程序总是从‘0000’单元开始执行,也就是说:在MCS-51程序存储器中一定要存在‘0000’这个单元,并且在‘0000’单元中存放的一定是一条指令。2020年4月10日星期五211.5单片机应用的开发过程1、电路板的制作2、目标文件的生成:利用PC机上的开发软件,编写源程序,经汇编(或编译)后生成目标文件(.HEX).3、目标程序的烧写:将目标程序装入到单片机芯片或存储器芯片中。使用编程器或采用在系统编程(ISP)技术.2020年4月10日星期五22第二章MCS-51单片机的初步认识2.1引脚功能电源引脚Vcc(40):电源+5V0.5VGnd(20):地时钟XTAL1(19):内部振荡器输入端XTAL2(18):内部振荡器输出端2020年4月10日星期五232020年4月10日星期五24(a)内部时钟方式,(b)外部时钟方式晶振6MHZ电容5-30P复位电路(9)电容C22ufR21-2KR1200复位后程序计数器PC=0000H程序从0000H地址单元开始执行,复位时间大约5-10mS,RST引脚加高电平2020年4月10日星期五25EA(31):输入EA引脚接高电平时,从内部程序存储器开始,当程序超过内部程序器的容量时转到外部程序存储器取指令。EA引脚接低电平时,单片机转到外部程序存储器中取指令(无论片内是否有程序存储器)。外部程序存储器的地址从0000H开始编址。2020年4月10日星期五262.2实验1指令的初步认识2020年4月10日星期五27从上一节我们看到MCS-51有40个管脚,我们已经用了6个,还有34个,这34个管脚中有32个分成了4组,每组8个,分别叫做P0.0-P0.7P1.0-P1.7P2.0-P2.7P3.0-