单片机讲义

单片机原理及应用

教案

机电工程学院

电气工程系

第一章绪论

第一节单片机

单片机即单片机微型计算机,是将计算机主机(CPU、内存和I/O接口)集成在一小块硅片上的微型机。

第二节单片机的历史与现状

第一阶段(1976~1978年):低性能单片机的探索阶段。以Intel公司的MCS-48为代表,采用了单片结构,即在一块芯片内含有8位CPU、定时/计数器、并行I/O口、RAM 和ROM等。主要用于工业领域。

第二阶段(1978~1982年):高性能单片机阶段,这一类单片机带有串行I/O口,8位数据线、16位地址线可以寻址的范围达到64K字节、控制总线、较丰富的指令系统等。这类单片机的应用范围较广,并在不断的改进和发展。

第三阶段(1982~1990年):16位单片机阶段。16位单片机除CPU为16位外,片内RAM和ROM容量进一步增大,实时处理能力更强,体现了微控制器的特征。例如Intel 公司的MCS-96主振频率为12M,片内RAM为232字节,ROM为8K字节,中断处理能力为8级,片内带有10位A/D转换器和高速输入/输出部件等。

第四阶段(1990年~):微控制器的全面发展阶段,各公司的产品在尽量兼容的同时,向高速、强运算能力、寻址范围大以及小型廉价方面发展。

第三节单片机的应用领域

一、单片机在仪器仪表中的应用

二、单片机在机电一体化中的应用

三、单片机在智能接口和多机系统中的应用

四、单片机在生活中的应用

第二章硬件结构

第一节MCS-51单片机及其演变

特点

(1)一个8位微处理器CPU。

(2)数据存储器RAM和特殊功能寄存器SFR。

(3)内部程序存储器ROM。

(4)两个定时/计数器,用以对外部事件进行计数,也可用作定时器。

(5)四个8位可编程的I/O(输入/输出)并行端口,每个端口既可做输入,也可做输出。(6)一个串行端口,用于数据的串行通信。

(7)中断控制系统。

(8)内部时钟电路。

第二节80C51单片机的基本结构

1) 中央处理器(CPU)

中央处理器是单片机的核心,完成运算和控制功能。MCS-51的CPU能处理8位二进制数或代码。

2) 内部数据存储器(内部RAM)

8051芯片中共有256个RAM单元,但其中后128单元被专用寄存器占用,能作为寄存器供用户使用的只是前128单元,用于存放可读写的数据。因此通常所说的内部数据存储器就是指前128单元,简称内部RAM。

3) 内部程序存储器(内部ROM)

8051共有4 KB掩膜ROM,用于存放程序、原始数据或表格,因此,称之为程序存储器,简称内部ROM。

4) 定时/计数器

8051共有两个16位的定时/计数器,以实现定时或计数功能,并以其定时或计数结果对计算机进行控制。

5) 并行I/O口

MCS-51共有4个8位的I/O口(P0、P1、P2、P3),以实现数据的并行输入/输出。在实

训中我们已经使用了P1口,通过P1口连接8个发光二极管。

第三节 80C51单片机的引脚功能

MCS-51是标准的40引脚双列直插式集成电路芯片,引脚排列请参见图

P0.0 ~ P0.7: P0口8位双向口线。 P1.0 ~ P1.7 :P1口8位双向口线。 P2.0 ~ P2.7 :P2口8位双向口线。 P3.0 ~ P3.7 :P3口8位双向口线。 ALE :地址锁存控制信号。在系统扩展时,ALE 用于控制把P0口输出的低8位地址锁存起来,以实现低位地址和数据的隔离。此外,由于ALE 是以晶振1/6的固定频率输出的正脉冲,因此,可作为外部时钟或外部定时脉冲使用。

PSEN :外部程序存储器读选通信号。在读外部ROM 时,PSEN 有效(低电平),以实现外部ROM 单元的读操作。 EA :访问程序存储控制信号。当信号为低电平时,对ROM 的读操作限定在外部程序存储器;当信号为高电平时,对ROM 的读操作是从内部程序存储器开始,并可延至外部程序存储器。

RST :复位信号。当输入的复位信号延续两个机器周

期以上的高电平时即为有效,用以完成单片机的复位初始化操作。

XTAL1和XTAL2:外接晶体引线端。当使用芯片内部时钟时,此二引线端用于外接石英晶体和微调电容;当使用外部时钟时,用于接外部时钟脉冲信号。 VSS :地线。

VCC :+5 V 电源。

以上是MCS-51单片机芯片40条引脚的定义及简单功能说明,读者可以对照实训电路找到相应引脚,在电路中查看每个引脚的连接使用。 P3口线的第二功能。P3的8条口线都定义有第二功能

第四节 存储器结构

MCS-51单片机的芯片内部有RAM 和ROM 两类存储器,即所谓的内部RAM 和内部ROM

P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78RST/VPD 9RXD P3.010TXD P3.111INT0 P3.212INT1 P3.313T0 P3.414T1 P3.515WR P3.616RD P3.717XTAL218XTAL119VSS 20P2.021P2.122P2.223

P2.324

P2.425P2.526P2.627

P2.728

PSEN 29ALE/PROG 30EA/VPP 31

P0.732

P0.633P0.534P0.435

P0.336

P0.237P0.138P0.039VCC 40

8031 8051 8751

MCS-51内部程序存储器

MCS-51的程序存储器用于存放编好的程序和表格常数。8051片内有4 KB的ROM,8751片内有4 KB的EPROM,8031片内无程序存储器。MCS-51的片外最多能扩展64 KB 程序存储器,片内外的ROM是统一编址的。如端保持高电平,8051的程序计数器PC在0000H~0FFFH地址范围内(即前4 KB地址) 是执行片内ROM中的程序,当PC在1000H~FFFFH地址范围时,自动执行片外程序存储器中的程序;当保持低电平时,只能寻址外部程序存储器,片外存储器可以从0000H开始编址。

MCS-51的程序存储器中有些单元具有特殊功能,使用时应予以注意。

其中一组特殊单元是0000H~0002H。系统复位后,(PC)=0000H,单片机从0000H 单元开始取指令执行程序。如果程序不从0000H单元开始,应在这三个单元中存放一条无条件转移指令,以便直接转去执行指定的程序。

还有一组特殊单元是0003H~002AH,共40个单元。这40个单元被均匀地分为5段,作为5个中断源的中断地址区。其中:

0003H~000AH 外部中断0中断地址区

000BH~0012H 定时/计数器0中断地址区

0013H~001AH 外部中断1中断地址区

001BH~0022H 定时/计数器1中断地址区

0023H~002AH 串行中断地址区

中断响应后,按中断种类,自动转到各中断区的首地址去执行程序,因此在中断地址区中理应存放中断服务程序。但通常情况下,8个单元难以存下一个完整的中断服务程序,因此通常也是从中断地址区首地址开始存放一条无条件转移指令,以便中断响应后,通过中断地址区,再转到中断服务程序的实际入口地址。

MCS-51内部数据存储器

内部数据存储器低128单元

8051的内部RAM共有256个单元,通常把这256个单元按其功能划分为两部分:低128单元(单元地址00H~7FH)和高128单元(单元地址80H~FFH)。如图所示为低128单元的配置图。

寄存器区

8051共有4组寄存器,每组8个寄存单元(各为8),各组都以R0~R7作寄存单元编号。寄存器常用于存放操作数中间结果等。由于它们的功能及使用不作预先规定,因此称之为通用寄存器,有时也叫工作寄存器。4组通用寄存器占据内部RAM的00H~1FH 单元地址。

在任一时刻,CPU只能使用其中的一组寄存器,并且把正在使用的那组寄存器称之为当前寄存器组。到底是哪一组,由程序状态字寄存器PSW中RS1、RS0位的状态组合来决定。

通用寄存器为CPU提供了就近存储数据的便利,有利于提高单片机的运算速度。此

外,使用通用寄存器还能提高程序编制的灵活性,因此,在单片机的应用编程中应充分利用这些寄存器,以简化程序设计,提高程序运行速度。

位寻址区

内部RAM 的20H ~2FH 单元,既可作为一般RAM 单元使用,进行字节操作,也可以对单元中每一位进行位操作,因此把该区称之为位寻址区。位寻址区共有16个RAM 单元,计128位,地址为00H ~7FH 。MCS-51具有布尔处理机功能,这个位寻址区可以构成布尔处理机的存储空间。这种位寻址能力是MCS-51的一个重要特点。 用户RAM 区

在内部RAM 低128单元中,通用寄存器占去32个单元,位寻址区占去16个单元,剩下80个单元,这就是供用户使用的一般RAM 区,其单元地址为30H ~7FH 。对用户RAM 区的使用没有任何规定或限制,但在一般应用中常把堆栈开辟在此区中。 内部数据存储器高128单元

内部RAM 的高128单元是供给专用寄存器使用的,其单元地址为80H ~FFH 。因这些寄存器的功能已作专门规定,故称之为专用寄存器(Special Function Register ),也可称为特殊功能寄存器。

第五节 特殊功能存储器SFR

00H

A0H A8H B0H B8H D0H E0H

特殊功能寄存器中位寻址

外部 ROM

内部 ROM

(EA=1) 外部 ROM

(EA=0)

0000H 0000H 0FFFH

0FFFH

1000H

FFFFH

0000H

FFFFH

内部数据存储器

(a )

外部数据存储器

(b )

程序存储器 (c )

8051共有21个专用寄存器,现把其中部分寄存器简单介绍如下:

程序计数器(PC —Program Counter )。在实训中,我们已经知道PC 是一个16位的计数器,它的作用是控制程序的执行顺序。其内容为将要执行指令的地址,寻址范围达64 KB 。PC 有自动加1功能,从而实现程序的顺序执行。PC 没有地址,是不可寻址的,因此用户无法对它进行读写,但可以通过转移、调用、返回等指令改变其内容,以实现程序的转移。因地址不在SFR (专用寄存器)之内,一般不计作专用寄存器。

累加器(ACC —Accumulator )。累加器为8位寄存器,是最常用的专用寄存器,功能较多,地位重要。它既可用于存放操作数,也可用来存放运算的中间结果。MCS-51单片机中大部分单操作数指令的操作数就取自累加器,许多双操作数指令中的一个操作数也取自累加器。

B 寄存器。B 寄存器是一个8位寄存器,主要用于乘除运算。乘法运算时,B 存乘数。乘法操作后,乘积的高8位存于B 中,除法运算时,B 存除数。除法操作后,余数存于B 中。此外,B 寄存器也可作为一般数据寄存器使用。

程序状态字(PSW —Program Status Word )。程序状态字是一个8位寄存器,用于存放程序运行中的各种状态信息。其中有些位的状态是根据程序执行结果,由硬件自动设置的,而有些位的状态则使用软件方法设定。PSW 的位状态可以用专门指令进行测试,也可以用指令读出。一些条件转移指令将根据PSW 有些位的状态,进行程序转移。PSW 的各位定义如下:

除PSW.1位保留未用外,其余各位的定义及使用如下:

CY (PSW.7)——进位标志位。CY 是PSW 中最常用的标志位。其功能有二:一是存放算术运算的进位标志,在进行加或减运算时,如果操作结果的最高位有进位或借位时,CY 由硬件置“1”,否则清“0”;二是在位操作中,作累加位使用。位传送、位与位或等位操作,操作位之一固定是进位标志位。

AC (PSW.6)——辅助进位标志位。在进行加减运算中,当低4位向高4位进位或借位时,AC 由硬件置“1”,否则AC 位被清“0”。在BCD 码调整中也要用到AC 位状态。 F0(PSW.5)——用户标志位。这是一个供用户定义的标志位,需要利用软件方法置位或

PSW 位地址

D7H D6H D5H D4H D3H D2H D1H D0H 字节地址

CY AC

F0

RS1

RS0

OV

F1

P

复位,用以控制程序的转向。

RS1和RS0(PSW.4,PSW.3)——寄存器组选择位。它们被用于选择CPU当前使用的通用寄存器组。通用寄存器共有4组,其对应关系如下:

00:0组01:1组10:2组11:3组

这两个选择位的状态是由软件设置的,被选中的寄存器组即为当前通用寄存器组。但当单片机上电或复位后,RS1 RS0=00。

OV(PSW.2)——溢出标志位。在带符号数加减运算中,OV=1表示加减运算超出了累加器A所能表示的符号数有效范围(-128 ~+127),即产生了溢出,因此运算结果是错误的,否则,OV=0表示运算正确,即无溢出产生。

P(PSW.0)——奇偶标志位。表明累加器A中内容的奇偶性。如果A中有奇数个“1”,则P置“1”,否则置“0”。凡是改变累加器A中内容的指令均会影响P标志位。此标志位对串行通信中的数据传输有重要的意义。在串行通信中常采用奇偶校验的办法来校验数据传输的可靠性。

数据指针(DPTR)。数据指针为16位寄存器。编程时,DPTR既可以按16位寄存器使用,也可以按两个8位寄存器分开使用,即:DPH DPTR高位字节,DPL DPTR低位字节。DPTR通常在访问外部数据存储器时作地址指针使用。由于外部数据存储器的寻址范围为64 KB,故把DPTR设计为16位。

堆栈指针(SP—Stack Pointer)。堆栈是一个特殊的存储区,用来暂存数据和地址,它是按“先进后出”的原则存取数据的。堆栈共有两种操作:进栈和出栈。由于MCS-51单片机的堆栈设在内部RAM中,因此SP是一个8位寄存器。系统复位后,SP的内容为07H,从而复位后堆栈实际上是从08H单元开始的。但08H~1FH单元分别属于工作寄存器1~3区,如程序要用到这些区,最好把SP值改为1FH或更大的值。

对专用寄存器的字节寻址问题作如下几点说明:

(1)21个可字节寻址的专用寄存器是不连续地分散在内部RAM高128单元之中,尽管还余有许多空闲地址,但用户并不能使用。

(2) 程序计数器PC不占据RAM单元,它在物理上是独立的,因此是不可寻址的寄存器。

(3) 对专用寄存器只能使用直接寻址方式,书写时既可使用寄存器符号,也可使用寄存器。

第六节输入输出端口

单片机芯片内还有一项主要内容就是并行I/O口。MCS-51共有4个8位的并行I/O 口,分别记作P0、P1、P2、P3。每个口都包含一个锁存器、一个输出驱动器和输入缓冲

器。实际上,它们已被归入专用寄存器之列,并且具有字节寻址和位寻址功能。

在访问片外扩展存储器时,低8位地址和数据由P0口分时传送,高8位地址由P2口传送。在无片外扩展存储器的系统中,这4个口的每一位均可作为双向的I/O 端口使用。

第七节 时钟电路

在MCS-51芯片内部有一个高增益反相放大器,其输入端为芯片引脚XTAL1,其输出端为引脚XTAL2 。而在芯片的外部,XTAL1和XTAL2之间跨接晶体振荡器和微调电容,从而构成一个稳定的自激振荡器,这就是单片机的时钟电路。

1.振荡周期:为单片机提供时钟信号的振荡源的周期。

2.时钟周期:是振荡源信号经二分频后形成的时钟脉冲信号。 3.机器周期:通常将完成一个基本操作所需的时间称为机器周期。

4.指令周期:是指CPU 执行一条指令所需要的时间。一个指令周期通常含有1~4个机器周期。

外部时钟源

写锁存器内部总线

第八节 复位电路

单片机复位是使CPU 和系统中的其他功能部件都处在一个确定的初始状态,并从这个状态开始工作,例如复位后PC=0000H ,使单片机从第一个单元取指令。实训中已经看出,无论是在单片机刚开始接上电源时,还是断电后或者发生故障后都要复位,所以我们必须弄清楚MCS-51型单片机复位的条件、复位电路和复位后状态。 第三章MCS-51指令系统

第一节 指令格式

采用助记符表示的汇编语言指令格式如下:

标号是程序员根据编程需要给指令设定的符号地址,可有可无;标号由1~8个字符组成,第一个字符必须是英文字,不能是数字或其它符号;标号后必须用冒号。

22 μ1 k Ω

(a)

(b)

操作码表示指令的操作种类,如MOV表示数据传送操作,ADD表示加法操作等。

操作数或操作数地址表示参加运算的数据或数据的有效地址。操作数一般有以下几种形式:没有操作数项,操作数隐含在操作码中,如RET指令;只有一个操作数,如CPL A 指令;有两个操作数,如MOV A,#00H指令,操作数之间以逗号相隔;有三个操作数,如CJNE A,#00H,NEXT指令,操作数之间也以逗号相隔。

注释是对指令的解释说明,用以提高程序的可读性;注释前必须加分号。

第二节寻址方式

寻找操作数地址的方式称为寻址方式。

1. 寄存器寻址

寄存器寻址是指将操作数存放于寄存器中,寄存器包括工作寄存器R0~R7、累加器A、通用寄存器B、地址寄存器DPTR等。例如,指令MOV R1,A的操作是把累加器A中的数据传送到寄存器R1中,其操作数存放在累加器A中,所以寻址方式为寄存器寻址。

如果程序状态寄存器PSW的RS1RS0=01(选中第二组工作寄存器,对应地址为08H~0FH),设累加器A的内容为20H,则执行MOV R1,A指令后,内部RAM 09H 单元的值就变为20H。

2. 直接寻址

直接寻址是指把存放操作数的内存单元的地址直接写在指令中。在MCS-51单片机中,可以直接寻址的存储器主要有内部RAM区和特殊功能寄存器SFR区。

例如,指令MOV A,3AH执行的操作是将内部RAM 中地址为3AH的单元内容传送到累加器A中,其操作数3AH就是存放数据的单元地址,因此该指令是直接寻址。

3. 立即数寻址

立即数寻址是指将操作数直接写在指令中。

例如,指令MOV A,#3AH执行的操作是将立即数3AH送到累加器A中,该指令就是立即数寻址。

4. 寄存器间接寻址

寄存器间接寻址是指将存放操作数的内存单元的地址放在寄存器中,指令中只给出该寄存器。执行指令时,首先根据寄存器的内容,找到所需要的操作数地址,再由该地址找到操作数并完成相应操作。

在MCS-51指令系统中,用于寄存器间接寻址的寄存器有R0、R1和DPTR,称为寄存器间接寻址寄存器。

设R0=3AH,内部RAM 3AH中的值是65H,则指令MOV A,@R0的执行结果是累加器A的值为65H。

5. 变址寻址

变址寻址是指将基址寄存器与变址寄存器的内容相加,结果作为操作数的地址。DPTR或PC是基址寄存器,累加器A是变址寄存器。该类寻址方式主要用于查表操作。

例如,指令MOVC A,@A+DPTR执行的操作是将累加器A和基址寄存器DPTR 的内容相加,相加结果作为操作数存放的地址,再将操作数取出来送到累加器A中。

设累加器A=02H,DPTR=0300H,外部ROM中,0302H单元的内容是55H,则指令MOVC A,@A+DPTR的执行结果是累加器A的内容为55H。

6. 相对寻址

相对寻址是指程序计数器PC的当前内容与指令中的操作数相加,其结果作为跳转指令的转移地址(也称目的地址)。该类寻址方式主要用于跳转指令。

例如,指令SJMP 54H执行的操作是将PC当前的内容与54H相加,结果再送回PC中,成为下一条将要执行指令的地址。

设指令SJMP 54H的机器码80H 54H存放在2000H处,当执行到该指令时,先从2000H和2001H单元取出指令,PC自动变为2002H;再把PC的内容与操作数54H 相加,形成目标地址2056H,再送回PC,使得程序跳转到2056H单元继续执行。

7. 位寻址

位寻址是指按位进行的寻址操作,而上述介绍的指令都是按字节进行的寻址操作。MCS-51单片机中,操作数不仅可以按字节为单位进行操作,也可以按位进行操作。当我们把某一位作为操作数时,这个操作数的地址称为位地址。

位寻址区包括专门安排在内部RAM中的两个区域:一是内部RAM的位寻址区,地址范围是20H~2FH,共16个RAM单元,位地址为00H~7FH;二是特殊功能寄存器SFR中有11个寄存器可以位寻址,参见有关章节中位地址定义。

第三节数据操作和指令类型

MCS-51单片机指令系统包括111条指令,按功能可以划分为以下5类

数据传送指令(29条)

算术运算指令(24条)

逻辑运算指令(24条)

控制转移指令(17条)

位操作指令(17条)

第四节数据传送指令

数据传送指令是MCS-51单片机汇编语言程序设计中使用最频繁的指令,包括内部RAM、寄存器、外部RAM以及程序存储器之间的数据传送。

数据传送操作是指把数据从源地址传送到目的地址,源地址内容不变。

1. 以累加器A为目的操作数的指令

MOV A, #data ;A←#data

MOV A, Rn ;n=0~7,A←(Rn)

MOV A, @Ri ;i=0,1 ,A←((Ri))

MOV A, direct ;A←(Rn) direct为内部RAM或SFR地址

2. 以Rn为目的操作数的指令

MOV Rn, A ;Rn ←(A) ,n=0~7

MOV Rn ,direct ;Rn ←(direct)

MOV Rn ,#data ;Rn ←#data

3.以直接地址为目的操作数的指令

MOV direct, A ;direct←(A)

MOV direct, Rn ;direct←(Rn) ,n=0~7

MOV direct, @Ri ;direct←(( Ri ) ) ,i=0,1

MOV direct, direct ;direct←(direct)

MOV direct, #data ;direct←#data

4. 以寄存器间接地址为目的操作数指令

MOV @Ri, A ;((Ri) )←(A) ,i=0,1

MOV @Ri ,direct ;((Ri) )←(direct)

MOV @Ri ,#data ;((Ri) )←#data

字节交换指令

XCH A , Rn ;(A) ←→(R i)

XCH A , direct ;(A) ←→(direct)

XCH A , @Ri ;(A) ←→(R i)

半字节交换指令

XCHD A, @Ri ;(A)0-3 ←→((Ri )) 0-3

累加器A与外部数据传输指令

MOVX A, @DPTR ;A←((DPTR)) 地址范围64K MOVX A, @Ri ;A←((R i)) 地址范围0~255 MOVX @DPTR, A ;(DPTR) ←(A)

MOVX @Ri , A ;(R i) ←(A)

查表指令

1)MOVC A, @A+DPTR ;A ←((A)+(DPTR))

2)MOVC A, @A+PC ;A ←((A)+(pc))

第五节算术运算指令

加法指令(Addtion)

ADD A, Rn ;A←(A)+(Rn)

ADD A, @Ri ;A←(A)+((Ri))

ADD A, direct ;A←(A)+(direct)

ADD A, #data ;A←(A)+#data

带进位加法指令

ADDC A, Rn ;A←(A)+(Rn)+(Cy)

ADDC A, @Ri ;A←(A)+((Ri )) +(Cy)

ADDC A, direct ;A←(A)+(direct) +(Cy)

ADDC A, #data ;A←(A)+#data +(Cy)

加1指令

INC A ;A←(A)+1

INC Ri ;R i←(A)+1

INC direct ;direct←(direct)+1

INC @Ri ;(R i)←((R i))+1

INC DPTR ;DPTR←(DPTR)+1

十进制调整指令

DA A

带借位减法指令(Subtraction)

SUBB A, Rn ;A←(A)-(Rn)-(Cy)

SUBB A, @Ri ;A←(A)-((Ri) ) -(Cy)

SUBB A, direct ;A←(A)-(direct) -(Cy)

SUBB A, #data ;A←(A)-#data -(Cy)

减1指令(Decrease)

DEC A ;A←(A)-1

DEC Ri ;R i←(A)-1

DEC direct ;direct←(direct)-1

DEC @Ri ;(R i)←((R i))-1

乘法指令(Multiplication)

MUL AB

除法指令(Division)

DIV AB

第六节逻辑运算指令

简单逻辑操作指令

CLR A ;A←“0”

CPL A ;A←A

SWAP A ;A0~3 A4~7

左循环指令(Rotate Accumulator Left)

RL A

带进位左循环指令(Rotate Accumulator Left through Carry flag)RLC A

右循环指令(Rotate Accumulator Right)

RR A

带进位右循环指令(Rotate A Right with C)

RRC A

逻辑与指令

ANL A, Rn

ANL A, direct

ANL A, #data

ANL A, @Ri

ANL direct, A

ANL direct, #data

逻辑或指令

ORL A, Rn

ORL A, direct

ORL A, #data

ORL A, @Ri

ORL direct, A

ORL direct, #data

逻辑异或指令

XRL A, Rn

XRL A, direct

XRL A, #data

XRL A, @Ri

XRL direct, A

XRL direct, #data

第七节位操作指令

数据位传送指令

MOV C, bit ;bit 可直接寻址位C←(bit)

MOV bit,C ;C 进位位(bit) ←C

位变量修改指令

CLR C ; 将C=0

CLR bit

CPL C ; 将C求反再存入C

CPL bit ; 将bit求反再存入bit

SETB C ; 将C=1

SETB bit ;(bit) ←1

位变量逻辑指令

ANL C, bit ANL C, bit ORL C, bit ORL C, bit

第八章控制转移指令

跳转指令

短跳指令AJMP addr11

PC←addr11,跳转范围2k

长跳指令LJMP addr16

PC←addr16,跳转范围64k

间接跳转指令JMP @A+DPTR

PC←(A)+(DPTR)

相对转移指令SJMP rel

条件转移指令

JZ rel ;(A)=0,转移

JNZ rel ;(A)≠0,转移

JC rel ;如C=1, 转移

JNC rel ;如C=0, 转移

JB bit,rel ;如bit=1, 转移

JNB bit,rel ;如bit=0, 转移

JBC bit,rel ;如bit=1, 转移并bit=0

比较不相等转移指令

CJNE A,#data,rel;(A)=#data,继续C←0 (A)>#data,转C←0 (A)<#data,转C←1

特点:只有<时,C←1

CJNE A,direct,rel

CJNE Rn,#data,rel

CJNE @Ri,#data,rel

减 1 不为0 转移指令

DJNZ Rn,rel ;

DJNZ direct,rel

例:延时子程序

delay:MOV R7, #03H

delay0:MOV R6, #19H

delay1:DJNZ R6, delay1

DJNZ R7, delay0

RET

调用子程序指令

短调用指令ACALL addr11

长调用指令LCALL addr16

子程序返回指令RET

中断返回指令RETI

空操作指令NOP

第四章定时器/计数器

第一节概述

第二节结构和工作原理

实质是计数器,脉冲每一次下降沿,计数寄存器数值将加1。

计数的脉冲如果来源于单片机内部的晶振,由于其周期极为准确,这时称为定时器。

计数的脉冲如果来源于单片机外部的引脚,由于其周期一般不准确,这时称为计数器。

定时/计数器方式寄存器TMOD

(1) M1和M0:方式选择位。

(2) c/T :功能选择位。时,设置为定时器工作方式;时,设置为计数器工作方式。

(3) GATE:门控位。当GATE=0时,软件控制位TR0或TR1置1即可启动定时器;当GA TE=1时,软件控制位TR0或TR1须置1,同时还须(P3.2)或(P3.3)为高电平方可启动定时器,即允许外中断、启动定时器。

定时器/计数器控制寄存器TCON

(1) TCON.7 TF1:定时器1溢出标志位。当定时器1计满数产生溢出时,由硬件自动置TF1=1。在中断允许时,向CPU发出定时器1的中断请求,进入中断服务程序后,由硬件自动清0。在中断屏蔽时,TF1可作查询测试用,此时只能由软件清0。

(2) TCON.6 TR1:定时器1运行控制位。由软件置1或清0来启动或关闭定时器1。当GA TE=1,且为高电平时,TR1置1启动定时器1;当GATE=0时,TR1置1即可启动定时器1。

(3) TCON.5 TF0:定时器0溢出标志位。其功能及操作情况同TF1。

(4) TCON.4 TR0:定时器0运行控制位。其功能及操作情况同TR1。

(5) TCON.3 IE1:外部中断1()请求标志位。

(6)TCON.2 IT1:外部中断1触发方式选择位。

(7)TCON.1 IE0:外部中断0 ()请求标志位。

(8) TCON.0 IT0:外部中断0触发方式选择位。

第三节 定时/计数器的工作方式

1.方式0

方式0构成一个13位定时/计数器。图是定时器0在方式0时的逻辑电路结构,定时器1的结构和操作与定时器0完全相同。

2.方式1

定时器工作于方式1时。

由图可知,方式1构成一个16位定时/计数器,其结构与操作几乎完全与方式0相同,惟一差别是二者计数位数不同。

3.方式2

定时/计数器工作于方式2时,。

由图可知,方式2中,16位加法计数器的TH0和TL0具有不同功能,其中,TL0是8位计数器,TH0是重置初值的8位缓冲器。

4.方式3

定时/计数器工作于方式3时,其逻辑结构图如图所示。

中断

中断o sc 中断TF1TH0(8位)TR1

121f o 121f o sc

第四节编程和使用

1.计数器初值的计算

把计数器计满为零所需要的计数值设定为C,计数初值设定为TC,由此可得到公式:TC=M-C式中,M为计数器模值,该值和计数器工作方式有关。在方式0时M为213;在方式1时M为216;在方式2和方式3时M为28。

2.定时器初值的计算

在定时器模式下,计数器由单片机主脉冲经12分频后计数。因此,定时器定时时间T的公式:T=(M-TC)T计数,上式也可写成:TC=M-T/ T计数。式中,M为模值,和定时器的工作方式有关;T计数是单片机振荡周期TCLK的12倍;TC为定时器的定时初值。

第五章串行通讯基础

第一节串行通信基础

在计算机系统中,CPU和外部通信有两种通信方式:并行通信和串行通信。并行通信,即数据的各位同时传送;串行通信,即数据一位一位顺序传送。

串行通信的分类

按照串行数据的时钟控制方式,串行通信可分为同步通信和异步通信两类。

1. 异步通信(Asynchronous Communication)

在异步通信中,数据通常是以字符为单位组成字符帧传送的。字符帧由发送端一帧一帧地发送,每一帧数据均是低位在前,高位在后,通过传输线被接收端一帧一帧地接收。发送端和接收端可以由各自独立的时钟来控制数据的发送和接收,这两个时钟彼此独立,互不同步。

在异步通信中,接收端是依靠字符帧格式来判断发送端是何时开始发送,何时结束发送的。字符帧格式是异步通信的一个重要指标。

字符帧(Character Frame)

字符帧也叫数据帧,由起始位、数据位、奇偶校验位和停止位等4部分组成,

波特率(baud rate)

异步通信的另一个重要指标为波特率。

波特率为每秒钟传送二进制数码的位数,也叫比特数,单位为b/s,即位/秒。波特率用于表征数据传输的速度,波特率越高,数据传输速度越快。但波特率和字符的实际传

单片机实验讲义

单片机实验讲义

DVCC单片机实验系统简介 本科目实验使用的平台为启东公司的DVCC-52JH单片机仿真实验仪(带有配套试验软件)。可基本满足MCS-51(80C51)系列单片机课程(本/专科)的实验要求。 实验平台资源: 1、AT89C52单片机(6MHz晶体振荡器、256B片内RAM、8KB程 序存储器(FLASH)、3个定时/计数器、6个中断源(T2))。2、实验平台带有总线扩展有64BK片外RAM,用户可使用范围 0000H~0FEFFH;64KB片外ROM,用户可使用范围

0000H~0FEFFH。 3、实验平台的主要芯片有:1片8255可编程通用并行界面芯片、1 片8155芯片、1片译码芯片74138、1片74393芯片、1片D/A 转换芯片0832、1片A/D转换芯片0809、2片串/并转换芯片74164、若干辅助芯片74240、74373等和常用逻辑门电路芯片。 4、实验平台上的主要外设包括:K1~K10滑动开关、L1~L12发光二 极管(有3种颜色)、2个LED七段数码管、1个单脉冲发生器、1个时钟频率选择器、1个步进电机(带驱动电路)、1个直流电机(带驱动电路)、2个电位器、1个继电器、1个扬声器驱动、1个双踪模拟示波器、带有总线扩展区、带有EPROM烧录区。 实验系统的使用步骤: 1、在计算机、实验仪关闭时,使用实验平台自带的RS-232通用串口 线连接计算机的COM口和实验箱的J2串行口。

2、启动计算机,运行“DVCC52JH实验系统”。 3、在计算机上编写并调试实验程序,在实验箱中联接实验所需连线。 4、打开试验箱电源,点击实验箱上的“复位”按钮,再点击实验箱 上键盘区的“PCDBG”按钮。 5、在计算机上的“DVCC实验系统”软件中,左键单击工具栏上的 “联接”按钮(或选择“动态调试”菜单下的“联接DVCC实验系统选项”)。 6、如果联接正常将弹出若干小窗口。如果联接失败重新执行步骤3、 4。 7、在计算机上的“DVCC实验系统”软件中,选择“编译”菜单下 的“编译连接并传送”选项,将实验程序传送到实验箱。 8、在计算机上的“DVCC实验系统”软件中,左键单击工具栏中的 “运行”按钮,设置PC起始地址,观察实验现象,验证实验结果。 9、实验结束后关闭实验箱电源和计算机,拔下连线,收起实验箱并 放回原处。 软件实验 实验一清零实验 一、实验目的:

单片机精品课程讲义(框架) 周晶

多功能单片机系统板实验讲义 (框架)

一.多功能单片机系统开发板套件简介------------------------------------------------------------二.多功能单片机系统开发板套件资源介绍------------------------------------------------------三.多功能单片机系统开发板具备的仿真功能---------------------------------------------------四.单片机实验板用到的相关软件使用方法---------------------------------------------------五.多功能仿真学习开发板套件硬件实验------------------------------------------------------ 1.流水灯 2.8位数码管动静态显示 3.8位数码管电子钟 4.继电气控制实验 5.蜂鸣器发声实验 6. 4 X 4矩阵键盘扫描实验 7.红外遥控解码显示实验 8.I2C系统总线实验(24C08读写) 9.SPI串行实时时钟 DS1302 10.MAX232串行通信实验 11.MAX485串行通信实验 12.1602LCD字符型液晶显示 13.12864LCD液晶显示(图形、汉字) 14.DS1302+1602LCD+C51 时钟综合实验 15.串行温度传感器DS18B20 数字测温 16.ISP下载接口实验 17.中断实验一(外部中断) 18. 中断实验二(定时器中断) 19. 步进电机实验 20. A/D转换实验(TLC5615) 21. D/A转换实验(TLC1549) 22.AD 及DA 电压显示实验(TLC1549及TLC5615) 六.附录 原理图 布局图 程序清单

单片机复习总结讲义

单项选择题 1.8031单片机共有:4个并行口、1个串行口、2个外部中断、2个计数器。 2.五个中断源的等优先级的优先序:INT0(0003H)、T0(000BH)、INT1(0013H)、 T1(001BH)、TXD/RXD(0023H)。 3.复位后:pc(0000H)、sp(07H)、P1-P3(FFH)其余的都为0; 4. 字节地址RS0 RS1 寄存器组片内RAM地址 20H 0 0 0组00H~07H 21H 0 1 1组08H~0FH 22H 1 0 2组10H~17H 23H 1 1 3组18H~1FH 5.P0.0:80H、P0.1:81H依次类推 6.8031单片机的寻址范围为64KB ●在1个机器周期内,最多可读2个指令字节。 ●1个机器周期含6个时钟周期。 复位时RST端保持高电平时间最少为2个机器周期 ●存储器间接寻址的指令是MOV A,@R1 ●执行指令MOVX A,@DPTR时,为读操作/WR = 1,/RD = 0 执行指令MOVX @DPTR,A时,为写操作/WR = 0,/RD = 1 执行入栈指令PUSH时,栈顶指针SP为SP ←SP + 1 ●执行出栈指令POP时,栈顶指针SP为A:SP ←SP – 1 ●8031的四个并口中,无内部上拉电阻的并口是P0 ●8031的四个并口中,输出访问外部存储器高8位地址线的并口是P2 8031的四个并口中,无第二功能的并口是P1 ●8031不是借用片内RAM的寄存器为PC。 8031中不是8位的寄存器为DPTR ●8031仅使用外部ROM时有/EA = 0 ●8031控制外部ROM读取有效的控制线是/PSEN ●8031控制P0口数据/地址分离的控制线是ALE ●8031的控制线ALE在一个机器周期中出现2次高电平。

(最新经营)单片机操作讲义

试题编号3301 控制要求:于内部RAM中20H开始的区域中存有二十个无符号数,找出其中最大和最小数,分别送34H和35H单元。(注:目标程序于0800H单元开始) ORG0000H LJMPMAIN ORG0800H MAIN:MOVR0,#20H;从内部20H单元开始查找 MOVR7,#19;20个数需要比较19次 MOV34H,@R0;将20H单元的内容同时送34H和35H MOV35H,@R0 LOOP:INCR0;指向下一个单元 MOVA,@R0;读取到ACC CJNEA,34H,B1;将读取的内容与34H的内容进行比较,不相等跳B1处SJMPEXIT;相等则不作其它比较跳EXIT处 B1:JCXIAO;若A的内容小于34H的内容则C为1,跳XIAO处 MOV34H,A;C为0表明A大于34H的内容则替换掉34H的内容 SJMPEXIT;替换后退出不作最小数比较 XIAO:CJNEA,35H,B2;作最小数比较,不相等跳B2处 SJMPEXIT;相等退出到EXIT处 B2:JNCEXIT;若A的内容大于35H的内容跳EXIT处 MOV35H,A;若A的内容小于35H的内容则替换掉35H的内容 EXIT:DJNZR7,LOOP;判断比较次数是否完毕

使用指令:MOVTH0,#3CH MOVTL0,#0B0H 当晶振为6MHZ时,2us加一。50ms=50000us,50000/2=25000所以赋初值为65536-25000=40536,将40536转换为十六进制为9E58H高八位送TH0,第八位送TL0,使用指令:MOVTH0,#9EH MOVTL0,#58H 当晶振为11.0592MHZ时,12/11.0592us加一。50ms=50000us,50000*11.0592/12=46080所以赋初值为 65536-46080=19456,将19456转换为十六进制为4C00H高八位送TH0,第八位送TL0,使用指令:MOVTH0,#4CH MOVTL0,#00H 因为50ms闪烁一次太快,当要求2S进行一次闪烁时则需要中断2S/50ms=40次。 参考程序:(以12MHZ为例) ORG0000H AJMPMAIN ORG0003H;外部中断0的中断入口地址 AJMPHYSD MAIN:MOVTMOD,#01H;设置T0工作方式1,且为定时 MOVIE,#81H;CPU开中断和外部中断0开中断 BT:CLRP1.0 SJMPBT;白天灭LED且等待中断 HYSD:SETBP1.0;亮LED

基于C8051F330单片机系统设计入门-讲义版

基于C8051F330单片机系统设计入门 邬杨波 2008.08.08

目录 1、C8051F330单片机结构特点 1.1 C8051F330单片机概况 1.2 CIP-51TM 微控制器核 1.3 片内存储器 1.4 片内调试电路 1.5 可编程数字I/O和交叉开关 1.6 串行端口 1.7 可编程计数器阵列 1.8 10位模/数转换器 1.9 比较器 1.10 10位电流输出DAC 1.11引脚和封装定义 2、C8051F330单片机系统硬件设计要点 2.1 复位源特点及外部复位电路连接 2.2 C2接口电路 2.3 时钟系统特点及使用 2.4 I/O端口和交叉开关特点及配置 3、C8051F330单片机系统软件设计要点 3.1 单片机的初始化设置 3.2 软件延时程序

1 C8051F330单片机特点 1.1 C8051F330单片机概况 模拟外设 ?10位ADC(只限于F330) 转换速率可达200ksps 可多达16个外部单端或差分输入 VREF可在内部VREF、外部引脚或VDD中选择 内部或外部转换启动源 内置温度传感器 ?10位电流输出DAC(只限于F330) ?比较器 可编程回差电压和响应时间 可配置为中断或复位源 小电流(<0.4μA) 在片调试 ?片内调试电路提供全速、非侵入式的在系统调试(不需仿真器!)?支持断点、单步、观察/修改存储器和寄存器 ?比使用仿真芯片、目标仿真头和仿真插座的仿真系统有更优越的性能?廉价而完整的开发套件 供电电压…………………………2.7V - 3.6V ?典型工作电流:6.4mA @ 25MHz 9μA @ 32KHz ?典型停机电流:0.1μA 温度范围:-40°C - +85°C 高速8051微控制器内核 ?流水线指令结构;70%的指令的执行时间为一个或两个系统时钟周期?速度可达25MIPS(时钟频率为25MHz时) ?扩展的中断系统 存储器 ?768字节内部数据RAM(256+512) ?8KB FLASH;可在系统编程,扇区大小为512字节 数字外设 ?17个端口I/O;均耐5V电压,大灌电流 ?硬件增强型UART、SMBus和增强型SPI串口 ?4个通用16位计数器/定时器 ?16位可编程计数器/定时器阵列(PCA),有3个捕捉/比较模块 ?使用PCA或定时器和外部时钟源的实时时钟方式 时钟源 ?两个内部振荡器: 24.5MHz,±2%的精度,可支持无晶体UART操作 80/40/20/10 kHz低频率、低功耗振荡器 ?外部振荡器:晶体、RC、C、或外部时钟 ?可在运行中切换时钟源,适用于节电方式

1 C8051F单片机讲义

1 C8051F340单片机的并行接口 一、综述 GPIO,通用输入输出接口,是单片机与外部世界交换信息一种最简单的、最便洁、速度较快的一种接口方式,是其它接口方式的基础。一个单片机的GPIO 的数量,反映了这款单片机与外部世界交换信息的能力的大小。有些单片机的GPIO只有几个,有些可达数十甚至数百个。 C8051F340单片机的GPIO,共有P0、P1、P2、P3、P4五组并行口,每组8个引脚,共占用40个引脚,分别称P0.0、P0.1、P0.2、P0.3、P0.4、P0.5、P0.6、P0.7、P1.0……….P4.6、P4.7。每一个引脚都可以做为输入口,也可以做为输出口。如果做为输入口,有两种输入模式,分别是数字输入和模拟输入两种模式,如果做为输出口,也有两种输出模式,分别叫推挽输出、漏开输出。 C8051F340单片机,除了以上40个GPIO外,还有电源、调试、复位等8个引脚,合起来共同48个引脚。C8051F340单片机,是48脚的TQFP-48封装,表面贴的,与AT89S51/52、STC89C51/52比,管脚多,但占用的面积要小许多。 二、工作模式 数字输入模式,是用来输入开关、按键等具有两个状态的量,只有0V、3.3V 两种合理的输入电压。当然,稍有点误差,不会引起错误的读入结果。 模拟输入模式,是用来输入诸如表示电压、温度、压力等连续变化的量。输入电压的范围须在0~3.3V之间,超出这个范围,可能引起芯片永久损坏。这部分内容将在以后的有关章节中介绍。 输出模式,也有两种,分别叫推挽输出、漏开输出。推挽输出,是用两个MOS管,组成推挽电路,可以输出一个明确的电平。漏开输出,只用一个MOS 管的漏极做输出,如果我们在漏极上用一个电阻,接上我们所需的电压,可以实现电压的灵活输出。 三、模式配置

avr实验讲义

实验一 C语言的流水灯验证 一、实验目的 1. 熟悉AVR单片机实验平台、AVR Studio软件使用 2. 学习简单程序的调试方法 3. 了解AVR单片机内部结构 4. 学习AVR单片机I/O口的运用 5. 学习延时函数应用 6. 学习JTAG下载与调试程序 7. 学习AVR Studio 4软件菜单栏内容的应用 二、实验原理 本实验根据A VR单片机I/O口的性质,通过将I/O口定义为输出工作方式,通过设置该口的数据寄存器PORTx,就可以控制对应I/O 口外围引脚输出逻辑电平,输出高电平或低电平。这样就可以通过程序来控制I/O口,输出自定义的逻辑电平。因此就可以实现各种各样流水灯效果了。 三.实验平台的使用 本实验在AVR单片机实验平台和计算机综合操作完成。首先打开实验平台的电源,按照液晶面板的提示并输入自己的学号,选择与实验相关的的操作,在计算机安装软件AVR Studio 4,然后使用编程即可。注意不要乱动实验平台上与实验内容无关的器件。 四、实验内容和电路图 本实验基本要求要达到8个LED灯从D1到D8一个一个地变亮,然后反过来从D8到D1一个一个变亮,这样来回循环变动,实现一种简单的流水灯效果。完成后,再调试菜单栏的内容,如:通过设置断点来逐步运行程序。体验各个功能的作用,熟悉运用操作。参考电路图如下:(以PB口为例,低电平有效)

(注:I/O口可以任意设计,建议最好不要设PC口,因为此口作为JTAG仿真用。) 五.实验步骤及注意内容 1.安装A VR Studio 4,完成后在程序中打开 选择A VR GCC填写project name和工程的存放路径(注意:路径中不能有中文,否则将无法编译。)后点NEXT,再选择JTAG ICE

51单片机实验指导书

. 51系列单片机原理与应用实验 华南师范大学物理与工程工程学院 微机教研室 20010年9月

目录 实验须知 (2) 实验一数字量输入输出实验 (4) 实验二交通灯控制实验 (6) 实验三定时与中断实验 (8) 实验四串行通信实验 (11) 实验五串行A/D转换实验 (13) 实验六现实人体视觉暂留特性测试实验 (14) 实验七实时时钟制作实验 (17) 实验八简易电子琴制作实验 (18) 实验九 EEPROM应用—数字密码锁 (20) 实验十综合实验:教学板自检程序设计 (25) 实验十一数据采集—火灾报警装置的软硬件设计 (26) 附录一实验教学板 (27) 附录二实验用软件使用说明 (28)

实验须知 一、预习要求 1.实验前认真阅读实验指导书的相关内容,明确实验目的和实验任务。 2.实验前应做好预习报告,在报告中,要求画出所设计的实验电路原理图、程序流程图,编写好程序,并对程序加以注释,还要拟订好实验步骤。 二、实验要求 1.按实验中心安排的时间到指定实验室上实验课,不要迟到、缺席。有特殊原因不能在原安排时间来实验时,须提前一天通知实验中心负责教师。 2.认真完成每次实验的各项任务,实验结果要请指导教师检查。教师对实验内容提问,并对完成者进行记录。 3.爱护设备,保持清洁,不得在实验室内大声喧哗,不要将食物带入实验室,不擅自更换设备。 4.在实验箱(板)通电状态下,不要用手随意触摸电路板上除按键和开关以外的芯片等其它元器件。,严禁带电操作,即所有接线、改线和拆线操作均应在不带电的状态下进行。 5.实验中若发生异常情况应立即切断电源,并向指导教师报告,检查原因,避免再次发生类似情况。 6.实验完毕,请整理好实验设备后再离开实验室。 三、实验报告要求 实验报告必须使用实验报告专用纸,书写要工整、清楚,并在下一次实验时交给指导教师。实验报告应包括以下内容: 1.实验名称、实验人姓名、学号、班级、同组人姓名。 2.实验目的、任务(内容)。 3.各任务程序流程图、自编程序清单,对程序须给出适量注释(例如:变量和某些寄存器的作用,关键程序段的功能等)。 4.应画出所设计的完整实验电路图。 5.记录和分析实验调试过程中遇到的问题并给以合理的解释,简述是如何解决的。记录实验结果, 6.解答思考题。

单片机实验讲义

第一部分资料介绍: 一: 89C52内部结构及芯片图 AT89C52是美国ATMEL公司生产的低电压,高性能CMOS 8位单片机,片内含8K bytes的可反复擦写的只读程序存储器(PEROM)和256 bytes 的随即存储数据存储器(RAM),器件采用ATMEL公司的高密度,非易失性存储技术生产,与标准MCS-51指令系统及8052产品引脚兼容,片内置通用8位中央处理器(CPU)和FLASH存储单元。功能强大AT89C52单片机适合与许多较为复杂控制应用场合。 AT89C52提供以下标准功能:8K字节FLASH闪速存储器,256字节内部RAM,32个I/O口线,3个16位定时/计数器,一个6向量两级中断结构,一个全双工串行通信口,片内震荡器及时钟电路。同时,AT89C52可降致0HZ的静态逻辑操作,并支持两种软件可选的节点工作模式。空闲方式停止CPU工作,但允许RAM,定时/计数器,串行口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其他所有部件工作直到下一个部件复位。 主要性能参数: ·与MCS—51产品指令和引脚兼容 ·8K字节可擦写FLASH闪速储存器 ·1000次擦写周期 ·全静态操作:0HZ——24MHZ

二:89c1051/2051简述 1、AT89C1051/2051只有20只引脚,压缩了I/O端口与存储器容量,其余配置与功能不减,可方便地应用于家电产品及小型仪器仪表,是性能价格比极优的单片机。 AT89C1051和 AT89C2051的结构框图与引脚配置分别见附图 7-7和附图 7-8。 附图 7-8 AT89C1051/2051 引脚图 附图 7-7 AT89C1051/2051 结构框图 由附图7-7和附图7-8可见,AT89C1051/AT89C2051把原地址与数据总线有关的引脚全部压缩掉,使为20脚封装。但I/O端口线还有15条,其中8条.仍具有第二功能。除P3口的6个引脚(P3.0~P3.5)的第二功能与MCS—5l系列完全一致外,P1.0和P1.l还具有模拟比较器的功能。 当需要使用模拟比较器时,P1.0(AINO)作为同相输人端,P1.1(AINI)作为反相输入端。比较的结果由P3.6位的状态确定。若P3.6为1,说明AINO 电位高于AINI;若P3.6为0则反之。注意,P3.6没有引出片外,其状态可直接在片内特殊功能寄存器中通过位寻址读出。 2 、AT89C2051内有两个闪烁存储器程序加密位,可以被编程或不被编程器件内有一闪烁存储器地址计数器,计数器在RST上升沿复位为000H,在XTAL1引脚上加高电平脉冲则自动加l。 宜采用以下步骤对AT89C2051编程:加上电源后,RST及P3.2加高电平;P3.3~P3.5,P3.7加上写人数据代码模式的逻辑电平;在P1.0~P1.7上加上地址000H的数据代码;RST引脚电平升高到12V;P3.2加人一低电平脉冲,则一字节数据被编程写人。以此类推,直到最后一个字节编程完毕。 编程完毕后,应使XTAL1降到低电平,RST也降至低电平,然后悬浮所有相关I/O引脚,关掉电源。 AT89C2051有三个特征字可读出,以识别该器件。这种读特征字操作与读000H,00lH,002H地址单元内容操作相同,只是有关信号的逻辑电平有所不同。三:ISD1420单片20秒高保真语音录放IC ISD1420为美国ISD公司出品的优质单片语音录放电路,由振荡器、语音存储单元、前置放大器、自动增益控制电路、抗干扰滤波器、输出放大器组成。一个最小的录放系统仅由一个麦克风、一个喇叭、两个按钮、一个电源、少数电阻电容组成。录音内容存入永久存储单元,提供零功率信息存储,这个独一无二的方法是借助于美国ISD公司的专利——直接模拟存储技术(DAST TM)实现的。利用它,语音和音频信号被直接存储,以其原本的模拟形式进入EEPROM存储器。直接模拟存储允许使用一种单片固体电路方法完成其原本语音的再现。不仅语音质量优胜,而且断电语音保护。 一、特点: ◎使用方便的单片录放系统,外部元件最少 ◎重现优质原声,没有常见的背景噪音 ◎放音可由边沿或电平触发 ◎无耗电信息存储,省掉备用电池 ◎信息可保存100年,可反复录放10万次

《单片机技术》实验(2010级自本1003~4、电子1001~2、电气本1001~2、通信1001~2)教案

课程教案 课程名称:单片机技术实验 任课教师:王韧 所属系部:电气与信息工程学院 教学班级:自本1003~4 电子1001~2 电气本1001~2 通信本1001~2 教学时间:2012—2013学年第一学期湖南工学院

课程基本信息

湖南工学院教案用纸p 一、实验名称:数据传送实验 二、课时安排:2学时 三、实验目的 1、掌握单片机的汇编指令系统及汇编语言程序设计方法。 2、掌握单片机的存储器体系结构。 3、熟悉Keil软件的功能和使用方法。 4、掌握单片机应用程序的调试方法。 四、实验内容或原理 1、实现单片机内部RAM之间,外部RAM之间以及内部RAM与外部RAM之间的数据传送。 2、利用Keil软件编辑、汇编、调试、运行实验程序并记录实验数据。 五、设计要求 1、编写程序将00H~0FH 16个数据分别送到单片机内部RAM 30H~3FH单元中。 2、编写程序将片内RAM 30H~3FH的内容传送至片内RAM 40~4FH单元中。 3、编写程序将片内RAM 40H~4FH单元中的内容传送到外部RAM 4800H~480FH 单元中。 4、编写程序将片外4800H~480FH单元内容送到外部RAM 5800H~580FH单元中。 5、编写程序将片外RAM 5800H~580FH单元内容传送回片内RAM 50H~5FH单元中。 六、实验报告要求 1、实验目的和要求。 2、设计要求。 3、实验程序流程框图和程序清单。 4、实验总结。 5、思考题。 七、思考题 1、说明MCS-51系列单片机对片内RAM和片外RAM存贮器各有哪些寻址方式? 2、说明指令MOV A,20H和MOV C,20H中的20H含义有什么不同?传送指令

哈理工单片机实验讲义

单片机原理 (第2分册) 哈尔滨理工大学 2003年7月1日

目录 计算机控制实验室 单片机原理 (1) 数据排序与多字节十进制加法实验 (3) 定时器/计数器实验 (7) 外部中断实验 (10) 8255扩展并行口实验 (13) 串行口通讯实验 (15) A/D、D/A转换实验 (21)

撰写人姓名:____________ 撰写时间:_________________ 审查人姓名:_________________ 实验全过程记录 1:数据排序 一实验目的: 1.了解数据排序的简单算法。 2.了解数列的有序和无序概念 二实验内容: Size equ 5 Array equ 50h Change equ 0 mov 50h,#02h mov 51h,#01h mov 52h,#03h mov 53h,#05h mov 54h,#04h Sort: mov r0, #Array mov r7, #Size-1 clr Change Goon: mov a, @r0 mov r2, a inc r0

mov B, @r0 cjne a, B, NotEqual sjmp Next NotEqual: jc Next setb Change xch a, @r0 dec r0 xch a, @r0 inc r0 Next: djnz r7, Goon ;jb Change, Sort ljmp $ end 三实验用设备仪器及材料:计算机伟福实验箱万用表 四实验原理图:

五实验方法及步骤: 有序的数列更有利于查找。本程序用的是“冒泡排序”法,算法是将一个数与后面的数相比较,如果比后面的数大,则交换,如此将所有的数比较一遍后,最大的数就会在 数列的最后面。再进行下一轮比较,找出第二大数据,直到全部数据有序。

单片机PIC10F20X讲义

PIC10F20X 6-Pin, 8-Bit Flash Microcontroller 一、PIC10F Family 介绍 1.根本的特点 ---仅33条指令,12-bit宽度指 ---除程序支跳转指令为双周期指令外,其余所有指令皆为单周期指令 ---2级硬件堆栈 ---直接、间接和相对寻址模式 ---8-bit数据宽度 ---8个特殊功能存放器 ---准确的内部4 MHz 振荡器 – 4MHz 1% 3.0V, 25°C – 4MHz 2% 2.5V-5.5V, 0°C - + 85°C – 4MHz 5% 2.0V-5.5V, -40°C - +125°C ---在线编程(ICSP) ---在线调试(ICD) ---每个I/O口有25 mA的拉/灌电流 ---上电复位〔POR〕 --复位时间〔DRT〕 ---看门狗定时器(WDT)

---低功耗的睡眠电流(100nA) ---一个8-bit定时器(TMR0) ---可编程代码保护 ---引脚电平变化唤醒睡眠 2.PIC10F Family PIC10F Device-Specific Features Device Program Flash (Words) Data RAM Internal OSC Comparator PIC10F200 256 16 Yes - PIC10F202 512 24 Yes - PIC10F204 256 16 Yes 1 PIC10F206 512 24 Yes 1 Device Block Diagram Device Block Diagram Terms Precision Internal Oscillator I内部的4Mhz 系统时钟,精度可到达+/- 1% Special Function Registers 特殊功能存放器常被用于配置、控制外围 接口和CPU的操作 Data RAM 随机数据的访问存取 Instruction Decode 程序执行时解析操作码和操作数 Flash Program Memory 程序存储器 I/O Drivers and Controls 控制输入输出的电路和存放器 COMP 比拟器 W Register W存放器 Program Counter and Stack 程序计数指针指向下一条指令地址;10位

51单片机程序简单详解上课讲义

#include //头文件后面不加; 定义了单片机所有常用到的地址 sbit d1=P1^0; //位定义定义P1口的0位为d1 后面加; void main() //主函数后面不加; { d1=0; //输出P1口0位为低电平后面加; while(1); //一个完整程序必须得有始有终程序停止 } #include //头文件 sbit d1=P1^0; //位定义 unsigned int a; //定义无符号整形的变量,变量名随便写 void main() //主函数 { while(1) //程序须有始有终,首先进入大循环,以防出乱 { a=50000; //给a赋值 d1=0; //给d1低电平(点亮LED) while(a--); //a自减1 共减完到a所赋的值达到延时的目的 a=50000; //给a赋值 d1=1; //给d1高电平(熄灭LED) while(a--); //a自减1 共减完到a所赋的值达到延时的目的} } #include #define a unsigned int //宏定义定义a,在工程当中所用的a就代表了unsigned int #define b unsigned char //宏定义定义b,在工程当中所用的b就代表了unsigned char sbit d1=P1^0; void cnm(); //在主函数之前要声名子函数,加; void main() { while(1) // while(1)是个死循环,始终都在执行它内部的语句 { d1=0; //输出低电平(点亮LED) cnm(); // 调用子程序,直接写子函数的函数名作延时用 d1=1; //输出高电平(熄灭LED) cnm();// 调用子程序,直接写子函数的函数名作延时用 } }

单片机讲义

1、8051单片机片内集成了__________、__________、__________、__________、__________、__________、__________、__________等多个部分。 CPU、4KB程序存储器、128B数据存储器、128B特殊功能寄存器、2个16位的定时器/计数器、4个8位的并行I/O口、1个串行口、中断系统 2、程序状态字PSW是一个8位的标志寄存器,其中CY表示__________、AC表示__________、F0表示__________、RS1、RS0表示__________、OV表示__________、P表示__________。进位标志位、辅助进位位、用户自定义标志位、工作寄存器组选择位、溢出标志位、奇偶标志位 3、ALE/PROG被称为__________,每个机器周期输出__________个脉冲。在访问片外程序存储器时,下降沿用于__________;在不访问片外程序存储器时,其频率为振荡器的 __________,可作为__________。 地址锁存有效信号、2、控制锁存器锁存P0输出的低8位地址、1/6、对外输出的时钟脉冲或用于定时 4、EA 被称为__________,当它为高电平时,首先访问__________,当它为低电平,只访问__________。 片外程序存储器选用端、内部程序存储器、外部程序存储器。 5、单片机复位后的程序入口地址是__________,外部中断0的服务程序入口地址是 __________,定时器0的中断服务程序入口地址是__________,外部中断1的服务程序入口地址是__________,定时器1的中断服务入口地址是__________,串行口中断服务程序入口地址是__________。 0000H、0003H、000BH、0013H、001BH、0023H 6、在数据存储器中,工作寄存器区地址位于__________,当RS1RS0=00时,选择地址

单片机原理与应用实验讲义全

单片机原理与应用实验讲义 第一部分 DVCC—52JH+单片机仿真系统 仿真器是一种计算机(单片机)应用系统的开发工具,也称为开发机,用户设计的系统(硬件和软件),在仿真器的控制下进行逐步调试以期达到设计要求。仿真系统提供编辑、汇编、反汇编、监控命令和高级语言编辑等工具帮助用户设计、调试和修改用户系统的硬件和软件。因此,熟悉仿真系统的使用与掌握微机或单片机原理具有同等重要性。 DVCC—52JH+单片机仿真系统主要用于MCS—51系列单片机的仿真开发。由于随机器附带的操作手册容繁琐,特别是接口地址分配的不透明,给用户使用带来不便,为了使初学者能在较短时间高效率地掌握开发系统主要功能与基本使用方法,第一部分有针对性地介绍DVC—52JH+的操作使用,这是完成第二部分实验必须先修的容。 第一节键盘监控命令简介 一、键盘布局

每个键中央标注的文字是单片机仿真系统的控制命令表示,大部分键有两个功能或作用,如 7 7 R 键表示寄存器R7或数字7。整个键盘分为两大部分,左边的16个键是数字0~F 键或寄存器代码键;右边的16个键是功能键,功能键通常与数字键互相配合进行程序调试。 二、数据的显示 单片机仿真系统采用LED (发光二极管)七段显示器作数据显示,共有6个LED ,如图1所示,其中“·”用来显示小数点。左边的4个LED 一般用于显示程序存储器和数字存储器的地址,右边的2个LED 用来显示对应地址单位的容。 图1:LED 显示器 1、程序存储器和片外数据存储器 用4位十六进数表示地址,占满了左边4个LED 。例如,输入102F ,左边4个LED 显示该数102F ,若再按MEM 键(表示程序存储器),右边2个LED 则显示程序存储器102FH 单元的容;若输入102F 后再按ODRW (表示片外数据存储器),左边2个LED 显示片外数存102FH 单元的容。 2、片数据存储器 有两种显示方式。 (1)R0~R7、DPL 、DPH 、A 、B 、PSW 、PCH 、PCL 和SP 这16个寄存器键盘上已有,只需按该键一次,左边4个LED 显示一位对应的代码,右边2个LED 就能显示相应单元的容。例如:按R7键,左边4个LED 的最高位显示7(表示R7),再按REG (表示片数存),右边2个LED 显示R7单元的容。 (2)片其余的数据存储器用2个LED 显示地址。例如,输入24,再按REG 键,左边4个LED 只有2个LED 亮,右边2个LED 表示片24H 单元容。 (3)、右边2个LED 在显示时,总有一个LED 是闪动的,它表示该数值是可以修改的。 三、单片机仿真系统的单板状态,仿真1态和仿真2态 单板状态、仿真1态和仿真2态——仿真系统虽然提供了64KB 片外程序存储器和

[小学教育]单片机实验讲义

实验 实用文档《微机应用实验》课程教学所做的基本实验 前言 需要说明的是,设置本实验课程的目的完全是为了培养读者的“计算机工程概念”,即学习如何用最短的时间和最少的花费,将实际问题转化成使计算机能够“做到并完成”的方法。故读者在做每个实验之前,必须对所做实验的理论依据做出“形式化”的说明,只有在完全理解了这些依据的情况下,再进行实验才有意义。以下是每个合格的计算机工程人员在工作时都必须遵守的五个基本步骤(或称为五条原则)。 步骤一.对所希望解决的问题做出“形式化”的描述(用术语说就是“无二义性”,因为早在微型计算机出现之前,就有人证明过“计算机无法解决‘二义性’的问题”这个定理);若别人已经对该问题做出了这样的描述,则应确实理解它。 步骤二.根据所解决的问题的特性与规模,建立该问题与计算机所能处理的对象(即数据)之间的相互对应关系,用术语说就是进行问题的“数据设计”。 需要特别说明的是,前两个步骤基本上与所使用的计算机系统(包括硬件和软件)无关。 步骤三.选择某一种(或几种)相应的程序设计语言(必要时还要选择或设计相应的机器硬件),将步骤一中“人对问题的形式化描述”,转化成“计算机对问题的快速处理”,而计算机的“处理对象”则由步骤二所确定。用术语说就是进行问题的“程序代码设计”。另外需要说明的是在动手编写具体的程序代码之前,应先做“确定设计目标”的工作。即若编写的是子程序,就必须确定该子程序所处理的各种参数的形式和该子程序的“引用条件”;若编写的是程序,就必须确定该程序执行时所产生的现象、用户所做的操作和执行后所产生的结果等等。 步骤四.在各种特定的环境下,调试步骤三所编写的程序代码以保证其正确性。

单片机dp801教学讲义全

初级班 注新授指令后〔内数字为配套教材中页数 第一次课 1.什么是单片机 微型计算机由运算、控制、存储、输入、输出五部分组成。 微型计算机 单片微型计算机 2.单片机的用途 …… 凡是用到智能控制和自动控制的领域都离不开单片机。 3.数据 利用DP-801单片机处理的信息全部用两位的十进制数表示。通常有两种形式的数据: 带点数:表示存储单元的地址 不带点数:表示指令、代码 4.输 入、调试程序 修改数据: [+1]/[-1] 修改地址: [D/A]+ [+1]/[-1] 练 习: 读取前5个单元格中的数据。 存储数据: [WRI] 运行程序: [D/A]〔1.0.+ [WRI] [练习] 1.输入并运行程序 0.0. 00 05 00 04

00 03 00 02 00 01 00 00 02 05 01 15 2.输入18~22页上的6个实例,并运行程序。 第二次课 1.电路 在生活中,开灯关灯是我们最熟悉的事物了。 在DP-801上,我们利用指令来实现开灯关灯。 DP-801单片机主板上的6个发光二极管的正极与电源正极相连,二极管的负极经限流电阻与输出口相连。 2. 接通指令功能:使N指向的输出口变为低电平,点亮发光二极管。DP-801单片机只有8个输出口,所以N的取值为00~07。其中00~05在正常状态下表示0~5这6个发光二极管。 结束指令功能:告诉单片机一段程序的结束。使用DP—801单片机可以编写多段程序并能运行指定段的程序,就是靠结束指令来区分的。 [例1]点亮5号灯。 0.0. 00 05 15 同学们会发现灯闪了一下就关上了,怎样延长灯亮的时间呢? 3. M →03 时 02 分 01 秒 00 0.1秒

PIC 单片机的C 语言编程

PIC单片机C语言编程讲义 奥 科 电 子 工 作 室 (内部资料) 2006年元月第一版

第1章 PIC 单片机的C 语言编程 1.1 PIC 单片机C 语言编程简介 用C 语言来开发单片机系统软件最大的好处是编写代码效率高、软件调试直观、维护升级方便、代码的重复利用率高、便于跨平台的代码移植等等,因此C 语言编程在单片机系统设计中已得到越来越广泛的运用。针对PIC 单片机的软件开发,同样可以用C 语言实现。 但在单片机上用C 语言写程序和在PC 机上写程序绝对不能简单等同。现在的PC 机资源十分丰富,运算能力强大,因此程序员在写PC 机的应用程序时几乎不用关心编译后的可执行代码在运行过程中需要占用多少系统资源,也基本不用担心运行效率有多高。写单片机的C 程序最关键的一点是单片机内的资源非常有限,控制的实时性要求又很高,因此,如果没有对单片机体系结构和硬件资源作详尽的了解,以笔者的愚见认为是无法写出高质量实用的C 语言程序。这就是为什么前面所有章节中的的示范代码全部用基础的汇编指令实现的原因,希望籍此能使读者对PIC 单片机的指令体系和硬件资源有深入了解,在这基础之上再来讨论C 语言编程,就有水到渠成的感觉。 本讲稿围绕中档系列PIC 单片机来展开讨论,Microchip 公司自己没有针对中低档系列PIC单片机的C 语言编译器,但很多专业的第三方公司有众多支持PIC 单片机的C 语言编译器提供,常见的有Hitech、CCS、IAR、Bytecraft 等公司。其中笔者最常用的是Hitech 公司的PICC 编译器,它稳定可靠,编译生成的代码效率高,在用PIC 单片机进行系统设计和开发的工程师群体中得到广泛认可。其正式完全版软件需要购置,但在其网站上有限时的试用版供用户评估。另外,Hitech 公司针对广大PIC 的业余爱好者和初学者还提供了完全免费的学习版PICC-Lite 编译器套件,它的使用方式和完全版相同,只是支持的PIC 单片机型号限制在PIC16F84、PIC16F877 和PIC16F628 等几款。这几款Flash 型的单片机因其所具备的丰富的片上资源而最适用于单片机学习入门,因此笔者建议感兴趣的读者可从PICC-Lite 入手掌握PIC 单片机的C 语言编程。 在此列出几个主要的针对PIC 单片机的C 编译器相关连接网址,供读者参考: Hitech-PICC:https://www.360docs.net/doc/8c19177294.html, IAR:https://www.360docs.net/doc/8c19177294.html, CCS:https://www.360docs.net/doc/8c19177294.html,/picc.shtml ByteCraft:https://www.360docs.net/doc/8c19177294.html,/mpccaps.html 本章将介绍Hitech-PICC 编译器的一些基本概念,由于篇幅所限将不涉及C 语言的标准语法和基础知识介绍,因为在这些方面都有大量的书籍可以参考。重点突出针对PIC 单片机的特点而所需要特别注意的地方。 1.2 Hitech-PICC 编译器 PICC 基本上符合ANSI 标准,除了一点:它不支持函数的递归调用。其主要原因是因为PIC 单片机特殊的堆栈结构。在前面介绍PIC 单片机架构时已经详细说明了PIC 单片机中的堆栈是硬件实现的,其深度已随芯片而固定,无法实现需要大量堆栈操作的递归算法;另外在PIC 单片机中实现软件堆栈的效率也不是很高,为此,PICC 编译器采用一种叫做“静态覆盖”的技术以实现对C 语言函数中的局部变量分配固定的地址空间。经这样处理后产生出的机器代码效率很高,按笔者实际使用的体会,当代码量超过4K 字后,C 语言编译出的代码长度和全部用汇编代码实现时的差别已经不是很大(<10%),当然前提是在整个C 代码编写过程中须时时处处注意所编写语句的效率,而如果没有对PIC 单片机的内核结构、各功能模块及其汇编指令深入了解,要做到这点是很难的。

相关文档
最新文档