IO接口及增强型捕捉定时器模块.ppt
《IO接口及增强型捕捉定时器模块.ppt》由会员分享,可在线阅读,更多相关《IO接口及增强型捕捉定时器模块.ppt(76页珍藏版)》请在三一办公上搜索。
1、实验内容,实验6:掌握9S12单片机IO口的基本程序调试,学会使用BDM和实际实验系统编程下载:事先看一下实验板原理图和CodeWarrior V5.0开发环境快速入门-工程创建 for 9S12DG128B.doc或CodeWarrior V5.0开发环境快速入门-工程创建 for 9S12XDT512.doc(一部分同学的实验板是带协处理器的9S12XDT512),拿到实验板后先看一下板上单片机的型号。1.编写并实现LED排灯(D2D10)显示程序,实现花灯显示,即01010101和10101010动态显示(0表示灯灭,1表示灯亮);2.编写并实现LED排灯(D2D10)显示程序,分别实现
2、从左向右逐个点亮和从右到左逐个点亮的流水灯显示;3.编写并实现LED排灯(D2D10)显示程序,实现按键与LED的关联,即4个按键S3S6控制4个LED灯,按键按下相应的灯亮,松开相应的灯灭。要求1.用到延时的地方需用软件延时实现。2.有完整的程序和注释,并最后总结实现原理。,实验7:掌握9S12单片机ECT模块的使用方法要求1.描述什么是输入捕捉和输出比较,描述9S12单片机ECT模块主要寄存器设置;2.用ECT模块延时代替实验6中用到的软件延时,实现实验6中的各种LED排灯(D2D10)显示效果;3.要有完整的程序和注释,并最后总结实现原理。,实验8:掌握9S12单片机实现数码管显示要求1
3、.在四位数码管上循环显示共个数中的某连续四位,如下图所示;2.程序中需要延时的地方用软件延时实现;3.要有完整的程序和注释,并最后总结实现原理。,0 1 2 3 4 5 6 7 8 9 A B C D E,实验9:掌握9S12单片机实现数码管显示要求1.在四位数码管上循环显示共个数中的某连续四位,如下图所示;2.程序中需要延时的地方用ECT模块延时实现;3.要有完整的程序和注释,并最后总结实现原理。,0 1 2 3 4 5 6 7 8 9 A B C D E,实验10:掌握9S12单片机AD和显示综合编程与调试要求1.实验板上单片机AD模块的AN15引脚接了可调电位器RV1(见实验板原理图),
4、要求实现对可调电位器上的电压进行AD转换(10位精度),并对采样结果进行数字滤波,即对采样多次(如10次)的结果排序并掐头去尾求平均值,将滤波后的结果(转换成十进制)送四位数码管显示;2.调节可调电位器,观察数码管显示变化规律;3.要有完整的程序和注释,画出程序流程图并最后总结实现原理。,AD采样,数字滤波,第七章 IO接口及增强型捕捉定时器模块,7-1 通用I/O接口7-2 I/O接口的功能及设置方法 7-3 增强型定时器ECT模块,内容提要:,7-1 通用I/O接口,I/O,检测,控制,PORTA、PORTB、PORTE和PORTK在芯片处于扩展方式下被用作总线信号,PORTT、PORTP
5、、PORTS、PORTM、PORTJ和PORTH被集成在端口集成模块(PIM)内,与片内其他功能模块的引脚复用,MC9S12DG128单片机并行I/O的复用功能,7-2 I/O接口的功能及设置方法,通用I/O接口一般可以设置输入输出、驱动能力、内部上拉或下拉电阻、中断输入等功能,每个I/O接口都有各自的寄存器。,数据寄存器:并行I/O接口都有数据寄存器进行数据的读取和发送,Port J I/O Register(PTJ)Read:Anytime.Write:Anytime.If the data direction bits of the associated I/O pins are set
6、 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 always reads back the status of the associated pins.This can be used to detect overload or short circui
7、t conditions on output pins.,方向寄存器,MC9S12单片机中的I/O接口除了PORTAD只可作为输入口外,一般都是双向并行口,因此都配置了一个方向寄存器“DDRx”,I/O接口每个引脚的输入输出方向由各方向寄存器的对应位来设置。方向寄存器的某位为“0”表示相应的引脚为输入引脚;为“1”表示相应的引脚为输出引脚。,驱动控制寄存器,MC9S12单片机可以设置I/O接口的驱动能力,当I/O接口为输出口时此功能有效。此寄存器的相应位为“1”,则表示全额驱动能力;为“0”,则表示缩减驱动能力,后者的驱动能力是前者的三分之一。,拉电阻控制寄存器,MC9S12单片机的各个I/O
8、接口内置了拉电阻,可以通过编程来设置是否使用拉电阻。拉电阻的主要作用是当电路驱动器关闭时给线路(节点)一个固定电平,可以提高总线的抗电磁干扰能力。拉电阻控制寄存器的相应位为“1”,则使用拉电阻;为“0”,则不使用拉电阻。另外,可以使用极性选择寄存器选择拉电阻的极性,即选择拉电阻为上拉或者下拉,相应位为“1”则表示下拉电阻,为“0”则表示上拉电阻。注意,PORTA、PORTB和PORTE只能使用上拉电阻,所以并不设有极性选择寄存器。,中断允许、标志寄存器,MC9S12单片机的I/O接口PORTJ、PORTP、PORTH。具有中断功能,可以通过软件编程来允许或禁止。相应位为“1”表示允许中断,“0
9、”表示禁止中断。具有中断能力的I/O口都有各自的中断标志寄存器。对应位为“1”表示有中断发生,“0”表示无中断发生。另外,还有中断边沿选择寄存器,相应位为“1”表示上升沿中断,“0”表示下降沿中断。当检测到有效中断边沿时,中断标志寄存器PIFJ相应位被置一,产生中断并进入相应的中断服务程序。,课本6.1.2 程序举例,8 缓冲器,#include#include void interrupt 24 PJI(void);/*声明中断函数*/void main(void)EnableInterrupts;DDRJ=0 x00;/*PORTJ作为输入*/DDRB=0 xFF;/*PORTB作为输出*
10、/PORTB=0 xff;/*灯全灭*/DDRA=0 xff;/*PORTA输出*/PORTA=0 x00;/*PORTA全为低电平*/PPSJ=0 xff;/*上升沿中断*/PIEJ=0 xff;/*中断使能*/for(;)PORTA=0b11000000;/*产生中断*/#pragma CODE_SEG NON_BANKED void interrupt 24 PJI(void)/*中断服务程序,中断向量号为24*/PORTB=0 xf0;/*LED灯高四灭,低四亮*/#pragma CODE_SEG DEFAULT/9S12中断程序必须定位于non-/banked 区域,必须有这两个pr
11、agma语句,课本6.1.2 程序说明,使用PORTJ口的中断功能。设置PORTA口为输出口,PORTA的第6脚和PORTJ的第6脚硬件相连,PORTB为输出口,用来控制8个LED灯,PORTJ开中断,并且设置为上升沿触发。首先PORTA初始化为0,PORTB为0 xff,此时LED灯全灭。在循环中设置PORTA第6位为高电平,产生中断,在中断服务程序中设置LED灯低4位亮,高4位不亮,表示已经进入中断。,如何得知中断向量号?,向量号0,向量号1,向量号24,依次向下数,中断向量表(书上有),本课程实验板原理图见pdf文件另参考“实验板上所用芯片”中的文档前面那个例程不适用本课程实验板,让实验
12、板上的小灯(D10D2)循环点亮#include/*common defines and macros*/#include/*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*/,该程序也可写成如下:#include/*common defines a
13、nd macros*/#include/*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*/,IC/OC的定义:Input Capture/Output Compare 输入捕捉和输出比较IC用来
14、监测外部的事件和输入信号。当外部事件发生或信号发生变化时,在指定的输入捕捉引脚发生一个指定的沿跳变(可以指定该跳变是上升沿还是下降沿)。定时器捕捉到特定的沿跳变后,把计数寄存器当前的值锁存到通道寄存器。ECT模块有8个IC通道分别为IC0-IC7,IC0-IC3是标准的带有保持器的缓冲通道,而IC4-IC7不带有保持器。OC用程序的方法在规定的时刻输出需要的电平,实现对外部电路的控制。通道为OC0-OC7。ECT模块的外部引脚:共有8个外部引脚,分别为IOC0IOC7,与PORTT复用。,7-3 增强型定时器ECT模块,ECT 模块结构,一个16位向上带可编程预分频的主计数器.一个16位的带可
15、编程预分频的模数向下计数器8个独立的定时器通道,每个通道具备输入捕捉和输出比较功能4个8位脉冲累加器,也可设置成2个16位脉冲累加器.通过对寄存器编程可以实现不同的功能,定时器结构,预分频选择 PR2:0,M Clock,1 2 4 8 16 32 64 128,TCNT,15.0,DATA BUS,PIN,R,R,R,R,1 计数器使能0 计数器禁止,TEN TSWAI TSFRZ TFFCA,TSCR1-定时器控制寄存器,RST:0 0 0 0 0 0 0 0,TCNT CLK,.,TEN,B0.B7 B8.B15,R=Reserved,$0006,Address Offset$0004,
16、05,模块时钟,计数器寄存器,脉冲累加器,计时器溢出时,对溢出标志位置位,如允许中断,则向CPU发出中断请求,定时器,预分频,计数器,寄存器:,编程步骤,用途:产生定时器溢出中断初始化设定预分频系数定时器溢出中断使能定时器使能中断函数清标志位用户自己的代码,void ECT_Init(void)TSCR2_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
17、(void)TFLG2_TOF=1;/clear timer overflow flag/用户自己的代码.,定时器溢出中断例程(可在实验板上运行)#include/*common 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 t
18、imer overflow flag/用户自己的代码 PORTA=PORTA;#pragma CODE_SEG DEFAULT/9S12中断程序必须定位于/non-banked 区域,必须有这两个pragma语句,void 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;fo
19、r(;),输出比较功能,16位自由运行计数器,16位输出比较寄存器 比如设置为:0 x5678,软件可以修改,引脚控制逻辑,中断请求,CxF,状态标志位置位,当比较发生时(值相等时),CxI,中断屏蔽(通过软件使能),共有8个输出比较通道 每个通道有自己的向量表和控制寄存器,在特定的时刻输出一个信号,当比较寄存器的值和计数器的值相等时,采取行动比如:当TCNT=0 x5678,TCNT,TCx,PinOCx,比较器,相等,置位,OR,OR,清零,翻转,输出比较寄存器,C7F C6F C5F C4F C3F C2F C1F C0F,OM7,OL7,OM6,OL6,OM5,OL5,OM4,OL4,
20、1.TC7 TC0,2.TFLG1,3.TIE,4.TCTL1,比较/捕捉标志位写 1清除中断状态标志位,比较/捕捉屏蔽位 0=屏蔽中断请求 1=中断请求允许,输出模式和输出电平(O7OC0),5.TCTL2,RST:0 0 0 0 0 0 0 0,$0008,RST:0 0 0 0 0 0 0 0,RST:0 0 0 0 0 0 0 0,RST:0 0 0 0 0 0 0 0,$000C,$000E,$0009,Address Offset$0010-$0011-$001E-$001F,-,C7I C6I C5I C4I C3I C2I C1I C0I,OM3,OL3,OM2,OL2,OM1
21、,OL1,OM0,OL0,FOC7 FOC6 FOC5 FOC4 FOC3 FOC2 FOC1 FOC0,6.CFORC,B7 B6 B5 B4 B3 B2 B1 B0,RST:0 0 0 0 0 0 0 0,$0001,输出强制比较寄存器,输出比较,OC7-OC0,中断:清除中断,对TFLG1 其中的CxF写1不要使用位操作使用OC7-OC0向量表单片机复位时:自由运行计数器(TCNT)被初始化为$0000,并且被禁止 输出比较寄存器被初始化为$0000捕捉/比较引脚与比较功能断开中断被禁止标志位被清零强制比较位被清零,输出比较,通道7 OC7(1 of 2),用途:1、多个输出比较引脚的控
22、制2、通过2个输出比较来控制1个引脚,可以输出短脉冲在每个时钟周期内,输出比较寄存器7和自由运行的计数器进行比较如果它们的值相等,则:1、中断标志位被置12、输出引脚OC7-OC0的状态被改变 或/和 产生中断OC7可以影响多个引脚(OC7-OC0)当OC7和OC7-OC0某个引脚的动作有冲突时,OC7的动作将被执行,输出比较 7(2 of 2),C7I C6F C5F C4F C3F C2F C1F C0F,OC7M7 OC7M6 OC7M5 OC7M4 OC7M3 OC7M2 OC7M1 OC7M0,4.TIE 定时器中断允许使能,5.OC7M-OC7MASK,B7.B0,1-TC7-16
23、 位比较寄存器7.,RST:0 0 0 0 0 0 0 0,RST:0 0 0 0 0 0 0 0,$0002,$000C,C7F C6F C5F C4F C3F C2F C1F C0F,RST:0 0 0 0 0 0 0 0,$000E,B7.B0,2.TCNT-16-位计数器,B15.B0,RST:0.0,$0004,$05,B7.B0,3.TFLG1 标志位,OC7D7 OC7D6 OC7D5 OC7D4 OC7D3 OC7D2 OC7D1 OC7D0,6.OC7D-OC7DATA,RST:0 0 0 0 0 0 0 0,$0003,B7.B0,OC7MASK 根据寄存器的设置,可以控制
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- IO 接口 增强 捕捉 定时器 模块
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-5435169.html