单片机技术及应用ppt课件

上传人:txadgkn****dgknqu... 文档编号:240782840 上传时间:2024-05-08 格式:PPT 页数:79 大小:573.13KB
返回 下载 相关 举报
单片机技术及应用ppt课件_第1页
第1页 / 共79页
单片机技术及应用ppt课件_第2页
第2页 / 共79页
单片机技术及应用ppt课件_第3页
第3页 / 共79页
点击查看更多>>
资源描述
单片机技术及应用单片机技术及应用清华大学基础工业训练中心清华大学基础工业训练中心冯一兵冯一兵5/8/20241单片机技术及应用8/1/20231 第一章第一章 单片机的基础知识单片机的基础知识 第二章第二章 MCS-51 MCS-51单片机的初步认识单片机的初步认识 第三章第三章 MCS-51 MCS-51的指令系统的指令系统 5/8/20242第一章单片机的基础知识8/1/20232 第四章第四章 汇编语言程序设计汇编语言程序设计 第五章第五章 定时器定时器/计数器计数器 第六章第六章 中断的基本概念中断的基本概念 第七章第七章 串行口的应用串行口的应用5/8/20243第四章汇编语言程序设计8 第一章第一章 单片机的基础知识单片机的基础知识 1.1 1.1 微计算机与单片机微计算机与单片机 单片机是计算机的一种。一台完整的计算机由硬件和软件共同组成。单片机是计算机的一种。一台完整的计算机由硬件和软件共同组成。计算机的软件由各种程序组成,包括操作系统(如计算机的软件由各种程序组成,包括操作系统(如windowswindows)和各种应)和各种应用程序(如用程序(如wordword),计算机的硬件由下列几个部份构成:),计算机的硬件由下列几个部份构成:CPUCPU、存储器、存储器、外部设备及接口。外部设备及接口。单片机主要用于简单的数据采集和控制,原本的意思是将单片机主要用于简单的数据采集和控制,原本的意思是将CPUCPU、存储、存储器和外设接口(器和外设接口(I/OI/O)集成在一个芯片()集成在一个芯片(single chipsingle chip)上的处理器)上的处理器(ProcessorProcessor),后来的正式名称是微控制器(),后来的正式名称是微控制器(micro controllermicro controller)。)。因此在网上查找资料时,可以使用微控制器作为关键词查找。因此在网上查找资料时,可以使用微控制器作为关键词查找。5/8/20244第一章单片机的基础知识8/n单单片片微微型型计计算算机机就就是是将将CPU、RAM、ROM、定定时时/计计数数器器和和多多种种接接口口都都集集成成到到一一块块集集成成电电路路芯芯片片上上的的微微型型计计算算机机。因因此此,一一块块芯芯片片就就构构成成了了一一台台计计算算机机。它它已已成成为为工工业业控控制制领领域域、智智能能仪仪器器仪仪表表、尖尖端端武武器器、日日常常生生活活中中最最广广泛泛使使用用的计算机。的计算机。5/8/20245单片微型计算机就是将CPU、RAM、ROM、定时/计数器和多 CPU CPU:CPU:CPU(central control unitcentral control unit)的全称是中央处理器。)的全称是中央处理器。负责计算机的计算和控制计算机的运行。负责计算机的计算和控制计算机的运行。存储器存储器:存储器存放各种程序和数据。存储器分为内部存储器:存储器存放各种程序和数据。存储器分为内部存储器和外部存储器两部分。外部存储器大家都比较熟悉,如硬盘、光盘、和外部存储器两部分。外部存储器大家都比较熟悉,如硬盘、光盘、软盘等等。内部存储器有两种:一部分称为软盘等等。内部存储器有两种:一部分称为ROMROM(只读存储器),存(只读存储器),存放最基本的程序,主要用于计算机启动时使用,如在放最基本的程序,主要用于计算机启动时使用,如在PCPC机中存放机中存放BIOSBIOS;另一部分成为;另一部分成为RAMRAM,它能够随时读写。存放正在运行的程序和,它能够随时读写。存放正在运行的程序和使用的数据。内部存储器的读写速度远远高于外部存储器,而外部使用的数据。内部存储器的读写速度远远高于外部存储器,而外部存储器的容量则远远大于内部存储器。存储器的容量则远远大于内部存储器。外部输入输出设备(外部输入输出设备(I/OI/O)及接口)及接口:用于和人打交道。如显示器、:用于和人打交道。如显示器、键盘、鼠标等等,硬盘、光盘等也属于外部设备键盘、鼠标等等,硬盘、光盘等也属于外部设备5/8/20246CPU:CPU(centralcontrol 1.2 MCS-51系列单片机系列单片机 20世纪世纪80年代初,年代初,Intel推出了推出了MCS-51系列单片机,系列单片机,3个基本型:个基本型:8031:8031:内部没有程序存储器内部没有程序存储器 8051:8051:内部有程序存储器内部有程序存储器(ROM 4K)(ROM 4K)8751:8751:内部有可编程可改写程序存储器(内部有可编程可改写程序存储器(EPROM 4K)EPROM 4K)Intel Intel 在推出在推出MCS-51MCS-51体系结构后不久,开放了体系结构后不久,开放了80518051内核技术,为内核技术,为 MCS-51 MCS-51系列单片机的发展起了很大作用。系列单片机的发展起了很大作用。5/8/202471.2MCS-51系列单片机8/1/20237在在Intel公司推出了公司推出了MCS-51不久便实施了最彻底的技术开放不久便实施了最彻底的技术开放政策;在众多电器商、半导体商的积极参与下,将政策;在众多电器商、半导体商的积极参与下,将MCS-51发发展成了众多型号系列的展成了众多型号系列的80C51 MCU家族。家族。MCS-51经典的体经典的体系结构、极好的兼容性和系结构、极好的兼容性和Intel公司的开放政策不仅使众多厂公司的开放政策不仅使众多厂家参与发展,也诱使半导体厂家对家参与发展,也诱使半导体厂家对MCS-51实行为所欲为的改实行为所欲为的改造。造。5/8/202488/1/20238 Philips公司着力发展基于公司着力发展基于51内核的控制功能及外围单元,把内核的控制功能及外围单元,把MCS-51迅速推进到迅速推进到80C51的的MCU时代。时代。另外基于另外基于Flash ROM的在线可编程(的在线可编程(ISP)技术,改变了单片机技术,改变了单片机应用系统的结构模式和开发运行条件。应用系统的结构模式和开发运行条件。P80C51 P80C52 Atmel公司推出了采用公司推出了采用Flash ROM技术的技术的AT89C51 AT89C52 AT89S52等,增加了一些外部接口功能。等,增加了一些外部接口功能。Cygnal 公司公司2003年推出年推出51内核的内核的SOC(片上系统)型单片机,片上系统)型单片机,C8051F系列单片机。系列单片机。5/8/20249Philips公司着力发展基于51内核的控制功能及外 1.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直流电源,对这些器件,高电平、直流电源,对这些器件,高电平、低电平的定义也进行了相应修改。低电平的定义也进行了相应修改。5/8/2024101.3计算机中常用的几个术语8/1/2023101.3.2 二进制和十六进制二进制和十六进制 由于数字电路中一个信号只有由于数字电路中一个信号只有2个稳定的状态:高个稳定的状态:高电平(用电平(用“1”表示)和低电平(用表示)和低电平(用“0”表示),因此在计表示),因此在计算机中,数据采用的是二进制而不是十进制。二进制数就是算机中,数据采用的是二进制而不是十进制。二进制数就是以以2为基数,数符为为基数,数符为0、1,逢二进一。书写时,右边代表低,逢二进一。书写时,右边代表低位,左边代表高位。下面是二进制数的例子:位,左边代表高位。下面是二进制数的例子:(8)(4)(2)(1)0 1 1 0 等于十进制等于十进制6 1 0 1 0 等于十进制等于十进制10 1 1 1 1 等于十进制等于十进制15 5/8/2024111.3.2二进制和十六进制8/1/202311虽然计算机中采用的是二进制,不过有时却不太方便,因此有时使用十虽然计算机中采用的是二进制,不过有时却不太方便,因此有时使用十六进制,即把二进制数中的六进制,即把二进制数中的4 4位作为一组一起表示。在十六进制中,数符位作为一组一起表示。在十六进制中,数符为为0 0、1 1、2 2、3 3、4 4、5 5、6 6、7 7、8 8、9 9、A A、B B、C C、D D、E E、F F。其中。其中A A、B B、C C、D D、E E、F F分别代表十进制的分别代表十进制的1010、1111、1212、1313、1414、1515。如:。如:二进制数二进制数 01011001 01011001 表示为十六进制数表示为十六进制数5959 二进制数二进制数 00111111 00111111 表示为十六进制数表示为十六进制数3F3F 十六进制数只是为了方便人们的阅读和书写,计算机实际处理的还是十六进制数只是为了方便人们的阅读和书写,计算机实际处理的还是二进制数。在汇编语言和其它高级语言中,为了将二进制数、十六进制二进制数。在汇编语言和其它高级语言中,为了将二进制数、十六进制数和十进制数加以区分,在二进制数后加一个后缀数和十进制数加以区分,在二进制数后加一个后缀B B,在十六进制数后加,在十六进制数后加一个后缀一个后缀H H,十进制数后不加任何后缀。如:,十进制数后不加任何后缀。如:01011100B 01011100B 85 85 85H 85H 0D3H 0D3H 十六进制数如果最高位是字母,则必须前面加一个十六进制数如果最高位是字母,则必须前面加一个0 0。5/8/202412虽然计算机中采用的是二进制,不过有时却不太方便,因此有时使用1.3.3 1.3.3 位(位(bitbit)、字节()、字节(bytebyte)、字()、字(wordword)在二进制中,每一在二进制中,每一“位位”叫叫bitbit,一般通俗称为位。连续,一般通俗称为位。连续的的8 8位组织在一起称为一个字节(位组织在一起称为一个字节(bytebyte)。字节是计算机组)。字节是计算机组织数据的基本单位。我们通常说一个计算机的内存多大,比织数据的基本单位。我们通常说一个计算机的内存多大,比如如100M100M,指的就是它的内存是,指的就是它的内存是100M100M字节。再比如说一个硬盘字节。再比如说一个硬盘是是100G100G,也是指这个硬盘能够存储,也是指这个硬盘能够存储100G100G个字节的数据。个字节的数据。1M1M等等于于100100万,万,1G1G等于等于1000M1000M。字(字(wordword)是每种特定的计算机组织数据和进行运算的单)是每种特定的计算机组织数据和进行运算的单位。比如计算机做加法时能够一次做多少位二进制数的加法。位。比如计算机做加法时能够一次做多少位二进制数的加法。每种计算机,字长差别很大,单片机字长一般是每种计算机,字长差别很大,单片机字长一般是8 8位或者位或者1616位,而位,而PCPC机字长则有机字长则有6464位甚至更多。我们通常说这是多少位位甚至更多。我们通常说这是多少位的计算机就是指该计算机的字长是多少位。的计算机就是指该计算机的字长是多少位。5/8/2024131.3.3位(bit)、字节(byte)、字(word)81.3.4 寄存器(寄存器(register)CPUCPU中有很多寄存器。所谓寄存器就是可以存放东西的中有很多寄存器。所谓寄存器就是可以存放东西的地方,这些东西可以是指令、地址等,也可以是数。寄存地方,这些东西可以是指令、地址等,也可以是数。寄存器的长度(位数)等于计算机的字长。一个器的长度(位数)等于计算机的字长。一个8 8位单片机中寄位单片机中寄存器的长度就是存器的长度就是8 8位。一个位。一个6464位位PCPC机中寄存器的位数就是机中寄存器的位数就是6464位。下面介绍一些位。下面介绍一些CPUCPU中常用的寄存器。中常用的寄存器。指令寄指令寄IR(Instruction Register):IR(Instruction Register):存放存放CPUCPU从存储从存储器中取出的指令码。器中取出的指令码。CPUCPU对指令进行译码,产生各种控制信对指令进行译码,产生各种控制信号,这些控制信号指挥号,这些控制信号指挥CPUCPU内部的各种部件完成该指令规定内部的各种部件完成该指令规定的动作,比如对的动作,比如对2 2个数做加法、减法、逻辑与、从存储器中个数做加法、减法、逻辑与、从存储器中取一个数、向存储器中写一个数、将一个数向外部设备输取一个数、向存储器中写一个数、将一个数向外部设备输出、从外部设备输入一个数等等。出、从外部设备输入一个数等等。5/8/2024141.3.4寄存器(register)8/1/2023141.3.5 程序计数器程序计数器PC(Program Counter):):指出程序中指出程序中当前指令当前指令在在 存储存储器中的地址。程序是由一条条指器中的地址。程序是由一条条指令构成的,它们存放在存储器中。令构成的,它们存放在存储器中。存放程序的存储器叫做程序存储存放程序的存储器叫做程序存储器。存储器由许多单元组成,每器。存储器由许多单元组成,每个单元像个小房间,可以向里放个单元像个小房间,可以向里放东西,也可以从中取东西。每个东西,也可以从中取东西。每个单元对应一个存储器地址(就像单元对应一个存储器地址(就像房间的房间号)。房间的房间号)。5/8/2024151.3.5程序计数器PC(ProgramCounte 1.3.6 数据、地址、指令:数据、地址、指令:之所以将这三者放在一起,是因为之所以将这三者放在一起,是因为这三者的本质都是一样的这三者的本质都是一样的数字,或者说都是一串数字,或者说都是一串0和和1组成的序列。换言之,地址、指令也都是数据。组成的序列。换言之,地址、指令也都是数据。指令:指令:由单片机芯片的设计者规定的一种数字,它与我们常由单片机芯片的设计者规定的一种数字,它与我们常用的指令助记符有着严格的一一对应关系,不可以由单片机的用的指令助记符有着严格的一一对应关系,不可以由单片机的开发者更改。开发者更改。地址:地址:是寻找单片机内部、外部的存储单元、输入输出口的依是寻找单片机内部、外部的存储单元、输入输出口的依据,内部单元的地址值已由芯片设计者规定好,不可更改,外据,内部单元的地址值已由芯片设计者规定好,不可更改,外部的单元可以由单片机开发者自行决定,但有一些地址单元是部的单元可以由单片机开发者自行决定,但有一些地址单元是一定要有的(详见程序的执行过程)。一定要有的(详见程序的执行过程)。数据:数据:这是由微处理器处理的对象,在各种不同的应用电路这是由微处理器处理的对象,在各种不同的应用电路中各不相同,中各不相同,5/8/2024161.3.6数据、地址、指令:之所以将这三者放在一1.3.7 总线:总线:在计算机中,各部件是以处理器在计算机中,各部件是以处理器(CPU)为核心的,为核心的,各部件都要与处理器相连接,各部件之间的工作必须相互各部件都要与处理器相连接,各部件之间的工作必须相互协调,如果处理器和各部件间单独连线,则线的数量将多协调,如果处理器和各部件间单独连线,则线的数量将多得惊人,所以在处理机中引入了总线的概念,各个部件共得惊人,所以在处理机中引入了总线的概念,各个部件共同享用连线,所有器件的同享用连线,所有器件的8根数据线全部接到根数据线全部接到8根公用的线根公用的线上,即相当于各个器件并联起来。但仅这样还不行,如果上,即相当于各个器件并联起来。但仅这样还不行,如果有两个器件同时送出数据,一个为有两个器件同时送出数据,一个为0,一个为,一个为1,那么,接,那么,接收方接收到的究竟是什么呢?这种情况是不允许的,所以收方接收到的究竟是什么呢?这种情况是不允许的,所以要对器件进行选择和控制,使器件分时工作,任何时候只要对器件进行选择和控制,使器件分时工作,任何时候只能有一个器件发送或接受数据。器件的数据线也就被称为能有一个器件发送或接受数据。器件的数据线也就被称为数据总线,器件所有的控制线被称为控制总线。在单片机数据总线,器件所有的控制线被称为控制总线。在单片机内部或者外部存储器及其它器件中有存储单元,这些存储内部或者外部存储器及其它器件中有存储单元,这些存储单元要被分配地址,才能使用,由于存储单元比较多,所单元要被分配地址,才能使用,由于存储单元比较多,所以,用于地址分配的线也较多,这些线被称为地址总线。以,用于地址分配的线也较多,这些线被称为地址总线。5/8/2024171.3.7总线:在计算机中,各部件是以处理器(CPU)为核5/8/2024188/1/2023181.4 1.4 程序的执行过程程序的执行过程5/8/2024191.4程序的执行过程8/1/202319 一个计算机是这样工作的。当加电之后,时钟信号产生,并且自动产一个计算机是这样工作的。当加电之后,时钟信号产生,并且自动产生一个复位信号。复位信号将程序计数器生一个复位信号。复位信号将程序计数器PCPC复位为复位为0 0;CPUCPU以以PCPC的值为存储的值为存储器地址从存储器器地址从存储器0 0单元中取出第一条指令放到指令寄存器单元中取出第一条指令放到指令寄存器IRIR中;然后中;然后CPUCPU对对IRIR中的指令进行译码,产生各种控制信号,这些控制信号完成该指令规定中的指令进行译码,产生各种控制信号,这些控制信号完成该指令规定的功能;在完成该指令功能的同时,程序计数器的功能;在完成该指令功能的同时,程序计数器PCPC加加1 1,为从存储器中取,为从存储器中取出下一条指令做准备。第一条指令执行结束以后,出下一条指令做准备。第一条指令执行结束以后,CPUCPU以以PCPC的值为存储器的值为存储器地址从存储器地址从存储器1 1单元中取出第单元中取出第2 2条指令放到指令寄存器条指令放到指令寄存器IRIR中,中,一直继续,一直继续下去,直到程序执行结束。下去,直到程序执行结束。单片机在通电复位后单片机在通电复位后80518051内的程序计数器(内的程序计数器(PCPC)中的值为)中的值为00000000,所以所以程序总是从程序总是从00000000单元开始执行单元开始执行,也就是说:在,也就是说:在MCS-51MCS-51程序存储器程序存储器中一定要存在中一定要存在00000000这个单元,并且在这个单元,并且在00000000单元中存放的一定是一单元中存放的一定是一条指令。条指令。5/8/202420一个计算机是这样工作的。当加电之后,时钟信号产生,并且1.5 1.5 单片机应用的开发过程单片机应用的开发过程 1 1、电路板的制作、电路板的制作 2 2、目标文件的生成:、目标文件的生成:利用利用PCPC机上的开发软件,编写机上的开发软件,编写 源程源程 序,经汇编(或编译)后生成目标文件序,经汇编(或编译)后生成目标文件 (.HEX).HEX).3 3、目标程序的烧写:将目标程序装入到单片机芯片目标程序的烧写:将目标程序装入到单片机芯片 或存储器芯片中。或存储器芯片中。使用编程器或采用在系统编程(使用编程器或采用在系统编程(ISP)ISP)技术技术.5/8/2024211.5单片机应用的开发过程8/1/202321 第二章第二章 MCS-51 MCS-51 单片机的初步认识单片机的初步认识 2.1 2.1 引脚功能引脚功能 电源引脚电源引脚 Vcc Vcc(4040):电源):电源 +5V +5V 0.5V0.5V Gnd Gnd(2020):地):地 时钟时钟XTAL1XTAL1(1919):内部振荡器输入端):内部振荡器输入端XTAL2XTAL2(1818):内部振荡器输出端):内部振荡器输出端5/8/202422第二章MCS-51单片机的初步认识8/5/8/2024238/1/202323(a)内部时钟方式,()内部时钟方式,(b)外部时钟方式)外部时钟方式晶振晶振6MHZ 电容电容5-30P复位电路(复位电路(9)电容电容C 22ufR2 1-2K R1 200 复位后程序计数器复位后程序计数器PC=0000H 程序从程序从0000H地址单元开地址单元开始执行,复位时间大约始执行,复位时间大约5-10mS,RST引脚加高电平引脚加高电平5/8/202424(a)内部时钟方式,(b)外部时钟方式晶振6MHZ电容EAEA(3131):输入):输入 EA EA引脚接高电平时,从内部程序存储器开始,引脚接高电平时,从内部程序存储器开始,当程序超过内部程序器的容量时转到外部程序存储器当程序超过内部程序器的容量时转到外部程序存储器取指令。取指令。EA EA引脚接低电平时,单片机转到外部程序存储引脚接低电平时,单片机转到外部程序存储器中取指令(无论片内是否有程序存储器)。外部程器中取指令(无论片内是否有程序存储器)。外部程序存储器的地址从序存储器的地址从0000H0000H开始编址。开始编址。5/8/202425EA(31):输入8/1/2023252.2 2.2 实验实验1 1 指令的初步认识指令的初步认识5/8/2024262.2实验1指令的初步认识8/1/202326 从上一节我们看到从上一节我们看到MCS-51MCS-51有有4040个管脚,我们已经用了个管脚,我们已经用了6 6个,个,还有还有3434个,这个,这3434个管脚中有个管脚中有3232个分成了个分成了4 4组,每组组,每组8 8个,分别叫个,分别叫做做P0.0-P0.7 P1.0-P1.7 P2.0-P2.7 P3.0-P3.7 P0.0-P0.7 P1.0-P1.7 P2.0-P2.7 P3.0-P3.7 分别叫做分别叫做P0P0口、口、P1 P1口、口、P2 P2口、口、P3 P3口。这口。这4 4个口都是双向(既可以输出个口都是双向(既可以输出也可以输入)口,但又有所不同,也可以输入)口,但又有所不同,P0 P0口、口、P2P2口、口、P3 P3口除可以口除可以用作输入输出以外还有第二功能,以后用到时再讲。用作输入输出以外还有第二功能,以后用到时再讲。我们的第一个实验是要用单片机点亮一只发光二极管我们的第一个实验是要用单片机点亮一只发光二极管LEDLED或者或者同时点亮同时点亮8 8只发光二极管。我们将这只发光二极管。我们将这8 8只发光二极管接在只发光二极管接在P1.0-P1.0-P1.7P1.7上(管脚上(管脚1-81-8)。)。5/8/202427从上一节我们看到MCS-51有40个管脚,我们已经用在这个图中如果想让某一个发光二极管(比如第在这个图中如果想让某一个发光二极管(比如第1 1个)亮怎么个)亮怎么办呢?当办呢?当1 1脚是高电平时,脚是高电平时,LEDLED不亮,只有不亮,只有1 1脚是低电平时,脚是低电平时,LEDLED才发亮。也就是说,我们要能够让才发亮。也就是说,我们要能够让1 1引脚按要求变为高或低电引脚按要求变为高或低电平就可以了。平就可以了。我们又怎样让它变我们又怎样让它变高高或变或变低低呢?计算机能听得懂的命呢?计算机能听得懂的命令称之为计算机的指令。在令称之为计算机的指令。在MCS-51MCS-51中,让一个引脚输出高电平中,让一个引脚输出高电平或低电平的指令有两种,一种是或低电平的指令有两种,一种是SETBSETB和和CLRCLR指令,这种叫做位指令,这种叫做位操作指令。我们要操作指令。我们要1 1脚输出高电平,只要写脚输出高电平,只要写SETB P1.0SETB P1.0,要,要1 1脚脚输出低电平,只要写输出低电平,只要写 CLR P1.0 CLR P1.0就可以了。还有一种就是数据就可以了。还有一种就是数据传送指令,比如传送指令,比如 MOV P1,#data MOV P1,#data。这种指令一次同时改变。这种指令一次同时改变P1P1口口8 8位的状态。位的状态。我们要我们要1脚输出高电平,只要写脚输出高电平,只要写 MOV P1,#01H,要要1脚输出低电平,只要写脚输出低电平,只要写 MOV P1,#00H就可以了。就可以了。5/8/202428在这个图中如果想让某一个发光二极管(比如第1个)亮怎么办呢?我们怎样才能计算机执行这条指令呢?第一步借助计算机里的编我们怎样才能计算机执行这条指令呢?第一步借助计算机里的编辑软件编写源程序。现在普遍使用的是辑软件编写源程序。现在普遍使用的是Keil C51Keil C51软件。计算机是软件。计算机是看不懂看不懂SETB CLRSETB CLR之类的指令,所以第二步把指令翻译成计算机能之类的指令,所以第二步把指令翻译成计算机能懂的方式,再让计算机去读。计算机能懂什么呢?它只懂一样东懂的方式,再让计算机去读。计算机能懂什么呢?它只懂一样东西西数字。因此我们得把数字。因此我们得把SETB P1.0SETB P1.0变为(变为(D2H,90H D2H,90H),把),把CLR CLR P1.0P1.0变为变为 (C2H,90H C2H,90H),至于为什么是这两个数字,这也是由),至于为什么是这两个数字,这也是由5151芯片的设计者芯片的设计者-INTEL-INTEL规定的,我们不去研究。这个翻译的过程在规定的,我们不去研究。这个翻译的过程在计算机术语中叫做编译。编译后生成的文件叫做目标文件。第三计算机术语中叫做编译。编译后生成的文件叫做目标文件。第三步就要把目标文件写入到单片机中去。有两种方法一种是要借助步就要把目标文件写入到单片机中去。有两种方法一种是要借助于一个硬件工具于一个硬件工具“编程器编程器”。还有一种就是在线编程。还有一种就是在线编程ISP.5/8/202429我们怎样才能计算机执行这条指令呢?第一步借助计算机里的编辑软ORG 0000HORG 0000H;存储器;存储器ROMROM起始地址起始地址LJMP 0100HLJMP 0100H;跳转到主程序地址;跳转到主程序地址ORG 0100HORG 0100H;主程序起始地址;主程序起始地址CLR P1.0CLR P1.0;执行指令;执行指令ENDENDORG 0000HORG 0000H;存储器;存储器ROMROM起始地址起始地址CLR P1.0CLR P1.0;执行指令;执行指令ENDENDORG 0000HORG 0000H;存储器;存储器ROMROM起始地址起始地址MOV P1,#11111110BMOV P1,#11111110B;执行指令;执行指令ENDEND5/8/202430ORG0000H;存储器ROM起始地址8/1/20233这里这里ORGORG、ENDEND是伪指令,分号后面的是注释,这些都是不往单是伪指令,分号后面的是注释,这些都是不往单片机中写入的,片机中写入的,ORGORG是表示从程序存储器是表示从程序存储器ROMROM(只读存储器)的(只读存储器)的什么地址开始存储,什么地址开始存储,ENDEND表示指令结束。表示指令结束。LJMPLJMP是跳转指令,因是跳转指令,因为芯片的设计者规定,单片机为芯片的设计者规定,单片机ROMROM中的开始一些字节有专门的中的开始一些字节有专门的用途,所以我们把指令从用途,所以我们把指令从0100H0100H这个地址开始存储。这个地址开始存储。5/8/2024318/1/2023315/8/2024328/1/2023322.3 2.3 单片机汇编语言程序初步认识单片机汇编语言程序初步认识 2.3.1 2.3.1 在前边的实验中我们只是点亮了一个在前边的实验中我们只是点亮了一个LEDLED,我们还可,我们还可以让它闪烁。闪烁实际上就是要灯亮一段时间,再灭一段时间,以让它闪烁。闪烁实际上就是要灯亮一段时间,再灭一段时间,也就是说要也就是说要P1.0P1.0不断地输出低和高电平。但是程序是不是可以不断地输出低和高电平。但是程序是不是可以直接写入:直接写入:SETB P1.0 SETB P1.0 CLR P1.0CLR P1.0这是不行的。第一,计算机执行指令的时间很快,执行完这是不行的。第一,计算机执行指令的时间很快,执行完SETB SETB P1.0P1.0后,灯是灭了,但在极短时间(微秒级)后,计算机又执后,灯是灭了,但在极短时间(微秒级)后,计算机又执行了行了CLR P0.0CLR P0.0指令,灯又亮了,所以根本看不出灯曾经灭过。指令,灯又亮了,所以根本看不出灯曾经灭过。第二,在执行完第二,在执行完CLR P1.0CLR P1.0后,不会再去执行后,不会再去执行SETB P1.0SETB P1.0指令,指令,以后再也没有机会让以后再也没有机会让LEDLED灭了。为了解决这两个问题,我们可灭了。为了解决这两个问题,我们可以做如下设想,第一,在执行完以做如下设想,第一,在执行完SETB P1.0SETB P1.0后,延时一段时间后,延时一段时间(几秒或零点几秒)再执行第二条指令,就可以看出(几秒或零点几秒)再执行第二条指令,就可以看出LEDLED曾经曾经灭过了。第二,在执行完第二条指令后,让计算机再去执行第灭过了。第二,在执行完第二条指令后,让计算机再去执行第一条指令,不断地兜圈,我们称之为一条指令,不断地兜圈,我们称之为 循环循环,这样就可以完成,这样就可以完成任务了。任务了。5/8/2024332.3单片机汇编语言程序初步认识8/1/2023335/8/2024348/1/202334 ORG 0000H ;存储器;存储器ROM起始地址起始地址 LJMP 0100H ;跳转到主程序地址跳转到主程序地址 ORG 0100H ;主程序起始地址;主程序起始地址LOOP:SETB P1.0 LOOP:SETB P1.0 ;熄灭熄灭LEDLED,LCALL DELAY LCALL DELAY ;调用延时;调用延时子子程序程序 CLR P1.0 CLR P1.0;点亮点亮LEDLED LCALL DELAY LCALL DELAY ;调用延时;调用延时子子程序程序 LJMP LOOP LJMP LOOP DELAYDELAY:MOV R7MOV R7,#250#250 ;工作寄存器工作寄存器R7R7赋初值赋初值D1D1:MOV R6 MOV R6,#250#250;工作寄存器工作寄存器R6R6赋初值赋初值D2D2:DJNZ R6 DJNZ R6,D2 D2 ;62500;62500 DJNZ R7 DJNZ R7,D1 D1 RET RET END END 5/8/202435ORG0000H由这个实验我们可能会提出这样几个问题?由这个实验我们可能会提出这样几个问题?1 1、程序中、程序中R6 R7R6 R7代表什么意思?代表什么意思?2 2、程序的延迟是怎么实现的?延迟时间的长短怎、程序的延迟是怎么实现的?延迟时间的长短怎 么确定?么确定?3 3、什么是汇编语言,汇编语言的基本格式是怎样、什么是汇编语言,汇编语言的基本格式是怎样 的?的?5/8/202436由这个实验我们可能会提出这样几个问题?8/1/2023362.3.2 2.3.2 工作寄存器工作寄存器什么是工作寄存器呢?什么是工作寄存器呢?计算机做运算时,为了要得到最终结果,往往要有很多的中计算机做运算时,为了要得到最终结果,往往要有很多的中间结果,这些中间结果要有个地方才行。所以在单片机中有间结果,这些中间结果要有个地方才行。所以在单片机中有一个区域称为一个区域称为RAMRAM(RAMRAM随机存储器),也叫数据存储器,也随机存储器),也叫数据存储器,也就是随时可以将数据写进去,也可以在需要的时候将数据读就是随时可以将数据写进去,也可以在需要的时候将数据读出来。在出来。在MCS-51MCS-51单片机中,片内单片机中,片内RAM RAM 有有128128个字节,个字节,其中最低的其中最低的3232个字节开辟为工作寄存器区。个字节开辟为工作寄存器区。5/8/2024372.3.2工作寄存器8/1/2023375/8/2024388/1/2023382.3.3 CPU 2.3.3 CPU 时序的基本概念时序的基本概念 在上面一个实验中我们知道在上面一个实验中我们知道DJNZ R6DJNZ R6,D2D2这句话会被执行这句话会被执行6250062500次,但是执行这么次,但是执行这么多次需要多长时间呢?是否满足我们的要求呢?多次需要多长时间呢?是否满足我们的要求呢?在计算机中,为了便于管理,常把一条指令的执行过程划分为若干个阶段,每一阶在计算机中,为了便于管理,常把一条指令的执行过程划分为若干个阶段,每一阶段完成一项工作。例如,取指令、存储器读、存储器写等,这每一项工作称为一个段完成一项工作。例如,取指令、存储器读、存储器写等,这每一项工作称为一个基本操作。完成一个基本操作所需要的时间称为机器周期。基本操作。完成一个基本操作所需要的时间称为机器周期。我们规定:计算机访我们规定:计算机访问一次存储器的时间,称之为一个机器周期。这是一个时间基准,一个机器周期包问一次存储器的时间,称之为一个机器周期。这是一个时间基准,一个机器周期包括括1212个时钟周期。设一个单片机工作于个时钟周期。设一个单片机工作于12M12M晶振,它的时钟周期是晶振,它的时钟周期是1/121/12(微秒)。(微秒)。它的一个机器周期是它的一个机器周期是12*12*(1/121/12)也就是)也就是1 1微秒。在工作于微秒。在工作于6M6M晶振的单片机中,它的晶振的单片机中,它的机器周期是机器周期是2 2微秒。微秒。MCS-51 MCS-51单片机的所有指令中,有一些完成得比较快,只要一个机器周期就行了,单片机的所有指令中,有一些完成得比较快,只要一个机器周期就行了,有一些完成得比较慢,得要有一些完成得比较慢,得要2 2个机器周期,还有两条指令要个机器周期,还有两条指令要4 4个机器周期才行。个机器周期才行。5/8/2024392.3.3CPU时序的基本概念8/1/202339 现在让我们来计算刚才那段延时程序的延迟时间。首先必须现在让我们来计算刚才那段延时程序的延迟时间。首先必须知道晶振的频率,我们所用晶振为知道晶振的频率,我们所用晶振为6M6M,这样一个机器周期就是,这样一个机器周期就是2 2微秒。而微秒。而DJNZDJNZ指令是双周期指令,所以执行一次需要指令是双周期指令,所以执行一次需要4 4个微秒。个微秒。一共执行一共执行6250062500次,正好次,正好250000250000微秒,也就是微秒,也就是250250毫秒。发光二毫秒。发光二极管在一秒钟内亮灭各两次。极管在一秒钟内亮灭各两次。问题:如果我们想改变二极管亮灭的频率,该怎么办呢?问题:如果我们想改变二极管亮灭的频率,该怎么办呢?5/8/202440现在让我们来计算刚才那段延时程序的延迟时间。首先必须2.4 MCS-51 2.4 MCS-51 存储器组织存储器组织 2.4.1 RAM(2.4.1 RAM(随机存储器)随机存储器)ROM(ROM(只读存储器)只读存储器)RAM CPU RAM CPU在运行时能随时进行数据的写入读在运行时能随时进行数据的写入读 出,电源关闭时,所存信息丢失。出,电源关闭时,所存信息丢失。ROM ROM 写入信息后,关闭电源,信息不丢失的存写入信息后,关闭电源,信息不丢失的存 储器,也叫非易失性存储器。因此,写入和擦储器,也叫非易失性存储器。因此,写入和擦 除除 过程比过程比RAMRAM复杂。根据写入和擦除过程的不复杂。根据写入和擦除过程的不 同分:掩膜同分:掩膜ROMROM、光擦除、光擦除ROMROM、电可擦除、电可擦除ROMROM、Flash Flash(闪存)。(闪存)。5/8/2024412.4MCS-51存储器组织8/1/2023415/8/2024428/1/202342 2.4.2 MCS-51 2.4.2 MCS-51 程序存储器程序存储器 80C51 80C51分程序存储器和数据存储器,程序存储器分片分程序存储器和数据存储器,程序存储器分片 内和片外两部分,最大内和片外两部分,最大64K.64K.当当EAEA接高电平时,首先从片内存储器取指令,当接高电平时,首先从片内存储器取指令,当 超过范围时系统会自动转到片外程序存储器取指令。超过范围时系统会自动转到片外程序存储器取指令。80C51 80C51片内程序存储器大小是片内程序存储器大小是4K(0000H-0FFFH)4K(0000H-0FFFH)。随着半导体技术的发展,现在常用的随着半导体技术的发展,现在常用的89C5X89C5X单片机,单片机,使用使用FlashFlash技术内部程序存储器可以达技术内部程序存储器可以达16K16K、32K32K或或 64K.64K.所以一般只使用内部程序存储器就够了。所以一般只使用内部程序存储器就够了。复位后,程序的第一条指令总是从复位后,程序的第一条指令总是从0000H0000H地址读取地址读取。5/8/2024432.4.2MCS-51程序存储器8/1/2023432.4.3 MCS-51 2.4.3 MCS-51 数据存储器数据存储器 也分片内也分片内RAMRAM和片外和片外RAMRAM。片内片内RAM128RAM128个字节,地址个字节,地址00H-7FH,00H-7FH,片外片外RAMRAM最大最大 64K,64K,地址地址0000H-FFFFH0000H-FFFFH 工作寄存器区工作寄存器区 32 32个个 00H-1FH 00H-1FH 位寻址区位寻址区 20FH-2FH 16 20FH-2FH 16个字节,个字节,128128位位,00H-7FH,00H-7FH 被寻址的位可以进行位操作。被寻址的位可以进行位操作。没有用到的单元可以按通用没有用到的单元可以按通用RAMRAM进行字节操作。进行字节操作。位操作还是字节操作,由指令区分位操作还是字节操作,由指令区分 例如:例如:SETB 00H ;SETB 00H ;使使20H20H单元的单元的D0D0位置位置“1”“1”MOV 20H,#01H ;MOV 20H,#01H ;两条指令的区别是:第二条两条指令的区别是:第二条D0D0为为“1”“1”,D1-D7 D1-D7都为都为“0”“0”,第一条,第一条D0为为“1”,D1-D7保持不变保持不变.5/8/2024442.4.3MCS-51数据存储器8/1/202344字节地址位地址2FH2EH2DH2CH2BH2AH29H28H27H26H25H24H23H22H21H20HD7D6D5D4D3D2D1D07FH7EH7DH7CH7BH7AH79H78H77H76H75H74H73H72H71H70H6FH6EH6DH6CH6BH6AH69H68H67H66H65H64H63H62H61H60H5FH5EH5DH5CH5BH5AH59H58H57H56H55H54H53H52H51H50H4FH4EH4DH4CH4BH4AH49H48H47H46H45H44H43H42H41H40H3FH3EH3DH3CH3BH3AH39H38H37H36H35H34H33H32H31H30H2FH2EH2DH2CH2BH2AH29H28H27H26H25H24H23H22H21H20H1FH1EH1DH1CH1BH1AH19H18H17H16H15H14H13H12H11H10H0FH0EH0DH0CH0BH0AH09H08H07H06H05H04H03H02H01H00H5/8/202445字节地址位地址2FH2EH2D 通用通用RAMRAM区区 80 80个,一般用于堆栈或其他操作个,一般用于堆栈或其他操作 片外片外RAM 64K 0000H-FFFFH RAM 64K 0000H-FFFFH 低地址与片内低地址与片内RAMRAM重重 合。合。靠指令区分:靠指令区分:MOV 38H,#80H ;MOV 38H,#80H ;片内片内RAMRAM MOVX DPTR,#80H MOVX DPTR,#80H 片外片外RAMRAM5/8/202446通用RAM区80个,一般用于堆栈或其他操作8/2.4.4 MCS-51 2.4.4 MCS-51 的特殊功能寄存器(的特殊功能寄存器(SFR)SFR)21 21个个 ,与片内,与片内RAMRAM统一编址,分布在统一编址,分布在80H-FFH80H-FFH地地 址空间内。址空间内。字节地址能被字节地址能被8 8整除的(即十六进纸的地址码尾整除的(即十六进纸的地址码尾 数为数为0 0或或8 8的)单元可以具有位地址功能。的)单元可以具有位地址功能。例如:例如:P0P0(字节地址(字节地址80H 80H 位地址位地址 80H-87H)80H-87H)P1(P1(字节地址字节地址90H 90H 位地址位地址 90H-97H)90H-97H)P2(P2(字节地址字节地址A0H A0H 位地址位地址 A0H-A7H)A0H-A7H)P3(P3(字节地址字节地址B0H B0H 位地址位地址 B0H-B7H)B0H-B7H)ACC(ACC(字节地址字节地址E0H E0H 位地址位地址 E0H-E7H)E0H-E7H)每个寄存器都有一个名字,不用记它的地址号。每个寄存器都有一个名字,不用记它的地址号。5/8/2024472.4.4MCS-51的特殊功能寄存器(SFR)8/1/符号单元地址名称位地址符号地址*ACCE0H累加器ACC.7ACC.0E7HE0H*BF0H乘法寄存器B.7B.0F7HF0H*PSWD0H程序状态字PSW.7PSW.0D7HD0HSP81H堆栈指针DPL82H数据存储器指针(低8位)DPH83H数据存储器指针(高8位)*IEA8H中断允许控制器IE.7IE.0AFHA8H*IPB8H中断优先控制器IP.7IP.0BFHB8H*P080H通道0P0.7P0.087H80H*P190H通道1P1.7P1.097H90H*P2A0H通道2P2.7P2.0A7HA0H*P3B0H通道3P3.7P3.0B7HB0HPCON87H电源控制及波特率选择*SCON98H串行口控制SCON.7SCON.09FH98HSBUF99H串行数据缓冲器*TCON88H定时控制TCON.7TCON.08FH88HTMOD89H定时器方式选择TL08AH定时器0低8位TL18BH定时器1低8位TH08CH定时器0高8位TH18DH定时器1高8位5/8/202448符号单元地址名称位地址符号地址*ACCE0H累加器ACC.累加器(累加器(AccAcc)运算指令的目标寄存器,用于访问外部存储器的唯一寄存器。运算指令的目标寄存器,用于访问外部存储器的唯一寄存器。B B寄存器(寄存器(B B)专用于乘除法指令,亦可作通用寄存器。专用于乘除法指令,亦可作通用寄存器。堆栈指针(堆栈指针(SPSP)栈指针复位状态栈指针复位状态07H数据指针(数据指针(DPTRDPTR)1616位寄存器,由两个位寄存器,由两个8 8位寄存器位寄存器DPHDPH与与DPLDPL组成。组成。主要作用是提供访问外部数据存储器或主要作用是提供访问外部数据存储器或I/OI/O端口的地址。端口的地址。DPHDPH与与DPLDPL可作为通用寄存器使用。可作为通用寄存器使用。程序计数器(程序计数器(PCPC)即指令指针。即指令指针。1616位寄存器,为位寄存器,为CPUCPU提供当前待取的指令地址。提供当前待取的指令地址。CPUCPU每读取一个字节的指令内容,每读取一个字节的指令内容,PCPC即自动加一。即自动加一。复位状态为复位状态为0000H0000H。不能在程序中直接读或修改不能在程序中直接读或修改PCPC的内容。的内容。5/8/202449累加器(Acc)8/1/2023492.5 MCS-512.5 MCS-51的并行口操作的并行口操作 2.5.1 4 2.5.1 4个并行口,个并行口,8 8位,输入位,输入/输出,每一条口线都可以输出,每一条口线都可以 单独用作位单独用作位 输入输入/输出。输出。P0 P0口:用作地址口:用作地址/数据总线,分时复用技术,执行数据总线,分时复用技术,执行 输出指令时,低输出指令时,低8 8位地址信息、位地址信息、8 8位数据信息先后出位数据信息先后出 现在现在P0P0口(地址口(地址/数据总线)上。执行输入指时,数据总线)上。执行输入指时,先输出先输出8 8位地址,然后数据进入内部数据总线。位地址,然后数据进入内部数据总线。P2 P2口:在有外部口:在有外部ROMROM或扩展了外部或扩展了外部RAMRAM时,用作时,用作 地址的高地址的高8 8位。位。5/8/2024502.5MCS-51的并行口操作8/1/2023505/8/2024518/1/202351单片机在读写外部数据时,单片机在读写外部数据时,P0口上首先出现的是低口上首先出现的是低8位地址,位地址,然后是数据信号,当然地址信号与指令数据信号之间有一然后是数据信号,当然地址信号与指令数据信号之间有一段缓冲的过度时间,这就要求,在数据信号出现以前必须段缓冲的过度时间,这就要求,在数据信号出现以前必须把低把低8位的地址信号保存起来,这时是用位的地址信号保存起来,这时是用ALE选通脉冲去控选通脉冲去控制锁存器把低制锁存器把低8位地址予以锁存。这就是说在一个单片机的位地址予以锁存。这就是说在一个单片机的系统中,只要外部扩展有存储器或输入输出设备,就必须系统中,只要外部扩展有存储器或输入输出设备,就必须增加一片锁存器器件(增加一片锁存器器件(74LS273或或74LS373)。所以单片机上。所以单片机上有一个引脚有一个引脚ALE,用来区别用来区别P0输出的是地址还是数据。输出的是地址还是数据。5/8/202452单片机在读写外部数据时,P0口上首先出现的是低8位地址,然后 P3P3口的第二功能口的第二功能 P3.0 RXD (P3.0 RXD (串行口数据输入)串行口数据输入)P3.1 TXD (P3.1 TXD (串行口数据输出)串行口数据输出)P3.2 INT0 P3.2 INT0(外部中断(外部中断0 0输入)输入)P3.3 INT1 (P3.3 INT1 (外部中断外部中断1 1输入)输入)P3.4 T0 (P3.4 T0 (定时器定时器0 0外部输入)外部输入)P3.5 T1 (P3.5 T1 (定时器定时器1 1外部输入)外部输入)P3.6 WR (P3.6 WR (外部数据存储器外部数据存储器“写写”控制信号)控制信号)P3.7 RD (P3.7 RD (外部数据存储器外部数据存储器“读读”控制信号)控制信号)P1 P1口:口:I/OI/O口口5/8/202453P3口的第二功能8/1/2023532.5.2 2.5.2 什么时间用到口的第二功能?要不要预先设置什么时间
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 办公文档 > 教学培训


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!