单片机课件第二章 单片机系统
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计数值:
N=213 -X
X是TH1、TL1初值
定时时间: T=( 213 - X )×Tcy=8192×Tcy
最大定时时间:
T=213×Tcy=8192×Tcy
若:Fosc=12MHZ,则Tcy=1us、Tmax=8192us=8.192ms
Fosc=6MHZ,则 Tcy=2us、Tmax=16.38ms
始化编程,选择工作方式和控 制T0、T1计数。
INT0.INT1的中断申请标志。 初值;对TMOD、TTMOD(89H) GATE C/T M1 M0 GATE C/T M1 M0
T1 T0 M1 M0 工作方式选择: 0 0 13位C/T 0 1 16位C/T 1 0 常数自动装入的 8位C/T 1 1 分为 2个 8位C/T,(仅适用于T0) C/T 定时/计数选择: 0 定时、计数信号Tcy(fosc的12分频) 1 计数、T1脚(P3.5)输入脉冲计数 GATE 选通控制门: 1 受外部电平控制 INT1=0时,封锁T1 0 不受INT1的控制
一、定时器/计数器 0、1 的结构:(P52 图 2-9)
组成: 加法计数器 T0:TH0.TL0 T1:TH1.TL1 SFR : TMOD 方式控制寄存器 控制工作方式 TCON 控制寄存器 控制T0、T1的运行含
通过对TH0、TL0、TH1、
T0.T1的溢出标志和
TL1的初始化编程,控制计数
求,所以只用作串行口的波特率发生器。
5.门控位GATE的应用 门控位为“1”时,使定时器的启动计数受外部 输入电平的影响.利用这个特性可测试外部输入脉冲 的宽度。 被脉冲输入INT1(P3.3),T1定时器方式,GATE (TMOD.7)程控为1,测试原理如图所示(本例中脉冲高 电平时间应小于65535个机器周期)。 INT1 被测脉冲
3.工作方式2(P56 图 2-11)
振荡器 ÷12 TCY S1 C/T=0 C/T=1 & S2 TL1 8位 TF1 中断
T1引脚
TR1 GATE
“1”闭合 8 重装载信号
1
≥1
A
INT1引脚
TH1 8位
图 2-11 定时器/计数器1工作方式2结构图
M1M0=1 0 常数自动装入的 8 位C/T TL1:8位加法计数器 TH1:初值寄存器 计数值:N=28-X=256-X 定时时间:T=(28-X)×Tcy=(256-X)×Tcy
3.T2的捕捉工作方式 RCLK=0.TCLK=0.CP/RL2=1 CP/RL2=1 → A=0 封锁1.3. EXEN2=0 封锁2.4.RCAP2H.RCAP2L不起作用,同T0。 T1方式1:C/T2=0定时.C/T2=1计数, TF2=1中断请求,TH1.TL2初值必须重新设定。 EXEN2=1 捕捉方式 T2EX 打开2.4,将TH2,TL2当前值捕捉到
2、工作方式1(P54 图2-10) M1M0=01 16位C/T,TH和TL都是8位 计数值:N=216-X=65536-X 定时时间:T=(216-X)×Tcy Tmax=216×Tcy=65536×Tcy 例:上例中要求用方式1实现 1)TH0,TL0初值计算 (216-X)×2×10-6=10-3 X=FE0CH 所以 (TH0)=0FEH; (TL0)=0CH 2)TMOD设置 0000 0001 (TMOD)=01H 3)程序
2、定时器/计数器控制寄存器TCON(88H) TF1 TR1 TF0 TR0 TR1(TR0): GATE=0 1 启动T1计数 IE1 IT1 IE0 IT0
运行控制(软件设置) GATE=1 TR1∧INT1=1 启动
0
禁止T1计数
TR1∧INT1=0
禁止
TF1(TF0):溢出中断标志
1 0 T1溢出,请求中断 中断请求已清除 (也可由程序置位和清零,软件中断)
T2EX:外部中断输入脚,EXEN2=0禁止中断 EXEN2=1允许中断
当T2EN时,EXF2=1,向CPU申请中断
EXEN2=1 注意:
在波特率发生器工作方式下,若T2正在工作,则 CPU不能访问TH2.TL2;
T1计数的启动与停止受B点信号的控制:
振荡器
T1引脚
÷12
TCY S1 C/T=0 C/T=1 &
S2
TL1 5位
TH1 8位
TF1
中断
B=“1”闭合
TR1
GATE 1 INT1引脚 ≥1 A
图 2-10 定时器/计数器1工作方式0结构图
GATE=0→A=1→B=TR1
1:闭合电子开关,允许计数 0:断开电子开关,禁止计数 GATE=1→A=INT1→B=TR1^INT1=1:闭合
90H→TMOD T1从0开始 停止T1计数 1→TR1 计数 读出T1值
6.定时器/计数器的飞读 不终止计数,读出数值,核对准确性
三.定时器/计数器2
8032/8052:T2 可定时/计数,有三种工作方式: 16位自动重装载C/T.捕捉方式.串行口波特率发生器方式 1.T2结构:(P58 图2-13,P59 图2-14) T2由TH2.TL2.RCAP2H.RCAP2L.T2CON等电路组成: TH2. TL2 16位加法器 RCAP2H.RCAP2L 16位寄存器 自动装载:初值寄存器 捕捉:T2EX下降沿取TH2. TL2值
(TH0)=F0H (TL0)=0CH
2)方式字 TMOD (TMOD)=00H 0000 0000
3)程序
用查询 TF0 的状态来控制 P1.0 的输出,在 P1.0 端得到周期为 2ms 的方波。 START: MOV TMOD, # 00H; 不必 MOV TL0, # 0CH; 置初值 MOV TH0, # 0F0H SETB TR0; 启动T0计数 LOOP: JBC TF0, PTF0 AJMP LOOP PTF0: MOV TL0, # 0CH MOV TH0, # 0F0H CPL P1.0; P1求反 AJMP LOOP P1.0 2ms
4)TF2:溢出中断标志,捕捉与重装载方式中, 溢出时硬件置1,申请中断,响应中断后不清除, 必须由程序清零。
波特率发生器方式,溢出时不置1,不会提出中断请求。 5)EXEN2:外部允许标志; EXF2:T2的外部中断标志; 当EXEN2=1时
捕捉方式:T2EX下降沿时TH2.TL2→RCAPH.L
串口发送时钟标志;
RCLK: 串口接收时钟标志; RCLK TCLK CP/RL2 工作方式(P60 表2-9)
0 0 0 1 1
0 0 1 0 1
0 1 X X X
16位重载方式 16位捕捉方式 波特率发生器,T2的溢出脉冲 作串口发送时钟 波特率发生器,T2的溢出脉冲作 串口接收时钟 波特率发生器,T2的溢出脉冲作 串口发送.接收时钟
TCY
S1 C/T=0 C/T=1 &
S2
TL0 8位
TF0
中断
“1”闭合
TL0使用C/T. GATE. TR0. INT0. TF0.可定时.计数
TH0使用T1的TR1和TF1只能用作定时。
当T0被用作为方式3时,T1可选择方式 0.1.2, 但由于TR1和TF1被TH0借用,不能产生溢出中断请
RCAP2H.RCAP2L寄存器,同时置EXF2=1,发出中断请求。
4.波特率发生器工作方式
T2CON中的RCLKK或TCLK被置1。 波特率发生方式结构图(P59 图2-14) TH2.TL2为16位加法计数器; RCAP2H.RCAP2L为16位初值寄存器。 C/T2=1 对T2(P1.0) 外部脉冲加法计数 C/T2=0 对fosc/2脉冲加法计数 计数溢出,打开1.3,重装初值, 溢出脉冲是连续产生的周期 脉冲.溢出脉冲经16分频后作为串口的发送脉冲或接收脉冲
例:应用 T0 产生 1ms 定时,并使 P1.0 输出周期为 2ms 的方波,设晶振为 6MHZ。 1)求计数初值X:(TH0,TL0初值计算) 因为 fosc=6MHZ,所以 Tcy=2us (6×106)=2×10-6s=2us
(213-X)×2×10-6=10-3
X=7692=(11110000 01100)B
振荡器 T1引脚
÷12
TCY S1
C/T=0
C/T=1 &
S2
TL1 8位
TF1
中断
“1”闭合 8 重装载信号 TH1 8位
TR1
GATE 1 ≥1 A
INT1引脚
方 式 2 工 作 过 程 :
TL1+1
图 2-11 定时器/计数器1工作方式2结构图
N
TL1=00H? Y
1→TF1 (TH1)→TL1
二、 定时器/计数器0、1的四种工作方式 1 、工作方式0(P54 图 2-10)
振荡器 T1引脚 ÷12 TCY S1 S2
C/T=0
C/T=1 &
TL1 5位
TH1 8位
TF1
中断
B=“1”闭合
TR1
GATE 1 ≥1 A
INT1引脚
图 2-10 定时器/计数器1工作方式0结构图
M1M0=00 13位C/T,由TH 8位和TL低 5位构成
EXF2=1 重装载:T2EX下降沿重装初值,EXF2=1,申请中断 中断响应后,EXF2未被硬件清除,必须用程序清零。
当EXEN2=0时,
T2EX(P1.1)引脚上电平变化对T2没有影响。
2.T2自动重装载工作方式
RCLK=0.TCLK=0.CP/RL2=0 自动重装载及捕捉工作方式结构图 (P58 图2-13) CP/RL2=0 2.4封锁.8打开 A=TF2 1:打开1.3.使T2重装 0:封锁1.3. EXEN2=1 经门5,7,8使A=1,打开1.3.使T2提前 开始新的计数周期. T2EX →1 TR2=0 置EXF2为1,向CPU发出中断请求 封锁10,T2停止工作。
(S2,S3)。
RCLK=0 T1溢出脉冲 作为串口接收波特率 RCLK=1 T2溢出脉冲 TCLK=0 T1溢出脉冲 作为串口发送波特率
TCLK=1 T2溢出脉冲 T2处于波特率工作方式时,TF2不置位,不产生中断请求; EXEN2=1时,也不会发生重装载或捕捉的操作。
可利用EXEN2=1得到一个附加的外部中断:
(一)T2的工作控制寄存器T2CON(C8H) TF2 EXF2 RCLK TCLK EXEN2 TR2 C/T2 CP/RL2 C/T2:C/T功能选择位 0.定时 1.计数
TR2: 运行控制位
1、启动T2计数 0.禁止T2计数 CP/RL2: TCLK: 捕捉/重装载标志; 决定T2的工作方式
3)程序: START: MOV TMOD, # 26H
PTF01:
CLR P1.0
MOV TH1, # 06H
MOV TL1, # 06H MOV TH0,# 0FFH MOV TL0, # 0FFH SETB TR0
SETB TR1
LOOP2: JBC TF1, PTF02
AJMP LOOP2
PTF02:
LOOP1:
JBC TF0, PTF01 AJMP LOOP1
SETB P1.0
CLR TR1 AJMP LOOP1
4.工作方式3(P56 图 2-12) M1M0=11 T0分为两个独立的 8 位计数器 图 2-12 定时器/计数器0工作方式3结构图
振荡器 T0引脚 TR0 GATE 1 INT0引脚 TCY TR1 TH0 8位 TF1 中断 ≥1 A ÷12
§2-4 定时器/计数器
定时器/计数器是单片机系统中的重要部件,在检 测、控制及智能仪器等应用中,常用定时器作实时时 钟,实现定时检测、定时控制。还可用定时器产生毫秒
宽的脉冲,驱动步进电机一类的电气机械。计数器主要
用于外部事件的计数。 51子系列: 2个16位 C/T: T0, T1
52子系列: 3个16位 C/T: T0,T1,T2
例:若从T0引脚输入低频负脉冲信号,要求T0每次发生负 跳变时,从 P1.0 输出一个 500us的同步脉冲,设fosc=6MHZ
T0 P1.0 T0计数 初值FFH T1定时 500us T0计数 T1定时
1)TH0. TL0. TH1. TL1初值设定 T0:计数方式,使发生负跳变时加1计数溢出,程 序查询到TF0=1时启动T1定时,故初值应为FFH。 T1:定时500us (256-X)×2×10-6=500×10-6 X=06H 所以 (TH1)=(TL1)=06H 2)TMOD 0010 0110 (TMOD)=26H