
计算机课件第10章 单片机片内外设模块(PIT).ppt
38页单片机原理与应用第10章 单片机片内外设模块本章提要10.1 并行I/O10.2 异步串行通信SCI10.3 同步串行通信SPI 10.4 ATD转换模块 10.5 周期中断定时器PIT 10.6 时钟产生器模块本章提要10.1 并行I/O10.2 异步串行通信SCI10.3 同步串行通信SPI 10.4 ATD转换模块 10.5 周期中断定时器PIT 10.6 时钟产生器模块10.5 周期中断定时器PIT10.5.1 定时器简介10.5.2 周期中断定时器简介(PIT)10.5.3 周期中断定时器寄存器10.5.4 PIT模块编程范例10.5.5 PIT模块应用实例10.5 周期中断定时器PIT10.5.1 定时器简介10.5.2 周期中断定时器简介(PIT)10.5.3 周期中断定时器寄存器10.5.4 PIT模块编程范例10.5.5 PIT模块应用实例10.5.1 定时器简介原理:实际上是计数器,通过累计已知时间间隔的个数来计算时间被累计的时间间隔若是系统时钟,计数器就变成定时器作用: Ø时间延迟的产生和测量 Ø外部信号周期和脉冲宽度的测量 Ø事件计数器 Ø事件发生时间比较器 Ø波形发生器 Ø周期性的中断产生同配置。
10.5.1 定时器简介实现方法: 1、 程序设计软件定时器 void delay(void) { unsigned int i,j;for(i=0;i<10;i++) for(j=0;j<10000;) j++; }实现方法(续1)2、 微处理器内置定时器(硬件定时器) 如:MC9S12XS内置 RTI ( Real Time Interrupt) ECT – enhanced capture timer OC – Output comparer PWM – Pulse width modulation Period and pulse width measurement 四个24位PIT定时器10.5.1 定时器简介实现方法(续2):3、外围扩展定时器- 8253内部有三个计数器,分别成为计数器0、计数器1和计数器2,他们的机构 完全相同每个计数器的输入和输出都决定于设置在控制寄存器中的控 制字,互相之间工作完全独立每个计数器通过三个引脚和外部联系, 一个为时钟输入端CLK,一个为门控信号输入端GATE,另一个为输出 端OUT每个计数器内部有一个8位的控制寄存器,还有一个16位的计 数初值寄存器CR、一个计数执行部件CE和一个输出锁存器OL。
10.5.1 定时器简介实现方法(续3):3、外围扩展定时器- DS12887时钟芯片所需的晶振和外部锂电池相关电路集于芯片内部,可广泛用于各种需要较高精度的实时时钟场合中 其主要功能如下: (1)内含一个锂电池,断电情况运行十年以上不丢失数据 (2)计秒、分、时、天、星期、日、月、年,有闰年补偿功能 (3)二进制数码或BCD码表示时间、日历和定闹 (4)12小时或24小时制,12小时时钟模式带有PWM和AM指导, 有夏令时功能 (5)MOTOROLA5和INATAEL总线时序选择 (6)有128个RAM单元与软件音响器,其中14个作为字节时钟和 控制寄存器,114字节为通用RAM,所有ARAM单元 数据 都具有掉电保护功能 (7)可编程方波信号输出 (8)中断信号输出(IRQ)可以产生500ms/次到每122μs/次的中断10.5.1 定时器简介主要性能参数:Ø位数 Ø加1或是减1Ø时钟Ø重装载10.5.1 定时器简介10.5 周期中断定时器PIT10.5.1 定时器简介10.5.2 周期中断定时器简介(PIT)10.5.3 周期中断定时器寄存器10.5.4 PIT模块编程范例10.5.5 PIT模块应用实例基本功能4路24位定时器,每路可以分别:Ø打开或关闭 Ø1~2^24个总线周期定时Ø产生中断信号定时周期=10.5.2 周期中断定时器简介设置方法1、使能某一定时器,需要写通道使能寄存器和PIT控制寄存器来使能PIT模块2、4个16位定时器,共享2个8位微计数器,通过写PIT复用寄存器配置3、某一路定时器使能时,16位和8位计数器对应的加载寄存器的值自动加载4、按照MCU内部总线时钟,24计数器减1,直至为0时,自动重加载5、同时置超时标志,若对应的定时中断被使能,则产生定时中断10.5.2 周期中断定时器简介10.5 周期中断定时器PIT10.5.1 定时器简介10.5.2 周期中断定时器简介(PIT)10.5.3 周期中断定时器寄存器10.5.4 PIT模块编程范例10.5.5 PIT模块应用实例10.5.3 周期中断定时器寄存器一、PIT控制寄存器 PITCFLMT($0340)PITE:PIT模块使能位 0 禁止PIT 1 使能PITPITSWAIT:等待模式PIT停止控制位 0 在等待模式下PIT正常运行 1 在等待模式下PIT停止工作PITFRZ:冻结模式PIT计数器冻结控制位 0 在冻结模式下PIT正常运行 1 在冻结模式下PIT计数器停止运行PFLMT[1..0]: 微计数器1和0的强制加载位 1 相应的8位微计数器的加载寄存器中的值被加 载到8位微计数器中 0 强制加载无效10.5.3 周期中断定时器寄存器二、 PIT强制加载寄存器 PITFLT($0341)PFLT[3..0]:6位1计数器3~0的强制加载位 1 相应的16位计数器的加载寄存器中的值被加载到16位计数器中 0 强制加载无效10.5.3 周期中断定时器寄存器三、 PIT通道使能寄存器 PITCE($0342)PCE[3..0]:定时器通道3~0PIT使能控制位。
1 通道使能0 通道禁止10.5.3 周期中断定时器寄存器四、PIT复用寄存器 PITMUX($0343)PMUX[3..0]:PTI定时器通道3~0的复用位0 相应16位定时器使用微计数器01 相应16位定时器使用微计数器110.5.3 周期中断定时器寄存器五、 PIT中断使能寄存器 PITINTE($0344) PINTE[3..0]:PIT定时器通道3~0的定时中断使能位0 PIT相应通道定时中断禁止1 PIT相应通道定时中断使能10.5.3 周期中断定时器寄存器六、 PIT超时标志寄存器PITTF($0345) PTF[3..0]:PIT定时器通道3~0的超时标志位0 PIT相应通道没有发生超时中断1 PIT相应通道发生了超时中断 向该标志位写1,可以清零该标志位;写0,则无效10.5.3 周期中断定时器寄存器七、 PIT微计数器加载寄存器 PITMTLD0($0346)与PITMTLD1($0347 )PMLD[7..0]: 标志位10.5.3 周期中断定时器寄存器八、 PIT定时器16位计数器加载寄存器 PITLD[0..3] PLD[15..0]:同上原理($0348)($034C)($0350)($0354)10.5.3 周期中断定时器寄存器九、 PIT16位计数器寄存器 PITCNT[0..3]PCNT[15..0]:该寄存器存放16位递减计数器值($034A)($034E)($0352)($0356)10.5 周期中断定时器PIT10.5.1 定时器简介10.5.2 周期中断定时器简介(PIT)10.5.3 周期中断定时器寄存器10.5.4 PIT模块编程范例10.5.5 PIT模块应用实例10.5.4 PIT模块编程范例初始化模块void initIOBoutput(void)//IO口初始化,B口为输出 {DDRB=0XFF;PORTB=0XFF; }void initPIT(void) //定时中断初始化函数 50ms {PITCFLMT_PITE=0; //关闭PIT模块PITCE_PCE0=1; //定时器通道0使能PITMUX_PMUX0=0; //定时器通道0使用微计数器0PITMTLD0=200-1; //8位定时器初值设定。
在40MHzBusClock下为5us.PITLD0=PITTIME-1; //16位定时器初值设定PITTIME*0.005msPITINTE_PINTE0=1;//定时器中断通道0中断使能PITCFLMT_PITE=1; //定时器通道0使能 10.5.4 PIT模块编程范例中断服务子程序void interrupt 66 PIT0(void) {PITTF_PTF0=1;//清中断标志位vTmpPIT++;if(vTmpPIT==10) { PORTB=~PORTB;//输出取反vTmpPIT=0;} }主程序void main(void) {pllclk();initIOBoutput();initPIT();EnableInterrupts;for(;;) {} /* wait forever */ }10.5 周期中断定时器PIT10.5.1 定时器简介10.5.2 周期中断定时器简介(PIT)10.5.3 周期中断定时器寄存器10.5.4 PIT模块编程范例10.5.5 PIT模块应用实例10.5.5 PIT模块应用实例PIT+显示应用实例(实验7)Ø任务:(1) 使用定时器实现跑马灯。
2) 实现一个电子秒表(3) 通过键盘输入闪动周期,然后实现跑马灯4) 扩展:电饭煲等家电中的预约功能本章提要10.1 并行I/O10.2 异步串行通信SCI10.3 同步串行通信SPI 10.4 ATD转换模块 10.5 周期中断定时器PIT 10.6 时钟产生器模块10.6 时钟产生器模块——锁相环模块作用:可以提高总线频率— 若晶振为4M— 不使用锁相环:总线频率为2M— 使用锁相环:总线频率可为40MHz方法:通过以下锁相环模块的寄存器设置— 锁相环控制寄存器(PLLCTL)— 时钟合成寄存器(SYNR)— 时钟分频寄存器(REFDV)— 时钟产生模块的标志寄存器(CRGFLG)— 时钟选择寄存器(CLKSEL) — 预分频寄存器(POSTDIV) 1、 时钟分频寄存器REFDV($35)REFFRQ[1..0] :与参考时钟有关 00 1-2M 01 2-6M 10 6-12M 11 12M以上 REFDIV[5..0] :分频因子,有效值为0~6310.6 时钟产生器模块——寄存器2、时钟合成寄存器SYNR($34)synthezizerVCOFRQ[1..0]:压控振动器VCO的增益 00 VCO频率 32-48M 01 VCO频率 48-80M 10 VCO频率 80-120M 11 VCO频率 120M以上 SYNDIV[5..0]:锁相环时钟倍频数,有效值为0~63。
10.6 时钟产生器模块——寄存器3、锁相环控制寄存器(PLLCTL)($3A)phase—locked—loop CME: 时钟监控允许位 1 允许 0 禁止 PLLON: 锁相环电路允许位 1 允许 0 禁止10.6 时钟产生器模块——寄存器4、时钟产生模块的标志寄存器 CRGFLG($37)clock and reset generationLOCK :锁相环锁定标志,从外部晶振频率时钟切换到VCO时钟时需要查看该标志是否由0变为11 时钟频率已稳定,锁相环频率已锁定 0 时钟频率未稳定,锁相环频率未锁定 10.6 时钟产生器模块——寄存器5、时钟选择寄存器(CLKSEL)($39)PLLSEL:选定锁相环位 1 Bus Clock=PLLCLK/2 0 Bus Clock=10.6 时钟产生器模块——寄存器6、预分频寄存器POSTDIV 。
