第7章 IO接口及增强型捕捉定时器模块_第1页
第7章 IO接口及增强型捕捉定时器模块_第2页
第7章 IO接口及增强型捕捉定时器模块_第3页
第7章 IO接口及增强型捕捉定时器模块_第4页
第7章 IO接口及增强型捕捉定时器模块_第5页
已阅读5页,还剩71页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第七章 IO接口及增强型捕捉定时器模块1实验内容 实验实验4 4:掌握:掌握9S129S12单片机单片机IOIO口的基本程序调试,学会使用口的基本程序调试,学会使用BDMBDM和实际实验系统编程和实际实验系统编程下载:下载:事先看一下实验板原理图和事先看一下实验板原理图和CodeWarrior V5.0开发环境快速入门开发环境快速入门-工程创建工程创建 for 9S12DG128B.doc或或CodeWarrior V5.0开发环境快速入门开发环境快速入门-工程创建工程创建 for 9S12XDT512等等.doc(一部分同学的实验板是带协处理器的(一部分同学的实验板是带协处理器的9S12XD

2、T512或或DP512等等),拿到实验板后先看一下板上单片机的型号。),拿到实验板后先看一下板上单片机的型号。1.1.编写并实现编写并实现LEDLED排灯排灯(D2D10)(D2D10)显示程序,实现花灯显示,即显示程序,实现花灯显示,即0101010101010101和和1010101010101010动态显示(动态显示(0 0表示灯灭,表示灯灭,1 1表示灯亮);表示灯亮);2.2.编写并实现编写并实现LEDLED排灯排灯(D2D10)(D2D10)显示程序,分别实现从左向右逐个点亮和从显示程序,分别实现从左向右逐个点亮和从右到左逐个点亮的流水灯显示;右到左逐个点亮的流水灯显示;3.3.编

3、写并实现编写并实现LEDLED排灯排灯(D2D10)(D2D10)显示程序,实现按键与显示程序,实现按键与LEDLED的关联,即的关联,即4 4个按个按键键S3S6S3S6控制控制4 4个个LEDLED灯,按键按下相应的灯亮,松开相应的灯灭。灯,按键按下相应的灯亮,松开相应的灯灭。要求要求1. 1. 用到延时的地方需用软件延时实现。用到延时的地方需用软件延时实现。 2. 2. 有完整的程序和注释,并最后总结实现原理。有完整的程序和注释,并最后总结实现原理。第七章 IO接口及增强型捕捉定时器模块2实验实验5 5:掌握:掌握9S129S12单片机单片机ECTECT模块的使用方法模块的使用方法要求要

4、求1. 1. 描述什么是输入捕捉和输出比较,描述描述什么是输入捕捉和输出比较,描述9S129S12单片机单片机ECTECT模块模块主要寄存器设置;主要寄存器设置; 2. 2. 用用ECTECT模块延时代替实验模块延时代替实验6 6中用到的软件延时,实现实验中用到的软件延时,实现实验6 6中中的各种的各种LEDLED排灯排灯(D2D10)(D2D10)显示效果;显示效果; 3. 3. 要有完整的程序和注释,并最后总结实现原理。要有完整的程序和注释,并最后总结实现原理。第七章 IO接口及增强型捕捉定时器模块3实验实验6 6:掌握:掌握9S129S12单片机实现数码管显示单片机实现数码管显示要求要求

5、1. 1. 在四位数码管上循环显示共个数中的某连续四在四位数码管上循环显示共个数中的某连续四位,如下图所示;位,如下图所示; 2. 2. 程序中需要延时的地方用软件延时实现;程序中需要延时的地方用软件延时实现; 3. 3. 要有完整的程序和注释,并最后总结实现原理。要有完整的程序和注释,并最后总结实现原理。0 1 2 3 4 5 6 7 8 9 A B C D E 第七章 IO接口及增强型捕捉定时器模块4实验实验7 7:掌握:掌握9S129S12单片机实现数码管显示单片机实现数码管显示要求要求1. 1. 在四位数码管上循环显示共个数中的某连续四在四位数码管上循环显示共个数中的某连续四位,如下图

6、所示;位,如下图所示; 2. 2. 程序中需要延时的地方用程序中需要延时的地方用ECTECT模块延时实现;模块延时实现; 3. 3. 要有完整的程序和注释,并最后总结实现原理。要有完整的程序和注释,并最后总结实现原理。0 1 2 3 4 5 6 7 8 9 A B C D E 第七章 IO接口及增强型捕捉定时器模块5实验实验8 8:掌握:掌握9S129S12单片机单片机ADAD和显示综合编程与调试和显示综合编程与调试要求要求1.1.实验板上单片机实验板上单片机ADAD模块的模块的AN15AN15引脚接了可调电位器引脚接了可调电位器RV1RV1(见(见实验板原理图),要求实现对可调电位器上的电压

7、进行实验板原理图),要求实现对可调电位器上的电压进行ADAD转换转换( 1010位精度位精度),并对采样结果进行数字滤波,即对采样多次),并对采样结果进行数字滤波,即对采样多次(如(如1010次)的结果排序并掐头去尾求平均值,将滤波后的结果次)的结果排序并掐头去尾求平均值,将滤波后的结果(转换成十进制)送四位数码管显示;(转换成十进制)送四位数码管显示; 2. 2. 调节可调电位器,观察数码管显示变化规律;调节可调电位器,观察数码管显示变化规律; 3. 3. 要有完整的程序和注释,画出程序流程图并最后总结实现要有完整的程序和注释,画出程序流程图并最后总结实现原理。原理。AD采样数字滤波第七章

8、IO接口及增强型捕捉定时器模块6第七章 IO接口及增强型捕捉定时器模块 7-1 7-1 通用通用I/OI/O接口接口7-2 I/O7-2 I/O接口的功能及设置方法接口的功能及设置方法 7-3 7-3 增强型定时器增强型定时器ECTECT模块模块内容提要内容提要: :第七章 IO接口及增强型捕捉定时器模块77-1 通用I/O接口第七章 IO接口及增强型捕捉定时器模块8I/O检测控制第七章 IO接口及增强型捕捉定时器模块9PORTA、PORTB、PORTE和PORTK在芯片处于扩展方式下被用作总线信号 第七章 IO接口及增强型捕捉定时器模块10PORTT、PORTP、PORTS、PORTM、PO

9、RTJ和PORTH被集成在端口集成模块(PIM)内 ,与片内其他功能模块的引脚复用 第七章 IO接口及增强型捕捉定时器模块11并行I/O口复用模块PORTJCAN4,I2C模块PORTPSPI1,PWM模块PORTMCAN0,CAN1,CAN4,SPI0模块PORTTECT模块PORTSSCI模块PORTADATD模块MC9S12DG128单片机并行单片机并行I/O的复用功能的复用功能 第七章 IO接口及增强型捕捉定时器模块127-2 I/O接口的功能及设置方法 通用I/O接口一般可以设置输入输出、驱动能力、内部上拉或下拉电阻、中断输入等功能,每个I/O接口都有各自的寄存器。数据寄存器:数据寄

10、存器:并行I/O接口都有数据寄存器进行数据的读取和发送 并行I/O口 数据寄存器 PORTA PORTA PORTB PORTB PORTE PORTE PORTJ PTJ(Port J I/O Register:可读写),PTIJ(Port J Input Register:只读) PORTP PTP,PTIP(意义类上) PORTM PTM,PTIM(意义类上) PORTT PTT,PTIT(意义类上) PORTS PTS,PTIS(意义类上) PORTHPTH, PTIH(意义类上)PORTAD PORTAD 第七章 IO接口及增强型捕捉定时器模块13Port J I/O Registe

11、r (PTJ)Read:Anytime.Write:Anytime.If the data direction bits of the associated I/O pins are set to 1, a read returns the value of the port register, otherwise the value at the pins is read.Port J Input Register (PTIJ)Read:Anytime.Write:Never, writes to this register have no effect.This register alwa

12、ys reads back the status of the associated pins. This can be used to detect overload or short circuit conditions on output pins.第七章 IO接口及增强型捕捉定时器模块14方向寄存器方向寄存器 MC9S12单片机中的I/O接口除了PORTAD只可作为输入口外,一般都是双向并行口,因此都配置了一个方向寄存器“DDRx”,I/O接口每个引脚的输入输出方向由各方向寄存器的对应位来设置。方向寄存器的某位为“0”表示相应的引脚为输入引脚;为“1”表示相应的引脚为输出引脚。 并行I

13、/O口 方向寄存器 特点 PORTA DDRA - PORTB DDRB - PORTE DDRE 低2位只能作输入 PORTJ DDRJ 高2位有效 PORTP DDRP - PORTM DDRM - PORTT DDRT - PORTS DDRS - PORTH DDRH - PORTAD - 只作输入口 第七章 IO接口及增强型捕捉定时器模块15驱动控制寄存器驱动控制寄存器 MC9S12单片机可以设置I/O接口的驱动能力,当I/O接口为输出口时此功能有效。此寄存器的相应位为“1”,则表示全额驱动能力;为“0”,则表示缩减驱动能力,后者的驱动能力是前者的三分之一。 并行I/O口 驱动控制寄

14、存器 特点 PORTA RDRIV.BIT0 1bit控制整个I/O口 PORTB RDRIV.BIT1 1bit控制整个I/O口 PORTE RDRIV.BIT4 1bit控制整个I/O口 PORTJ RDRJ - PORTP RDRP - PORTM RDRM - PORTT RDRT - PORTS RDRS - PORTH RDRH - PORTAD - - 第七章 IO接口及增强型捕捉定时器模块16拉电阻控制寄存器拉电阻控制寄存器 MC9S12单片机的各个I/O接口内置了拉电阻,可以通过编程来设置是否使用拉电阻。拉电阻的主要作用是当电路驱动器关闭时给线路(节点)一个固定电平,可以提高

15、总线的抗电磁干扰能力。拉电阻控制寄存器的相应位为“1”,则使用拉电阻;为“0”,则不使用拉电阻。另外,可以使用极性选择寄存器选择拉电阻的极性,即选择拉电阻为上拉或者下拉,相应位为“1”则表示下拉电阻,为“0”则表示上拉电阻。注意,PORTA、PORTB和PORTE只能使用上拉电阻,所以并不设有极性选择寄存器。 第七章 IO接口及增强型捕捉定时器模块17并行I/O口 拉电阻控制寄存器 极性选择寄存器 特点 PORTA PUCR.BIT0 -(只能使用上拉) 1bit控制整个I/O口 PORTB PUCR.BIT1 -(只能使用上拉) 1bit控制整个I/O口 PORTE PUCR.BIT4 -(

16、只能使用上拉) 1bit控制整个I/O口 PORTJ PERJ -(只能使用上拉) - PORTP PERP -(只能使用上拉) - PORTM PERM PPSM - PORTT PERT PPST - PORTS PERS PPSS - PORTH PERH PPSH - PORTAD - - - 第七章 IO接口及增强型捕捉定时器模块18中断允许、标志寄存器中断允许、标志寄存器 MC9S12单片机的I/O接口PORTJ、PORTP、PORTH。具有中断功能,可以通过软件编程来允许或禁止。相应位为“1”表示允许中断,“0”表示禁止中断。具有中断能力的I/O口都有各自的中断标志寄存器。对应位

17、为“1”表示有中断发生,“0”表示无中断发生。另外,还有中断边沿选择寄存器,相应位为“1”表示上升沿中断,“0”表示下降沿中断。当检测到有效中断边沿时,中断标志寄存器PIFJ相应位被置一,产生中断并进入相应的中断服务程序。 并行I/O口 中断使能寄存器 中断标志寄存器 边沿选择寄存器 PORTJ PIEJ PIFJ PPSJ PORTP PIEP PIFP PPSP PORTH PIEH PIFH PPSH 第七章 IO接口及增强型捕捉定时器模块19课本6.1.2 程序举例程序举例第七章 IO接口及增强型捕捉定时器模块208 缓冲器第七章 IO接口及增强型捕捉定时器模块21 #include

18、#include void interrupt 24 PJI(void); /* 声明中断函数*/void main(void) EnableInterrupts; DDRJ=0 x00;/*PORTJ作为输入*/ DDRB=0 xFF;/*PORTB作为输出*/ PORTB=0 xff;/*灯全灭*/ DDRA=0 xff;/*PORTA输出*/ PORTA=0 x00;/*PORTA全为低电平*/ PPSJ=0 xff;/*上升沿中断*/ PIEJ=0 xff;/*中断使能*/for(;)PORTA=0b11000000;/*产生中断*/ #pragma CODE_SEG NON_BANK

19、ED void interrupt 24 PJI(void)/*中断服务程序,中断向量号为24*/PORTB=0 xf0;/*LED灯高四灭,低四亮*/ #pragma CODE_SEG DEFAULT /9S12中断程序必须定位于non- /banked 区域,必须有这两个pragma语句第七章 IO接口及增强型捕捉定时器模块22课本6.1.2 程序说明程序说明使用PORTJ口的中断功能。设置PORTA口为输出口,PORTA的第6脚和PORTJ的第6脚硬件相连,PORTB为输出口,用来控制8个LED灯,PORTJ开中断,并且设置为上升沿触发。首先PORTA初始化为0,PORTB为0 xff,

20、此时LED灯全灭。在循环中设置PORTA第6位为高电平,产生中断,在中断服务程序中设置LED灯低4位亮,高4位不亮,表示已经进入中断。 第七章 IO接口及增强型捕捉定时器模块23如何得知中断向量号?向量号0向量号1向量号24依次向下数中断向量表(书上有)第七章 IO接口及增强型捕捉定时器模块24本课程实验板原理图见pdf文件另参考“实验板上所用芯片”中的文档前面那个例程不适用本课程实验板第七章 IO接口及增强型捕捉定时器模块25让实验板上的小灯(让实验板上的小灯(D10D2)循环点亮)循环点亮#include /* common defines and macros */#include /*

21、 derivative information */#pragma LINK_INFO DERIVATIVE mc9s12dg128bvoid deley(unsigned int d) int i; for(i=0;i=1; if(d=0) d=0 x80; for(;) /* wait forever */ /* please make sure that you never leave this function */第七章 IO接口及增强型捕捉定时器模块26该程序也可写成如下:该程序也可写成如下:#include /* common defines and macros */#incl

22、ude /* derivative information */#pragma LINK_INFO DERIVATIVE mc9s12dg128b#define PortA *(volatile unsigned char *)0)#define DdrA *(volatile unsigned char *)2)void deley(unsigned int d) int i; for(i=0;i=1; if(d=0) d=0 x80; for(;) /* wait forever */第七章 IO接口及增强型捕捉定时器模块27IC/OC的定义: Input Capture/Output C

23、ompare 输入捕捉和输出比较 IC用来监测外部的事件和输入信号。当外部事件发生或信号发生变化时,在指定的输入捕捉引脚发生一个指定的沿跳变(可以指定该跳变是上升沿还是下降沿)。定时器捕捉到特定的沿跳变后,把计数寄存器当前的值锁存到通道寄存器。ECT模块有8个IC通道分别为IC0-IC7,IC0-IC3是标准的带有保持器的缓冲通道,而IC4-IC7不带有保持器。 OC用程序的方法在规定的时刻输出需要的电平,实现对外部电路的控制。通道为OC0-OC7。ECT模块的外部引脚: 共有8个外部引脚,分别为IOC0IOC7,与PORTT复用。7-3 增强型定时器ECT模块第七章 IO接口及增强型捕捉定时

24、器模块28ECT 模块结构模块结构一个16位向上带可编程预分频的主计数器.一个16位的带可编程预分频的模数向下计数器8个独立的定时器通道,每个通道具备输入捕捉和输出比较功能4个8位脉冲累加器,也可设置成2个16位脉冲累加器.通过对寄存器编程可以实现不同的功能第七章 IO接口及增强型捕捉定时器模块29定时器结构定时器结构预分频选择 PR2:0M Clock1 2 4 8 16 32 64 128TCNT15.0DATA BUSPINRRRR1 计数器使能0 计数器禁止TEN TSWAI TSFRZ TFFCATSCR1 -定时器控制寄存器RST: 0 0 0 0 0 0 0 0TCNT CLK.

25、TENB0.B7 B8.B15R = Reserved$0006Address Offset $0004, 05$FFFE$FFFF$0000*TOF模块时钟计数器寄存器脉冲累加器计时器溢出时,对溢出标志位置位,如允许中断,则向CPU发出中断请求第七章 IO接口及增强型捕捉定时器模块30定时器,预分频,计数器定时器,预分频,计数器寄存器:1. TCNT 16 位自由运行/模计数器B15.B0RST: 0.0 Address Offset $0004, $00051 定时器溢出中断使能0 定时器中断禁止$000D3. TSCR2 RST: 0 0 0 0 0 0 0 0 1 定时器由OC7比较符

26、合时复位0 定时器自由运行TCRE - 允许使用PWM功能B7.B0TOI 0 0 0 TCRE PR2 PR1 PR02. TFLG2定时器溢出标志位,写 1 清零TOF 0 0 0 0 0 0 0B7.B0RST: 0 0 0 0 0 0 0 0$000F标志寄存器除以1248163264128000011110101010100110011PR2 PR1 PR0 预分频系数选择第七章 IO接口及增强型捕捉定时器模块31编程步骤编程步骤用途: 产生定时器溢出中断初始化设定预分频系数定时器溢出中断使能定时器使能中断函数清标志位1.用户自己的代码void ECT_Init(void) TSCR

27、2_PR = 7; /prescale factor is 8, bus clock/128 TSCR2_TOI = 1; /timer overflow interrupt enable TSCR1_TEN = 1; /timer enablevoid interrupt 16 Int_TimerOverFlow(void) TFLG2_TOF = 1; /clear timer overflow flag /用户自己的代码用户自己的代码 .第七章 IO接口及增强型捕捉定时器模块32定时器溢出中断例程(可在实验板上运行)定时器溢出中断例程(可在实验板上运行)#include /* commo

28、n defines and macros */#include /* derivative information */#pragma LINK_INFO DERIVATIVE mc9s12dg128b#pragma CODE_SEG NON_BANKED /9S12中断程序必须定位于中断程序必须定位于non-banked 区域区域interrupt 16 void Int_TimerOverFlow(void) TFLG2_TOF = 1; /clear timer overflow flag /用户自己的代码用户自己的代码 PORTA=PORTA;#pragma CODE_SEG DEFA

29、ULT /9S12中断程序必须定位于中断程序必须定位于/non-banked 区域,必须有这两个区域,必须有这两个pragma语句语句第七章 IO接口及增强型捕捉定时器模块33void main(void) EnableInterrupts; TSCR2_PR0 = 1; TSCR2_PR1 = 1; TSCR2_PR2 = 0; /prescale factor TSCR2_TOI = 1; /timer overflow interrupt enable TFLG2_TOF = 1; TSCR1_TEN = 1; /timer enable DDRA=0 xFF; PORTA=0 xFF;

30、 for(;)第七章 IO接口及增强型捕捉定时器模块34输出比较功能输出比较功能16位自由运行计数器16位输出比较寄存器 比如设置为:0 x5678 ,软件可以修改引脚控制逻辑中断请求CxF状态标志位置位,当比较发生时(值相等时)CxI中断屏蔽(通过软件使能) 共有8个输出比较通道 每个通道有自己的向量表和控制寄存器 在特定的时刻输出一个信号当比较寄存器的值和计数器的值相等时,采取行动比如:当TCNT=0 x5678TCNTTCxPinOCx比较比较器相等置位OROR清零翻转第七章 IO接口及增强型捕捉定时器模块35输出比较寄存器输出比较寄存器 C7F C6F C5F C4F C3F C2F

31、C1F C0FOM7OL7OM6OL6OM5OL5OM4OL41. TC7 TC02. TFLG13. TIE4. TCTL1 比较/捕捉标志位写 1清除中断状态标志位 比较/捕捉屏蔽位 0 = 屏蔽中断请求 1 = 中断请求允许 OMXOLXAction on OCx00110101No Action OCxToggle OCxDrive OCx LODrive OCx HI输出模式和输出电平 (O7OC0)B6B5B4B3B7B2B1B05. TCTL2B6B5B4B3B7B2B1B0RST: 0 0 0 0 0 0 0 0$0008RST: 0 0 0 0 0 0 0 0RST: 0 0

32、 0 0 0 0 0 0RST: 0 0 0 0 0 0 0 0$000C$000E$0009Address Offset$0010 - $0011 - -$001E - $001F16 位捕捉/比较寄存器 (TC7) 16 位捕捉/比较寄存器 (TC0) - C7I C6I C5I C4I C3I C2I C1I C0IB6B5B4B3B7B2B1B0OM3OL3OM2OL2OM1OL1OM0OL0B6B5B4B3B7B2B1B0FOC7 FOC6 FOC5 FOC4 FOC3 FOC2 FOC1 FOC06. CFORCB7 B6 B5 B4 B3 B2 B1 B0RST: 0 0 0 0

33、 0 0 0 0$0001输出强制比较寄存器第七章 IO接口及增强型捕捉定时器模块36输出比较输出比较, OC7-OC0中断: 清除中断,对TFLG1 其中的CxF写1不要使用位操作使用OC7-OC0向量表单片机复位时: 自由运行计数器(TCNT)被初始化为$0000,并且被禁止 输出比较寄存器被初始化为$0000捕捉/比较引脚与比较功能断开中断被禁止标志位被清零强制比较位被清零第七章 IO接口及增强型捕捉定时器模块37输出比较输出比较, 通道通道7 OC7 (1 of 2)用途: 1、多个输出比较引脚的控制2、通过2个输出比较来控制1个引脚,可以输出短脉冲在每个时钟周期内,输出比较寄存器7和

34、自由运行的计数器进行比较如果它们的值相等,则:1、中断标志位被置12、输出引脚OC7-OC0的状态被改变 或/和 产生中断OC7可以影响多个引脚(OC7-OC0)当OC7和OC7-OC0某个引脚的动作有冲突时,OC7的动作将被执行 第七章 IO接口及增强型捕捉定时器模块38输出比较输出比较 7 (2 of 2) C7I C6F C5F C4F C3F C2F C1F C0F OC7M7 OC7M6 OC7M5 OC7M4 OC7M3 OC7M2 OC7M1 OC7M04. TIE 定时器中断允许使能5. OC7M - OC7MASKB7.B0 1 - TC7 -16 位比较寄存器7. RST:

35、 0 0 0 0 0 0 0 0RST: 0 0 0 0 0 0 0 0$0002$000C C7F C6F C5F C4F C3F C2F C1F C0FRST: 0 0 0 0 0 0 0 0$000EB7.B02. TCNT - 16-位计数器B15.B0RST: 0. .0$0004, $05B7.B03. TFLG1 标志位 OC7D7 OC7D6 OC7D5 OC7D4 OC7D3 OC7D2 OC7D1 OC7D06. OC7D - OC7DATARST: 0 0 0 0 0 0 0 0$0003B7.B0OC7MASK 根据寄存器的设置,可以控制任意一路或全部输出比较引脚 OC

36、7DATA 当OC7比较事件发生时,引脚的逻辑电平第七章 IO接口及增强型捕捉定时器模块39定时器溢出时电平翻转定时器溢出时电平翻转TOV7 TOV6 TOV5 TOV4 TOV3 TOV2 TOV1 TOV0 TOVx 定时器溢出时,电平翻转只有当通道被配置成输出比较时,才有效Address Offset $0007RST: 0.01. TTOV -定时器溢出时电平翻转寄存器$000D2. TSCR2 定时器系统控制寄存器 RST: 0 0 0 0 0 0 0 0 B7.B0TOI 0 0 0 TCRE PR2 PR1 PR01 定时器由 OC7 比较事件发生来复位0 定时器自由运行第七章

37、IO接口及增强型捕捉定时器模块40输入捕捉输入捕捉, IC7-IC0 (1 of 3)用途:1、测量事件发生的间隔时间2、对实时时间进行响应输入捕捉能感应到引脚上的电平的变化如果发现电平变化,则:1、计数器的值被保存到到输入捕捉寄存器中,状态标志位被置12、如果中断允许,则向CPU发出中断请求第七章 IO接口及增强型捕捉定时器模块41ABS 应用举例应用举例PT0PT1PT2SENSOR 1SENSOR 2SENSOR 3SENSOR 4PB1PB2PB3PB4BRAKEFLUIDPUMPSYSTEMSIGNALCONDITIONINGLOGIC IC/PASIGNALCONDITIONING

38、LOGICSIGNALCONDITIONINGLOGICSIGNALCONDITIONINGLOGICPT3左前轮 右前轮 左后轮右后轮HCS12TIMER 定时器输入捕捉测量车轮转速 发送命令到刹车压力调节阀来调节压力 IC/PA IC/PA IC/PA如果左右轮速脉冲周期不等则调节电磁阀第七章 IO接口及增强型捕捉定时器模块42输入捕捉功能输入捕捉功能比较/捕捉 单元16位自由运行计数器16位输入捕捉锁存器捕捉发生时,状态位置1向CPU发出中断请求Edge沿选择检测ICxCxFCxI上升/下降沿可选中断屏蔽当外部事件发生时,或外部信号输入发生变化时,记录当前时间TCNTTCx延时计数器 0

39、 0 0 0 0 0 DLY1 DLY0Bit 7 6 5 4 3 2 1 0DLYCT 延时计数器控制寄存器DLY1:0 - Delay Counter Values 00 = Disabled 01 = 256 M Clocks 10 = 512 M Clocks 11 = 1024 M ClocksAddress Offset $0029注: 如果输入信号电平和跳变之前的电平相反时,延时计数器在当前时钟计数时刻产生一个脉冲,它用来去除噪声OROR16位保持寄存器应用: ABS 刹车. 雷达测距,发动机引脚 共有8个输入捕捉通道 每个通道有自己的向量表和控制寄存器第七章 IO接口及增强型捕

40、捉定时器模块43输入捕捉输入捕捉, IC7-IC0 (2 of 3)B2B1B0EDGxB 输入捕捉沿控制(IC7IC0)EDGxAICx EDGE0101无边沿 ICx 禁止上升沿下降沿任何沿4. TCTL3 C7F C6F C5F C4F C3F C2F C1F C0FC7I C6I C5I C4I C3I C2I C1I C0I2. TFLG13. TIE1. TC7 TC0EDG7B EDG7A EDG6B EDG6A EDG5B EDG5A EDG4B EDG4A5. TCTL4EDG3B EDG3A EDG2B EDG2A EDG1B EDG1A EDG0B EDG0AB6B5B4

41、B3B7B2B1B0RST: 0 0 0 0 0 0 0 0RST: 0 0 0 0 0 0 0 0RST: 0 0 0 0 0 0 0 0RST: 0 0 0 0 0 0 0 0B6B5B4B3B7B2B1B0B6B5B4B3B7B2B1B0B6B5B4B3B7B2B1B0$000E$000C$000A$000BAddress Offset$0010 - $0011 - -$001E - $001F16 位捕捉/比较寄存器 (TC7) 16 位捕捉比较寄存器 (TC0) - 比较/捕捉标志位写 1清除中断状态标志位 比较/捕捉屏蔽位 0 = 屏蔽中断请求 1 = 中断请求允许 0011第七章

42、 IO接口及增强型捕捉定时器模块44增强型捕捉增强型捕捉ECT比标准的比标准的TIM增强的特点增强的特点 4个输入捕捉通道有16位缓冲寄存器 4个8位 / 2个16位脉冲累加器 16位带4位预分频的模数向下计数器 4个用户选择的延时计数器用来消除噪声 主定时器预分频扩展至7位 队列和锁定模式 主定时器输入捕捉寄存器保持寄存器外部事件拷贝拷贝拷贝读取数据读取数据外部事件第七章 IO接口及增强型捕捉定时器模块45输入捕捉输入捕捉/输出比较选择输出比较选择IOS7 IOS6 IOS5 IOS4 IOS3 IOS2 IOS1 IOS0TIOS 定时器输入捕捉/输出比较选择寄存器 IOSx = 1 输出

43、比较功能 = 0 输入捕捉功能RST: 0 0 0 0 0 0 0 0$0000B6B5B4B3B7B2B1B0TIMER 定时器使能1 计数器使能0 计数器禁止TSCR1 定时器系统控制寄存器RST: 00$0006TEN TSWAI TSFRZ TFFCA Reserved TSWAI 在WAIT模式时,定时器停止 0 = 不停止 1 = 停止TSBCK 在DEBUG模式时, 定时器停止 0 = 不停止 1 = 停止TFFCA 定时器快速标志位清除使能 0 = 定时器标志位正常清零 1 = 输入捕捉时读取寄存器, 输出比较时写寄存器,可以对相应通道标志位清零第七章 IO接口及增强型捕捉定时

44、器模块46脉冲累加模式脉冲累加模式8 位计数器PAI 脉冲累加器输入引脚 事件计数模式引脚作为计数器时钟软件选择以什么沿来计数计数器溢出时,产生中断(可选) 8 位计数器PAI 脉冲累加器输入引脚 时间累加模式引脚作为计数器软件选择主动电平作为门的输入当计数器溢出时产生中断在使能的引脚上后面的边缘时产生中断 自由运行E/64时钟PACNTPACNT对事件计数模式,PEDGE 选择哪个PAI的沿用来增加 PACNT寄存器对门累加模式,PEDGE选择哪个PAI 状态用来禁止计数(比如. PEDGE = 1 - 禁止计数 当PAI = HI). 第七章 IO接口及增强型捕捉定时器模块47脉冲累加结构

45、脉冲累加结构PINTCx PIN Logic DIV by 64Control Reg.+ 8/16 BIT CNTRHolding RegisterPOLARITYCONTROL PTxIRQDATABUS注 1: PTx 可以被用作脉冲累加,输入捕捉或输出比较这里 PTx = PT0 - PT3SELECTED CLOCKDelayCounterEdgeDetector 0 0 0 0 0 0 DLY1 DLY0Bit 7 6 5 4 3 2 1 0DLYCT - Delay Counter Control RegisterDLY1:0 - Delay Counter Values 00

46、= Disabled 01 = 256 M Clocks 10 = 512 M Clocks 11 = 1024 M ClocksAddress Offset $0029注: 如果输入信号电平和跳变之前的电平相反时,延时计数器在当前时钟计数时刻产生一个脉冲,它用来去除噪声第七章 IO接口及增强型捕捉定时器模块48模向下计数器模向下计数器二进制向下计数器. 可以完全控制计数起始值 应用于精确事件计时-用于产生周期性的标志位和中断主定时器单独运行。时钟来自总线时钟,并经过预分频。可以被设置为定时中断或产生标志位。或装载初始值后向下计数到$0000。ParameterValueUnitsCrysta

47、l Frequency16MHzBus Frequency8MHzBus Tick Time125.0000nSPeriodic Interrupt Time191uSBus Ticks Required1528.00TicksModulus Counter Prescaler4Modulus Counter Start Value382装载向下计数至0执行动作MCCNT:模数减法计数寄存器第七章 IO接口及增强型捕捉定时器模块49BIT76543210RMCZIMODMCRDMCLMCENMCPR1MCPR0WICLATFLMCRESET00000000MCCTL:16位模数减法计数控制寄存

48、器位模数减法计数控制寄存器MCZI:模数计数器减法溢出中断允许: 0=禁止中断。1=允许中断。 MODMC:模数模式允许: 0=计数器从写入的数值计数一次到$0000。 1=允许模数模式。当计数器计到$0000时,则重新装入最新写入的计数值重新进行计数。RDMCL:模数计数器读取选择寄存器: 0=对计数器读操作,返回当前的计数数值。1=对计数器读操作,返回预先加载的数值。ICLAT:输入捕捉强制锁存FLMC:强制把装载寄存器中的值送入模数计数寄存器中MCEN:模数减法计数器允许: 0=禁止。1=允许。 MCPR1、MCPR0:模数计数器预分频因子设置MCPR1MCPR0预分频因子0010141

49、081116第七章 IO接口及增强型捕捉定时器模块50BIT76543210RMCZF000POLF3POLF2POLF1POLF0WRESET00000000MCFLG:16位模数减法计数器标志寄存器位模数减法计数器标志寄存器MCZF:模数计数器减法溢出标志位当计数器减法计数到$0000时,此位被置一。对这位人工置一可以进行清零,写零无效。当TSCR寄存器中的TFFCA位被置位时,对MCCNT寄存器的任何访问将使MCZF标志清零。POLF3-POLF0:第一次输入捕捉极性状态位POLF3-POLF0是只读的,对它们进行写操作无效。这四位指示了引起输入捕捉操作的边沿极性。POLF3-POLF0

50、分别对应了PORT3-PORT0的输入。0=第一次输入捕捉由下降沿触发。1=第一次输入捕捉由上升沿触发。 第七章 IO接口及增强型捕捉定时器模块51/利用模数减法计数器进行定时利用模数减法计数器进行定时#include /* common defines and macros */#include /* derivative information */#pragma LINK_INFO DERIVATIVE mc9s12dg128bunsigned int count1=0;#pragma CODE_SEG NON_BANKED /9S12中断程序必须定位中断程序必须定位/于于non-ban

51、ked 区域区域void interrupt 26 MDC_ISR(void) MCFLG = 0 x80; /清中断标志位清中断标志位 count1+; if(count1=20) /1s闪烁一次闪烁一次 PORTA=PORTA; count1=0; #pragma CODE_SEG DEFAULT /9S12中断程序必须定位于中断程序必须定位于non-/banked 区域,必须有这两个区域,必须有这两个pragma语句语句第七章 IO接口及增强型捕捉定时器模块52void SET_PLL(void) /总线时钟频率为总线时钟频率为8MHz CLKSEL=0 x00; PLLCTL=0 xe

52、1; SYNR=3;/PLLCLK =2*OSCCLK*(SYNR + 1)/(REFDV + 1)=16MHz /实验板上实验板上OSCCLK4MHz REFDV=1; PLLCTL=0 x60; asm NOP; asm NOP; asm NOP; while(CRGFLG&0 x08)=0);/时钟校正同步时钟校正同步 CLKSEL=0 x80; /选定选定PLL时钟,时钟,Bus Clock=PLLCLK/2=8MHz 第七章 IO接口及增强型捕捉定时器模块53void main(void) SET_PLL(); MCCTL=0 xDF;/设定模数减法计数器工作方式,中断使能,

53、计数器使能设定模数减法计数器工作方式,中断使能,计数器使能 /分频系数为分频系数为16 MCCNT=25000;/定时器赋初值定时器赋初值 (1/8M)*16*25000= 50ms EnableInterrupts;/开中断开中断 DDRA=0 xFF; PORTA=0 xFF; for(;)第七章 IO接口及增强型捕捉定时器模块54定时器低功耗模式定时器低功耗模式TSCR 定时器系统控制寄存器RST: 00$0006TEN TSWAI TSFRZ TFFCA Reserved TSWAI 在WAIT模式时,定时器停止 0 = 不停止 1 = 停止TSBCK 在DEBUG模式时, 定时器停止

54、 0 = 不停止 1 = 停止TFFCA 定时器快速标志位清除使能 0 = 定时器标志位正常清零 1 = 输入捕捉时读取寄存器, 输出比较时写寄存器,可以对相应通道标志位清零1 计数器使能0 计数器禁止第七章 IO接口及增强型捕捉定时器模块55三个例子三个例子举三个例子讲述本节内容(定时器模块寄存器太多,逐个讲解太费时间,效果也不好) 流水灯显示 使用输入捕捉功能,对外来脉冲进行计数 使用输出比较功能,输出一个具有一定宽度的高电平脉冲第七章 IO接口及增强型捕捉定时器模块56void TimerOverflow(void)unsigned char i=1,j=0 x80;while(i!=0

55、)&(j!=0)PORTA=(i|j);i=1;while(TCNT!=0 x0000); /延时while(TCNT=0 x0000);void main(void)EnableInterrupts;TSCR1=0 x80; /定时器使能TSCR2=0 x07; /分频系数为128DDRA=0 xff;PORTA=0 xff;for(;)TimerOverflow();流水灯的显示流水灯的显示PORTA输出调用函数设置控制寄存器1设置控制寄存器2延时控制这个可在实验板上运行第七章 IO接口及增强型捕捉定时器模块57ECT控制寄存器一(控制寄存器一(TSCR1)本例设置TSCR1=0

56、x80。TEN=1:主定时器使能。0=主定时器禁止,进入低功耗状态。TSWAI=0:等待模式时主定时器继续工作,方便调试。0=停止工作。TSFRZ=0:冻结模式时主定时器继续工作。0=停止工作。TFFCA=0:自动清除标志位。1=手动清除。必须设置TSCR1才可以使主定时器工作,需要在ECT模块初始化时就设置好。第七章 IO接口及增强型捕捉定时器模块58ECT控制寄存器二(控制寄存器二(TSCR2)TOI:0禁止定时器溢出中断。1=允许。本例设置TOI=0。TCRE:定时计数器复位允许 。0=禁止复位,计数器自由计数。1=允许复位。本例设置TCRE =0 。PR2、PR1、PR0:预分频因子选

57、择本例设置PR2=1、PR1=1、PR0=1:分频系数=27=128。第七章 IO接口及增强型捕捉定时器模块59总线时钟(Bus Clock)频率是多少?见课件“第3章 MC9S12单片机的内核及片上资源.ppt”第31和32页。第七章 IO接口及增强型捕捉定时器模块60ECT计数寄存器(计数寄存器( TCNT )TCNT为自由计数器的计数值,本例通过读取它的值实现延时。这是一个16位的寄存器,最大值为65535。 while(TCNT!=0 x0000); while(TCNT=0 x0000);这两句的含义是:TCNT开始计数后值不为0,等待直到TCNT溢出返回0,然后再等到TCNT不为0

58、。为什么要弄两个while?第七章 IO接口及增强型捕捉定时器模块61例二:输入捕捉例二:输入捕捉利用输入捕捉0通道对外来的方波信号进行捕捉,采用中断的形式。中断发生后,读取捕捉后的计数值,并通过PORTB口使LED灯点亮以指示中断成功。通道0设置为输入捕捉,采用双沿触发(上下沿均触发),IC0开中断,可以进入中断服务程序。方波信号由PORTA_BIT6产生,PORTA_BIT6和IOC0硬件连接。第七章 IO接口及增强型捕捉定时器模块62第七章 IO接口及增强型捕捉定时器模块63第七章 IO接口及增强型捕捉定时器模块64例二:输入捕捉例二:输入捕捉IC0的初始化:的初始化:void ic_i

59、nit(void)TSCR1= 0 x90; /主定时器使能 TSCR2=0 x07; /分频因子=128 ICSYS=0 x02; /IC缓冲使能 TIOS=0; /通道设置为输入捕获TCTL4= 0 xff; /采用上升、下降沿触发 TIE=0b00000001; /通道0开中断本例使用了例一未使用过的寄存器:ICSYS、TIOS、TCTL4和TIE。第七章 IO接口及增强型捕捉定时器模块65输入控制系统寄存器输入控制系统寄存器-ICSYSSHxy=0:正常操作。1=x通道和y通道将产生一样的输入动作,x通道的设置同样适用于y。TFMOD=0:只要产生正确的输入捕获事件,TFLG1中的CxF位就置一。1=队列模式时才使用。PACMX=0:8位脉冲累加器溢出后自动回0。1=不自动回0,停留在0XFF。脉冲累加器对IC通道捕获的有效边沿数量进行计数。BUFEN=1:使用输入捕获缓冲区。0=不使用

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论