无题
单片机原理及应用
第1章 单片机概述
1.1单片机的概念及主要特点
- 简称单片微型计算机,是指在一块半导体芯片中集成中央处理器、存储器、基本I/O接口以及定时/计时器等必要部件的完整的微型计算机
1.2单片机的分类及发展趋势
1.2.1单片机发展现状
1.8位单片机
- 51及兼容型、非51型
2.16位单片机
- MSP430,特点:省电、超低功耗
3.32位单片机
- 代表产品RISC的ARM系列
1.2.2单片机的发展趋势
1.类型上
- 51单片机主频:12MHz、24MHz、6MHz
2.技术发展上
- 1)CPU核仍以CISC为主,但朝RISC演化
- 2)采用闪烁(Flash)或E²PROM存储器替代内EPROM
- 3)低功耗、低电压、低价位,如CPU部分工作于1.5~2.5V、I/O口工作于3.3~5V
1.3常见的主流单片机
1.3.1目前流行的51内核单片机
1.Intel公司的MCS-51系列单片机
- MCS-51子系列和MCS-51子系列
2.Atmel公司的89系列单片机
- 具有E²PROM可擦除技术、Flash存储器技术和优秀的生产工艺与封装技术
1.3.2目前流行的非51内核的单片机
- 1.TI公司的16位超低功耗型MSP430系列单片机
- 2.Motorola单片机
3.Freescale单片机
- 汽车微控制器市场保持第一
1.4单片机的应用领域
- 1.智能仪器仪表
- 2.机电一体化
- 3.实时控制
- 4.消费类电子产品
- 5.导航控制
- 6.终端及外部设备控制
第2章 AT89系列单片机的硬件体系结构
2.1AT89系列单片机概述
- 2.1..1AT89C51单片机
2.1.2AT89系列单片机的主要性能
- 1)与MCS-51单片机产品兼容
- 2)4KB可程序设计Flash内存
- 3)1000次以上擦鞋周期
- 4)全静态操作:最高24MHz(默认12MHz)
- 5)三级加密程序内存
- 6)32根可程序设计I/O口线(理论同时32位传输)
- 7)2个16位定时/计数器
- 8)5个中断源
- 9)全双工UART串行通道(可同时输入和输出)
- 10)低功耗空闲和掉电模式
2.1.3AT89系列单片机的主要品种
AT89C51
- 1)4KB程序存储器Flash
- 2)128B数据存储器
- 3)12MHz工作频率
- 4)2个定时/计数器
- 5)1个UART通道
- 6)无ISP
- 7)4.0~6.0V工作电压
- 8)DIP,PLCC,PQFP封装形式
2.1.4AT89系列单片机的型号编码
- 1.AT是前缀;89XXXXX是型号;YYYY是后缀
- 2.89CXXXX中,9表示内部含Flash内存,C表示位CMOS产品
- 3.后缀的第一个参数Y表示速度;第二个参数Y表示封装;第三个参数Y表示温度范围;第四个参数Y说明产品的处理情况
2.2AT89系列单片机的结构原理
- 2.2.1AT89系列单片机的基本组成
- 2.2.2AT89系列单片机的内部框图
2.2.3AT89系列单片机的CPU
CPU由运算器和控制器组成
1.运算器,以算术逻辑单元(ALU)为核心
- 1)ACC,最频繁的寄存器,一般用于存放参加运算的操作数和运算结果
- 2)B寄存器,专为乘法和除法指令而设置的,也可作为中间结果寄存器使用
3)PSW,一个8位寄存器,标志寄存器
- 1.CY:进位标志
- 2.AC:辅助进位标志
- 3.F0:用户标志位
- 4.RS1、RS0:寄存器区间选择控制位
- 5.OV:溢出标志
- 6.P:奇偶标志
- 7.PSW.1:程序状态字的第1位
2.控制器,包括程序计数器(PC)、堆栈指针寄存器(SP)、数据指针寄存器(DPTR)等
- 1)PC(16位),初始值位0000H
- 2)SP(原则上软件只读不写),初始化07H,但最好设置为60H
- 3)DPTR(51中唯一可读写),16位数据指针寄存器
2.3AT89系列单片机的存储器结构
哈弗结构,有单独的程序存储器(ROM)和数据存储器(RAM)
2.3.1AT89系列单片机的程序存储器
1.AT89系列单片机程序存储器ROM,正常工作时可读不可写,掉电数据不丢失
- 1)具有4KBFlash结构的电可擦除只读存储器
- 2)逻辑上仅一个64KB,内部与外部只能选择一个,最好不要外扩ROM
- 3)单片机引脚EA非的电平来选择,若接Vcc,当地址为0000H~0FFFH时,访问内部Flash;当地址为1000H~FFFFH时,则访问外部程序内存
2.AT89系列单片机程序存储器管理
- 1)系统复位后,PC的初始值为0000H(0~48字节有特殊用途,中断向量表),它的值代表单片机下一条(main程序)要执行的指令在ROM中存放的位置,用户不能直接对PC进行操作
2.3.2AT89系列单片机的数据存储器
- 1)数据存储器RAM用于存放程序中的“中间数据”或程序运行后的结果,掉点后会丢失
- 2)数据存储器分为两个地址空间:一个为内部128B内存空间;一个为外部扩展的64KB内存空间
1.内部数据存储器的结构,对于51系列,高128B被特殊功能寄存器占用
1)低128B RAM区
i)工作寄存器组区
- 最低32个单元,PSW中RS1、RS0确定当前采用哪一个工作寄存器,系统复位后,指向工作寄存器组0(07H)
ii)位寻址区
- 20H~2FH单元(16B)可供寻址,共128位
- 两种地址表示方式:位地址形式;“字节地址(20H~2FH).位数”方式
iii)用户RAM区
- 30H~7FH共80个字节单元(但只有48B可供使用)
2)高128B的特殊功能寄存器(SFR)区
SFR使用方法
- i)使用位名称表示,例如:CY
- ii)使用SFR“名称.位”形式表示,例如:PSW.7
2.外部数据存储器,寻址空间可达64KB,地址范围是0000H~FFFFH(能不使用就不使用,消耗占用资源)
2.4AT89系列单片机的引脚功能
2.4.1外部引脚
1.输入输出引脚(C51共40个引脚,32个皆为输入输出口)
- P0、P1、P2、P3口4个8位并行I/O口
2.控制引脚
- 1)RST复位输入端(未复位,低电平;复位时,高电平(持续几个微秒))
2)ALE/PROG非地址所存允许/编程脉冲(用于发送地址信号(输出),高电平有效)
- 输出信号用于所存低字节地址
3)PSEN非外部程序存储器的选通信号(输出)(有效,则外部程序;无效,则内部数据)
- 用于读外部程序存储器的选通信号,低电平有效
4)EA非/Vpp外部程序存储器访问允许端/编程电源输入端(输入)(低电平有效,访问外部程序4KB;反则内部程序)
- 通过EA非从外部程序内存中读取代码
3.电源和时钟引脚(物理引脚)
4.外接晶体引脚(与时钟有关系)
- 1)内部振荡器:XTAL1、XTAL2同时使用
- 2)外部振荡器:只是用XTAL1
2.4.2片外总线结构
P0口的8个引脚既可以是地址总线(低8位),也可以是数据总线;P2口的8个引脚作为地址总线的高8位;P3口的8个引脚只能占用两个
- 1.地址总线,分时复用技术
- 2.数据总线
- 3.控制总线
2.5AT89系列单片机的I/O接口
2.5.1P0口,一个8位漏极开路的双向I/O口
1.P0口作为通用I/O口使用
- 1)I/O模式下作为输出口,P0需外接上来电阻(10kΩ左右)
- 2)在I/O模式下作为输入口使用时,在输入操作前应先向端口写“1”(P0=0xff);称作“准双向口”
2.P0口作为低8位地址/数据复用总线使用
2.5.2P1口,无需多路转接电路MUX和外接上拉电阻
- 1.P1口作通用I/O使用
2.5.3P2口,作通用I/O口使用时,是一个准双向口
2.5.4P3口,一个多用途口,是一个准双向口
P3口引脚与复用功能
P3.0
- RXD(串行输入口)
P3.1
- TXD(串行输出口)
P3.2
- INT0(外部中断0)
P3.3
- INT1(外部中断1)
P3.4
- T0(定时器0的外部输入)
P3.5
- T1(定时器1的外部输入)
P3.6
- WR(外部数据存储器写选通)
P3.7
- RD(外部数据存储器读选通)
2.6AT89S系列单片机内部看门狗定时器
2.7AT89系列单片机复位工作方式
- 当系出于正常工作状态时,如果RST引脚上有一个高电平并维持2个机器周期(24个震荡周期,约2μs)以上,则CPU就可以实现可靠复位
复位后寄存器的初始状态
寄存器
- PC
- ACC
- PSW
- SP
- DPTR
- P0、P1、P2、P3
- IP
- IENO
初始状态值
- 0000H
- 00H
- 00H
- 00H
- 07H
- 0FFH
- xxx00000B
- 0x00000B
寄存器
- TMOD
- TCON
- TH0
- TL0
- TH1
- TL1
- SCON
- PCON
- SBUF
初始状态值
- 00H
- 00H
- 00H
- 00H
- 00H
- 00H
- 00H
- 0xx00000B
- 不定
2.8AT89系列单片机的低功耗方式
省电工作方式(尽可能降低系统的功耗)
- 空闲方式
- 掉电方式
2.8.1空闲工作方式
- 1.任何中断请求都可以由硬件将PCON.0(IDL)清零而中止空闲工作方式
- 2.硬件复位
2.8.2掉电工作方式
- 当CPU执行一条置PCON.1位(PD)为1的指令后,系统进去掉电工作方式,但内部RAM区和特殊功能寄存器的内容被保留
- 退出掉电工作方式的唯一方法是硬件复位。复位后将所有的特殊功能寄存器的内容初始化,但不改变内部RAM区的数据
2.9AT89系列单片机的时序
时序,即指各种操作信号的时间序列,它表明了指令执行中各种信号之间的相互关系
2.9.1几个基本时序单位
- (1)时钟周期(12MHz=1/12μs),也称为振荡周期,定义为时钟脉冲频率(fosc)的倒数,是计算机中最基本的,最小的时间单位
- (2)状态周期(1/6μs),时钟周期经2分频后成为内部的时钟信号,用作单片机内部各功能部件按序协调工作的控制信号,用S表示;一个状态周期有两个时钟周期
- (3)机器周期(1μs),完成一个基本操作所需要的时间称为机器周期,一个机器周期有6个状态,包含12个振荡脉冲
- (4)指令周期(1~4μs),指CPU执行一条指令所需要的时间,一般由若干机器周期组成;一个指令周期包含1~4个机器周期
2.9.2CPU取指令和执行指令时序
- 大部分指令在整个指令执行过程中,在每个机器周期内ALE信号出现两次(有效)
第3章 单片机的指令系统及汇编语言程序设计
3.1 51系列单片机指令系统概述
- 指令就是要计算机执行某种操作的指令,一台计算机中所有指令的集合,称为这台计算机的指令系统
- 操作码字段表征指令的操作特性与功能,而地址马自担通常指定参与操作的操作数地址
精简指令系统RISC:单字节、双字节、三字节等不同长度的指令
- 单字节指令只有1字节
- 双字节指令包括2字节,操作码+操作数
- 三字节指令,操作码占1字节,操作占2字节
3.2 51系列单片机的寻址方式
顺序寻址、跳转寻址
3.2.1立即寻址(常数寻址)
为表示指令中的立即数,在操作数前面加“#”标志
- MOV A, #90H —— 指令功能是把90H这个数据送到累加寄存器A(即存放在程序存储器中)
3.2.2(最好的)寄存器寻址(寄存器数寻址)
MOV A, R0 —— 指令功能是把寄存器R0的内容传送到累加寄存器A中
- 1)通用寄存器,即R0~R7
- 2)部分专用寄存器,如累加器A和B寄存器,以及数据指针DPTR寄存器
3.2.3(不用)直接寻址(存储器数寻址)
存放在内部数据存储和特殊功能寄存器
寻址范围只限于内部RAM,SBUF是专用寄存器名
- 1)低128单元
- 2)专用寄存器
3.2.4寄存器间接寻址
- 1)内部数据RAM的寄存器间接寻址,采用寄存器R0、R1,如MOV A, @R0
2)外部数据RAM的寄存器间接寻址
- 1.采用R0、R1作为间接寄存器
- 2.采用16位的DPTR
3.2.5相对寻址(指令寻址)
将指令中给定的地址偏移量与PC的当前值相加,得到真正的程序转移地址
- 偏移量是一个带符号的8位二进制补码数,表示数的范围是-128~+127
3.2.6编制寻址
- 1)变址寻址只能对程序存储器进行寻址,范围达64KB
2)变址寻址的指令只有3条
- MOVC A, @A + DPTR
- MOVC A, @A + PC
- JMP@ A + DPTR
3.2.7位寻址
- 1)内部RAM中的位寻址区单元地址位20H~2FH,共16个单元128位,位地址是00H~7FH
- 2)专用寄存器的可寻址区,可以位寻址的专用寄存器共有11个,实有寻址位83位
第4章 C51程序设计
4.1 C51程序设计基础
4.1.1 C51语言特点和程序结构
1.C51语言功能上的特点
- (1)C51语言兼具高级语言和汇编语言的特点
- (2)C51语言简洁、运算丰富、数据结构众多
- (3)C51采用结构化设计程序,程序可移植性好
- (4)生成目标代码效率高
4.2 C51数据类型
4.2.1字符型
- unsigned char;单字节;0~255;无符号字符型
4.2.2整型
- unsigned int;双字节;0~65535;无符号整型
4.2.5位型
- bit型
- sbit型
4.2.6寄存器型
- sfr,字符型特殊功能寄存器类型,占用1字节单元
sfr16,双字节特殊功能寄存器类型,占用2字节单元
- 访问所有2字节特殊功能寄存器(DPTR)
4.3 C51运算量
4.3.1常量
- 1.整型常量
- 2.浮点型常量
- 3.字符型常量
4.字符串常量
字符串常量所占用的字节数位字符数加1
- 字符串中每个字符所占用1字节的存储空间,并在字符串尾部加一个结束符NULL
4.3.2变量
变量定义的一般格式:[存储类型] 数据类型 [存储器类型] 变量名1 [=初值],变量名2 [=初值]……
1.存储类型
- (1)动态(auto)
- (2)外部(extern)
(3)静态(static)
- 静态变量在程序运行时始终占用存储单元
(4)寄存器(register)
- 用register定义的变量存放在CPU内部的RAM的寄存器中,处理速度快,但是可以定义变量的数目有限
2.数据类型
- char型,1字节
- int型,2字节
- bit型,1位
3.存储器类型
C51存储器类型和变量存放区域
存储器类型(关键字)
- data
- bdata
- idata
- pdata
- xdata
- code(需要初始化)
存储区域
- 内部RAM的00H~7FH区域(内部数据存储器)
- 内部RAM的20H~2FH区域
- 内部RAM的00H~7FH区域
- 外部RAM某一页的0~FFH区域
- 整个外部RAM的0~FFFFH区域
- 64KB的程序存储器区域
说明
- 直接寻址的内部RAM,存取速度最快
- 位寻址区、允许位和字节的混合访问
- 间接寻址访问,用@R0、@R1间接访问
- 用MOVX @R0、@R1间接访问
- 用MOVX @DPTR间接访问
- 用MOVC指令访问,变址寻址
4.变量名
- 变量名的第一个字符必须是字母或者下划线,不能以数字开头
4.3.3 C51扩展数据类型的变量定义
1.bit普通位变量
普通位变量用来定义存放在内部RAM可以位寻址区域的变量
严格来说只能是bdata的存储器类型
- 定义格式:bit [存储器类型] 变量名
2.sbit可位寻址的特殊位变量(无存储类型)
- 可位寻址的特殊位变量,SFR中可以位寻址的位,操作可以位寻址或者字节寻址
sbit来指定位变量的绝对地址
sbit的一般定义方法
(1)用于指定已定义的可位寻址的SFR或者20H~2FH单元的某一位
- sbit F0 = PSW^5;//定义F0为PSW.5
(2)指定可以位寻址的地址单元的某一位
- sbit dis_on = 0x20^0;
(3)直接指定可寻址的位地址
- sbit F0 = 0xd5;
3.sfr特殊功能寄存器变量
sfr直接指定8位的特殊功能寄存器的直接地址
- 定义格式:sfr 特殊功能寄存器名 = 绝对地址;
4.sfr16 16位特殊功能寄存器变量
sfr16定义16位的特殊功能寄存器的低端地址
- 定义格式:sfr16 16位特殊功能寄存器名 = 绝对地址的低端地址;
4.3.4 C51绝对地址访问
4.3.5存储模式
1.SMALL模式
- 默认变量存放在idata区域,片内数据存储器00H~07FH单元
2.COMPACT模式
- 默认变量存放在pdata区域,片外RAM的低256B空间
3.LARGE模式
- 默认变量存放在xdata区域,片外RAM的64KB空间
第5章 单片机应用系统的开发环境及仿真软件简介
第6章AT89系列单片机内部资源及应用
XMind - Trial Version