定时计数器1与2讲解.ppt
45页1,§9.4 定时/计数器1,§9.4.1 T/C1概述 §9.4.2 T/C1的特殊功能 §9.4.3 T/C1相关的I/O寄存器 §9.4.4 T/C1应用举例,,2,§9.4.1 T/C1概述,T/C1 :核心是一个16位加1计数器TCNT1; 具有外计数、定时、停止计数等基本功能 T/C1有多个时钟源可通过软件编程选择设定; 16位加1计数器:对时钟源来的脉冲进行加1计数,计数到全1即$ffff时,再加1,计数器回零,溢出, T/C1溢出中断请求标志TOV1置1;若相应中断屏蔽允许位TOIE1为1、CPU开中断(I位=1),则执行相应的中断服务程序(入口地址$0008) T/C1还具有输出比较匹配、输入捕获、PWM等特殊功能3,§9.4.2 T/C1的特殊功能,一、输出比较匹配; 二、输入捕获; 三、PWM等特殊功能4,一、 T/C1的输出比较匹配,含义:T/C1在计数的过程中,其计数值与输出比较寄存器的值相等时发生比较匹配TCNT1,OCR1A,,触发输出比较匹配事件A,,说明: OCR1A (OCR1AH:OCR1AL); T/C1 共有2个16位输出比较寄存器: 另一个:OCR1B(OCR1BH:OCR1BL)。
相等吗,,=,也可以触发输出比较匹配事件B.,作用?,5,输出比较匹配事件发生后可产生的作用,1、影响单片机引脚OC1X的状态 输出比较引脚OC1A(PD5); OC1B(PD4) 可编程设定输出高电平、低电平、翻转或不连接2、可编程设定匹配时是否自动清零TCNT1 通过CTC1位控制 ( Clear TC1 ) 清零TCNT1后仍继续加1计数设定单片机内部硬件自动清零TCNT1,相当于设定时间常数的自动再装入功能可实现较精确的定时.,6,输出比较匹配事件发生后可产生的作用….,3、相应的输出比较匹配标志置1产生中断.,=1时:输出比较匹配中断使能, =0:禁止A , B是相互独立的7,二、 T/C1的输入捕获IC,,1、输入捕获的是:外部引脚的电平变化, 即上升沿或下降沿 ICP(PD6)输入捕获引脚2、输入捕获的方法:,输入捕获寄存器ICR1,TCNT1,,噪音消除器,边沿选择,8,三、 T/C1的PWM脉宽调制输出,1、可用作8、9、10位的PWM脉宽调制输出,脉冲宽度、占空比可调,由引脚OC1A\ OC1B输出PWM信号2、输出PWM 信号具有DAC模拟电压输出功能,可用作DA转换器。
跟随器:输入阻抗高,输出阻抗低,输出电压基本不变RC滤波器,可以在反向器前加光电耦合器9,§9.4.3 T/C1相关的I/O寄存器,一、数据类I/O寄存器 1、16位计数器1(TCNT1) TCNT1H : $2d($4d)与TCNT1L ,$2C($4C) 2、 16位T/C1输出比较寄存器OCR1A\ OCR1B OCR1AH: $2b($4b)与OCR1AL: $2a($4a) OCR1BH :$29($49)与OCR1BL: $28($48) 3、 16位T/C1 输入捕获寄存器ICR1 ICR1H: $27($47)与ICR1L: $26($46) 可读可写 ; 初值=0010,T/C1数据类I/O寄存器的读写,例1:将$1234 TCNT1 ldi r16, $34 ldi r17, $12 Out TCNT1H, r17 Out TCNT1L, r16,例2、 输入捕获寄存器ICR1 R19:R18 In r18, ICR1L In r19, ICR1H,,2、正确的读写次序(高8位有暂存器) 写时:先高后低; 读时:先低后高1、数据类寄存器都是16位,每一个都由两个I/O寄存器组成,要保证其读/写的同步性。
11,二、T/C1的控制类I/O寄存器(2个),ICES1:输入捕获边缘选择 1:上升沿 0:下降沿,,,,,,12,2、 TCCR1A用于输出比较匹配模式,COM:比较输出模式,确定比较匹配时,输出引脚OC1X(输出方式)的状态D7-6位 0 0:不与引脚OC1A连接 0 1:取反引脚OC1A 1 0:清零引脚OC1A 1 1:置 1 引脚OC1A,,,,0 0 选择T/C1输出比较匹配模式;,,非0 0 则选择PWM模式T/C1可工作于输出比较匹配模式或者PWM模式13,2、 TCCR1A用于PWM模式,PWM模式下,OC1X输出引脚的状态D7-6位 0 0:不与引脚OC1A连接 0 1:不与引脚OC1A连接 1 0:输出正向PWM 1 1:输出反向PWM,,,,0 0 :选择T/C1输出比较匹配模式,,0 1 : 为8位PWM 1 0 : 为9位PWM 1 1 : 为10位PWM,PWM模式下的计数方法:以9位PWM为例,从$000加1计数到$1ff,再反向减1计数到$000,循环往复14,正向PWM的定义,定义:向上计数时,匹配时清零OC1X引脚,向下计数时,匹配时置位OC1X引脚。
15,如何确保偶数长的PWM脉冲?,在PWM模式下,当后10位OCR1A/OCR1B位被写入时,它们被送入临时地址当定时器/计数器 1到达 TOP时,它们被锁存这就防止了在非同步 OCR1A/OCR1B写入事件中发生奇数长的PWM脉冲(误操作)16,正向PWM的输出频率、占空比等,分辨率 定时器TOP值 频率 占空比 8位PWM $00ff(255) fTC1/510 OCR1X/255 9位PWM $01ff (511) fTC1/1022 OCR1X/511 10位PWM $03ff (1023) fTC1/2046 OCR1X/1023,,一般T/C1不分频, fTC1=主频,列表如下:,17,应用1--T/C1输出比较匹配用于定时,例1:每隔1秒使 PC0取反一次,设时钟=8MHz 分析:256分频,256/8M = 32us计一个数 1s/32us=31250 =$7A12OCR1A 定时计数器1输出比较匹配中断服务程序 入口地址=$0006 程序主要功能模块:,,18,例1:每隔1秒使 PC0取反一次,设时钟=8MHz。
主程序主要模块如下:,堆栈的初始化,定义PC0为输出,256分频T/C1,CTC1=1,TCNT1=0,OCR1A=$7A12,允许T1比较匹配中断,CPU开中断,等待中断,,,.include “8535def.inc“ .org $0000 rjmp main .org $0006 rjmp tim1_compa main:,ldi r16,low(ramend) ; out spl,r16 ldi r16,high(ramend) out sph,r16,19,,主程序,堆栈的初始化,定义PC0为输出,256分频T/C1,CTC1=1,TCNT1=0,OCR1A=$7A12,允许T1比较匹配中断,CPU开中断,等待中断,ldi r16,$01 ;PC0口定义 out ddrc,r16;为输出口 ldi r16,$10 ;允许T1比较 out timsk,r16;匹配A中断 clr r16 ;置TCNT1初值为0 out tcnt1l,r16 out tcnt1h,r16 ldi r16,$7a ;ocr1a置$7a12, out ocr1ah,r16;即1秒中断一次 ldi r16,$12 out ocr1al,r16 ldi r16,$0c ;T/C1对主 out tccr1b,r16;频256分频定时 sei here: rjmp here,20,,主程序,堆栈的初始化,定义PC0为输出,256分频T/C1,CTC1=1,TCNT1=0,OCR1A=$7A12,允许T1比较匹配中断,CPU开中断,等待中断,ldi r16,$01 ;PC0口定义 out ddrc,r16;为输出口 ldi r16,$10 ;允许T1比较 out timsk,r16;匹配A中断 clr r16 ;置TCNT1初值为0 out tcnt1l,r16 out tcnt1h,r16 ldi r16,$7a ;ocr1a置$7a12, out ocr1ah,r16;即1秒中断一次 ldi r16,$12 out ocr1al,r16 ldi r16,$0c ;T/C1对主 out tccr1b,r16;频256分频定时 sei here: rjmp here,21,,主程序,堆栈的初始化,定义PC0为输出,256分频T/C1,CTC1=1,TCNT1=0,OCR1A=$7A12,允许T1比较匹配中断,CPU开中断,等待中断,ldi r16,$01 ;PC0口定义 out ddrc,r16;为输出口 ldi r16,$10 ;允许T1比较 out timsk,r16;匹配A中断 clr r16 ;置TCNT1初值为0 out tcnt1l,r16 out tcnt1h,r16 ldi r16,$7a ;ocr1a置$7a12, out ocr1ah,r16;即1秒中断一次 ldi r16,$12 out ocr1al,r16 ldi r16,$0c ;T/C1对主 out tccr1b,r16;频256分频定时 sei here: rjmp here,22,,主程序,堆栈的初始化,定义PC0为输出,256分频T/C1,CTC1=1,TCNT1=0,OCR1A=$7A12,允许T1比较匹配中断,CPU开中断,等待中断,ldi r16,$01 ;PC0口定义 out ddrc,r16;为输出口 ldi r16,$10 ;允许T1比较 out timsk,r16;匹配A中断 clr r16 ;置TCNT1初值为0 out tcnt1l,r16 out tcnt1h,r16 ldi r16,$7a ;ocr1a置$7a12, out ocr1ah,r16;即1秒中断一次 ldi r16,$12 out ocr1al,r16 ldi r16,$0c ;T/C1对主 out tccr1b,r16;频256分频定时 sei here: rjmp here,23,,主程序,堆栈的初始化,定义PC0为输出,256分频T/C1,CTC1=1,TCNT1=0,OCR1A=$7A12,允许T1比较匹配中断,CPU开中断,等待中断,ldi r16,$01 ;PC0口定义 out ddrc,r16;为输出口 ldi r16,$10 ;允许T1比较 out timsk,r16;匹配A中断 clr r16 ;置TCNT1初值为0 out tcnt1l,r16 out tcnt1h,r16 ldi r16,$7a ;ocr1a置$7a12, out ocr1ah,r16;即1秒中断一次 ldi r16,$12 out ocr1al,r16 ldi r16,$0c ;T/C1对主 out tccr1b,r16;频256分频定时 sei here: rjmp here,24,,主程序,堆栈的初始化,定义PC0为输出,256分频T/C1,CTC1=1,TCNT1=0,OCR1A=$7A12,允许T1比较匹配中断,CPU开中断,等待中断,ldi r16,$01 ;PC0口定义 out ddrc,r16;为输出口 ldi r16,$10 ;允许T1比较 out timsk,r16;匹配A中断 clr r16 ;置TCNT1初值为0 out tcnt1l,r16 out tcnt1h,r16 ldi r16,$7a ;ocr1a置$7a12, out ocr1ah,r16;即1秒中断一次 ldi r16,$12 out ocr1al,r16 ldi r16,$0c ;T/C1对主 out tccr1b,r16;频256分频定时 sei here: rjmp here,25,,主程序,堆栈的初始化,定义PC。

卡西欧5800p使用说明书资料.ppt
锂金属电池界面稳定化-全面剖析.docx
SG3525斩控式单相交流调压电路设计要点.doc
话剧《枕头人》剧本.docx
重视家风建设全面从严治党治家应成为领导干部必修课PPT模板.pptx
黄渤海区拖网渔具综合调查分析.docx
2024年一级造价工程师考试《建设工程技术与计量(交通运输工程)-公路篇》真题及答案.docx
【课件】Unit+3+Reading+and+Thinking公开课课件人教版(2019)必修第一册.pptx
嵌入式软件开发流程566841551.doc
生命密码PPT课件.ppt
爱与责任-师德之魂.ppt
制冷空调装置自动控制技术讲义.ppt


