51单片机总结
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
定时器控制寄存器TCON (88H)
TCON: TF1 TR1 TF0 TR0; IE1 IT1 IE0 IT0 TF0/TF1: 定时器0/1计数溢出标志位。. =1 计数溢出; =0 计数未满 TF0/TF1:标志位用于申请中断或供CPU查询 TR0/TR1: 定时器0/1运行控制位。 =1 启动计数; =0 停止计数
外部中断(INT0,INT1)申请过程
在CPU已经开放了外部中断允许的前提下: 在INT0/INT1引脚输入一个负脉冲或低电平,TCON 寄存器中的IE0/IE1标志位自动变“1”。 检测到IE0/IE1变“1”后,将产生指令:执行中断服务 程序 并将IE0/IE1标志位自动清“0”,以备下次申请。
(T0)
M1,M0:工作方式定义位 ( 定义4 种方式 ): 0 0:13位 定时器——几乎不用 0 1:16位 定时器——经常用到 1 0:可自动重装的 8位 定时器——经常用到 1 1:T0 分为2个8位 Timer;T1 此时不工作 ——几 乎不用 C/T :计数器/定时器选择位 = 1 外部事件计数器。对T0/T1引脚负脉冲数; = 0 片内时钟定时器。对机器周期脉冲计数定时
中断优先级处理原则
对同时发生多个中断申请时:
不同优先级的中断同时申请(很难遇到) ——先高后低 相同优先级的中断同时申请(很难遇到) ——按序执行 正处理低优先级中断又接到高级别中断 ——高打断低 正处理高优先级中断又接到低级别中断 ——高不理低
单片机中断矢量与优先级: 中断矢量:单片机的 6 个中断源分别对应有各自 的中断服务程序入口地址——中断矢量 中断路口号只用中断源上面的号码,中断矢量为汇 编语言,内部结构,不用记。
中断允许寄存器IE (0A8H)
IE:EA — ET2 ES ET1 EX1 ET0 EX0
ES:串行中断允许控制位 =0 时禁止中断; =1 时允许中断。 EA:总的中断允许控制位(总开关): =0 时禁止全部中断;=1 时允许中断
波特率 =
2SMOD fosc
32 12(2n - X)
interrupt m 修饰符
interrupt m C51中断函数必须通过它进行修饰。 在该修饰符中,m的取值为0~31, 5是定时/计数器T2,其它值预留。 using n修饰符 注意: 修饰符using n用于指定本函数内部使用的工作 寄存器组,其中n的取值为0~3,表示寄存器组号。 可以省略 省略后系统自动选择。一个主程序里有 多个中断时,using后的数值必须不同。
一个定时/计数器同一时刻要么作定时用,要么作计数 用,不能同时用; 接通T1引脚时作为外部计数用。(T1的引脚是P3.5)
AT89S52单片机的定时器/计数器
3个16位定时器/计数器(51系列有2个16位Timer 少一个T2) 定时器:对片内机器时钟(周期方波)进行计数 计数器:对Tx引脚输入的负脉冲进行计数 与Timer工作有关的特殊功能寄存器: TCON 决定它的工作模式(是启动还是关闭) TMOD决定它的工作方式
定时器
⑴定时器控制寄存器TCON (88H) TCON:Timer控制寄存器,是管理定时器工作的SFR(低4位管外部中 断) TCON:TF1 TR1 TF0 TR0 ; IE1 IT1 IE0 IT0 ①TF0/TF1:定时器0/定时器1溢出中断申请标志位: =0:定时器未溢出; =1:定时器溢出申请中断,中断后自动 清零。 ②TR0/TR1:定时器运行启停控制位: =0:定时器停止运行;=1:定时器启动运行。 ③IT0/IT1:外部中断请求的触发方式选择位: =0:在INT0/INT1端申请中断的信号低电平触发; =1:在INT0/INT1端申请中断的信号负跳变触发. ④IE0/IE1:外部中断申请标志位: =0:没有外部中断申请; =1:有外部中断申请。
AT89S52单片机结构
AT89S52单片机基本特性
8 位的 CPU, 片内有振荡器和时钟电路,工作频率为
0~24MHz 片内有 256字节 数据存储器 RAM 片内有 8K字节 程序存储器 ROM 4个8位 的并行I/O口(P0、P1、P2、P3) 1个 全双工串行通讯口 3个16位 定时器/计数器(T0、T1、T2) 可处理 6个中断源,两级中断优先级
中断允许寄存器IE (0A8H)
IE:EA — ET2 ES ; ET1 EX1 ET0 EX0(ET2, 定时器2,一般不用) EX0/EX1/ET1/ET0/ES 位: 分别是INT0/1(外部中断),Timer0/1(定时器), 串行口的中断允许控制位: =0 时禁止中断; =1 时允许中断。 ET2:T2中断允许控制位(仅52系列有)(定时器2的, 一般不用) =0 时禁止中断; =1 时允许中断。 EA:总的中断允许控制位(总开关): =0 时禁止全部中断;=1 时允许中断。
电源控制寄存器 PCON(97H)
PCON:SMOD — — — ;GF1 GF0 PD 1DL (只对SMOD一位进行操作:PCON=0x80(加 倍)/0x00(不加倍)) (SMOD=0/1;当=1时,倍增,16分频;=0时, 32分频) [采用八位自动封装模式]不能按位操作 晶振:11.0592 最大波特率:57600 误差:0 22.1184 115200 0 12 4800 0.16%
其中:X 是定时器初值 2SMOD fosc 32 波特率 12
初值 X = 2n -
串行口的初始化包括:
对SCON选工作方式(SM1、SM2、REN、TI、RI) 对PCON设波特率加倍位“SMOD”(缺省值=0) 如果是接收数据,还要先置打开REN接收允许位(REN=1) 如果采用中断方式 还要打开 ES串口中断允许位和中断EA T1作波特率发生器时初始化包括: 将计算出的初值X赋给TH1,TL1; 启动T1 (TR1=1;); 注意T1不要开中断 !!(即ET0/ET1不进行设置,不对定 时器开中断)
串行口控制寄存器SCON(98百度文库)
SCON:SM0 SM1 SM2 REN ;TB8 RB8 TI RI SM0,SM1:串行口4种工作方式的选择位。 0 1:10位异步收发(1+8+1)波特率按公 式计算 RI,TI:串行口收/发数据申请中断标志位 =1 申请中断; =0 不申请中断 REN:串行口接收允许控制位 = 1 表示允许接收; = 0 禁止接收 说明:可以按位进行操作,或者总线操作; RI,TI必须软件清零
串行口与串口通信:
简要了解:
全双工串行接口(UART) 单工:单向的(或者是收或者是发) 半双工:(串行通信)收/发不可同时进行 全双工:(串行通信)收/发可同时进行 异步串行通信:以字符为单位进行传送; 同步串行通信:以数据块为单位进行传送 波特率(bps.): 单位时间传送二进制的位数 (bit/秒 是衡量串口传输速度快慢的重要指标(波特率是9600 那么1秒传输的二进制位数就是9600个 )
AT89S52单片机的最小系统
简单例子:
LED灯:
闪烁、流水灯、霹雳灯等等
继电器 喇叭、蜂鸣器 数码管
一个数码管显示、动态扫描
按键
独立按键、扫描法、线反转法
单片机的中断系统
单片机中断系统
中断的定义
所谓中断,是指CPU正在处理某些事务的时候,外
部又发生了某一事件,请求CPU及时处理。于是,
51单片机的8个特殊引脚
Vcc, GND: 电源端 XTAL1, XTAL2: 片内振荡电路输入、输出端 RESET: 复位端 正脉冲有效(宽度10 mS) EA/Vpp: 寻址外部ROM控制端。低有效片内有 ROM时应当接高电平。初学者一般接高电平。 ALE/PROG: 地址锁存允许控制端。用与外接 存储器时。 PSEN:选通外部ROM的读(OE)控制端。 低有 效
定时器T0/T1 中断申请过程
在T0/T1允许中断的情况下,TF0/TF1计数溢出时置 位1,供CPU查询,执行中断,然后自动清零,以备继 续计数; 在进入中断服务程序时会自动清零;但在查询方式时 必须软件清零。
定时器方式寄存器TMOD (89H)
(T1)
GATE C/T M1 M0; GATE C/T M1 M0
CPU暂时中断当前的工作,转而处理所发生的事件。
处理完毕,再回到原来被中断的地方,继续原来的
工作。这样的过程,称为中断。
中断示意图
AT89S52单片机的中断源及TCON:
S52系列有6个中断源(比S51多一个T2) 2个外部中断请求:INT0,INT1 3个片内定时器/计数器T0和T1中断请求 TF0,TF1,(TF2) 1个串行口中断请求:TI/RI
中断优先级控制寄存器IP (0B8H)
IP:— — PT2 PS ; PT1 PX1 PT0 PX0 PX0/PX1:INT0/1优先级控制位(外部中断) =0 时属低优先级; =1 时属高优先级。 PT0/PT1/PT2:T0/1/2中断优先级控制位(定时 器) =0 时属低优先级; =1 时属高优先级。 PS1:串行口中断优先级控制位(串口) =0 时属低优先级; =1 时属高优先级。
编程要点:
若要允许中断,还须先置位ETx、EA等中断允许控制位,并编写 断服务程序 若不用中断,可查询“计数溢出标志TFx”的方式工作,但溢出标 志TFx须软件清0 ⑴工作方式1 THx/TLx赋初值:THx赋高8位,TLx赋低8位 (2) 工作方式2:THx/TLx赋相同初值 ⑶定时器/计数器的定时/计数范围 工作方式1:16位定时/计数方式,因此,最多能计到2的16次方, 即65536次。 工作方式2:都是8位的定时/计数方式,最多能计到2的8次方,即 256次。
中断函数注意如下: (1)中断函数不能进行参数传递,如果中断 函数中包含任何参数声明都将导致编译出错。 (2)中断函数没有返回值,如果企图定义一 个返回值将得不到正确的结果,建议在定义 中断函数时将其定义为void类型,以明确说 明没有返回值。
定时器和计数器
定时器计数器的概念
一、计数 51单片机中有两个计数器,分别称之为T0和T1, 这两个计数器分别是由两个8位的RAM单元组成的, 即每个计数器都是16位的计数器,最大的计数量是 65536。 二、定时 单片机中的定时器和计数器是同一个东西,只不 过计数器是记录的外部的触发脉冲,而定时器则是 由单片机供给一个非常稳定的计数源。供给定时器 的是计数源是机器周期, 计数脉冲的间隔与晶振有 关,12M的晶振,计数脉冲的间隔是1微秒。