版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1 4.1 4.1 定时器定时器/ /计数器计数器 4.3 4.3 UARTUART通信接口通信接口 4.2 4.2 可编程计数器阵列可编程计数器阵列 4.4 4.4 系统管理总线系统管理总线SMBusSMBus 4.5 4.5 串行外设接口总线串行外设接口总线SPISPI 重点重点了解了解2v定时和计数是定时和计数是测控系统测控系统中常用的功能,都是中常用的功能,都是通过计数实现通过计数实现的,的,可以由一个部件(可编程定时可以由一个部件(可编程定时/ /计数器)完成计数器)完成 若计数的事件源是若计数的事件源是周期固定周期固定的脉冲,则可以实现的脉冲,则可以实现定时功能定时功能 若计数的事
2、件源若计数的事件源周期不一定固定周期不一定固定,则只能实现,则只能实现计数功能计数功能v实现定时和计数的一般方法实现定时和计数的一般方法 软件法软件法:只能定时,且占用:只能定时,且占用CPUCPU时间,降低了时间,降低了CPUCPU的使用效率的使用效率 P88P88 专用硬件电路法专用硬件电路法:可以实现精确的定时和计数,但是参数调节不便:可以实现精确的定时和计数,但是参数调节不便 可编程定时器计数器法可编程定时器计数器法:不占用:不占用CPUCPU时间,能与时间,能与CPUCPU并行工作,实现精并行工作,实现精确的定时和计数,又可以通过编程设置其工作方式和其它参数,使用方便确的定时和计数,
3、又可以通过编程设置其工作方式和其它参数,使用方便 3vC8051F020C8051F020内部有内部有T T0 0T T4 4共共5 5个个1616位的可编程定时位的可编程定时/ /计数器计数器T T0 0T T2 2与与MCS-51MCS-51中的定时中的定时/ /计数器兼容计数器兼容T T3 3 和和T T4 4 为两个自动重装初值的定时为两个自动重装初值的定时/ /计数器,既可以作为通用计数器,既可以作为通用定定时时/计数器计数器用,也可以用于用,也可以用于ADCADC和和SMBusSMBus中中作定时器用时,对作定时器用时,对SYSCLKSYSCLK或其或其1212分频分频进行计数(取
4、决于进行计数(取决于CKCONCKCON),),作计数器用时,对外部输入的事件源计数(需配置交叉开关)作计数器用时,对外部输入的事件源计数(需配置交叉开关)有有多种工作方式多种工作方式,采用,采用加加1 1方式计数方式计数(有的器件是减(有的器件是减1 1计数的)计数的) 4 定时器定时器工作方式工作方式定时器定时器0和定和定时器时器1定时器定时器2定时器定时器3定时器定时器4方式方式013位定时器位定时器/计数器计数器 自动重装载自动重装载的的16位定时位定时器器/计数器计数器自动重装载自动重装载的的16位计数位计数器器/定时器定时器自动重装载自动重装载的的16位定时位定时器器/计数器计数器
5、方式方式116位定时器位定时器/计数器计数器带捕捉的带捕捉的16位定时器位定时器/计计数器数器带捕捉的带捕捉的16位定时器位定时器/计计数器数器方式方式28位自动重装位自动重装载的定时器载的定时器/计数器计数器UART0的波的波特率发生器特率发生器UART1的波的波特率发生器特率发生器方式方式3两个两个8位定时位定时器器/计数器计数器(只只限于定时器限于定时器0)5模式选择模式选择计数器计数器定时器定时器启启/ /停控制停控制执行机构执行机构减减1 1计数:如计数:如Intel 8253Intel 8253加加1 1计数:如计数:如T0T0T4T4溢出标志溢出标志查询查询中断中断6vT TMA
6、XMAX=2=2n nT T计数计数 式中式中n n由工作方式决定由工作方式决定,T T计数计数为定时器为定时器/ /计数器的计数器的计数脉冲周计数脉冲周期时间期时间,由,由C8051FC8051F的主脉冲或主脉冲经的主脉冲或主脉冲经1212分频提供,是否需要分频提供,是否需要1212分频取决于对时钟控制寄存器分频取决于对时钟控制寄存器CKCONCKCON的设定(提供的设定(提供1212分频选项是分频选项是为了与标准为了与标准80518051兼容)。兼容)。 7v位位7 7:未用。读:未用。读=0b=0b,写,写= =忽略。忽略。v位位6-36-3:T4M-T0MT4M-T0M:T4T4到到T
7、0T0的时钟选择(不包含的时钟选择(不包含T3T3,T3T3的时钟选的时钟选择由择由T3T3控制寄存器控制寄存器TMR3CNTMR3CN的第的第0 0位位T3XCLKT3XCLK决定)。决定)。 0 0:定时器按系统时钟的:定时器按系统时钟的1212分频计数分频计数 1 1:定时器按系统时钟频率计数:定时器按系统时钟频率计数v位位2-02-0:保留。读:保留。读=000b=000b,写入值必须是,写入值必须是000b000b。 8v定时方式:定时方式:每一个计数周期每一个计数周期(T(T计数计数) )计数器加计数器加1 1,直至,直至计满溢出计满溢出( (全全1 1加加1 1到全到全0)0)产
8、生中断请求。对于产生中断请求。对于N N位的加位的加1 1计数器,若计数器,若T T计数计数是是已知的,则从初值已知的,则从初值a a开始至溢出所用的时间为:开始至溢出所用的时间为:)(计数aTTN2 当当N=8N=8、a=0a=0时,时,最大定时时间最大定时时间为:为:T=256T=256T T计数计数v计数方式:计数方式:外部输入信号的外部输入信号的下降沿触发计数下降沿触发计数,计数器在每个时,计数器在每个时钟周期钟周期采样采样外部输入信号,若前一个周期的采样值为外部输入信号,若前一个周期的采样值为1 1,下一个,下一个周期的采样值为周期的采样值为0 0,则计数器加,则计数器加1 1,故识
9、别一个从,故识别一个从1 1到到0 0的跳变需的跳变需2 2个周期,所以,对外部输入信号最高的计数速率是时钟频率的个周期,所以,对外部输入信号最高的计数速率是时钟频率的1 12 2。 TC=2TC=2N N-C-C9v对定时器对定时器/ /计数器计数器T0T0和和T1T1的访问和控制是通过操作的访问和控制是通过操作SFRSFR实现的。实现的。vT0T0和和T1T1都是都是1616位的加位的加1 1计数器计数器,访问时以两个字节的,访问时以两个字节的形式出现:形式出现:TL0+TH0TL0+TH0、TL1+TH1TL1+TH1。vTCONTCON用于允许用于允许/ /禁止禁止T0T0和和T1T1
10、并指示它们的工作状态。并指示它们的工作状态。vT0T0和和T1T1都可以通过都可以通过TMODTMOD中的方式选择位中的方式选择位M1M1、M0M0设置为设置为四种工作方式四种工作方式(方式(方式0 0 方式方式3 3)之一,)之一, T1T1设置为方设置为方式式3 3将停止计数。将停止计数。10T0M0T0M1C/T0GATE0T1M0T1M1C/ T1GATE1TMOD字节字节地址地址89H D7 D6 D5 D4 D3 D2 D1 D0控制控制T0T0控制控制T1T1方式选择方式选择0000:方式:方式0 00101:方式:方式1 11010:方式:方式2 21111:方式:方式3 3定
11、时定时/ /计数选择计数选择0 0:定时器:定时器1 1:计数器:计数器门控位门控位11IT0IE0IT1IE1TR0TF0TR1TF1TCON字节字节地址地址88H88H D7 D6 D5 D4 D3 D2 D1 D0控制外部中断控制外部中断控制控制T1T1、T0T0启启/ /停控制停控制GATE=0GATE=0时时O O:停停1 1:启启溢出标志溢出标志1 1:溢出溢出0 0:不溢出不溢出P411213表表4-3 4-3 定时器定时器T0T0、T1T1的工作方式的工作方式TnM1TnM0工作方式工作方式功功 能能 说说 明明00013位定时器计数器位定时器计数器01116位定时器计数器位定
12、时器计数器102自动重装初值的自动重装初值的8位定时器计数位定时器计数器器113仅适用于仅适用于T0,分为两个独立的,分为两个独立的8位位计数器,计数器,T1停止计数停止计数1413位计位计数器数器启启/停控制停控制TR0=1TR0=1启动计数启动计数GATE0=0GATE0=0时:时:GATE0=1GATE0=1时:时: TR0=1TR0=1且且INT0=1INT0=1启动计数启动计数时基选择时基选择定时定时/计数模式选择计数模式选择15v若若T0T0工作于方式工作于方式0 0的定时器模式,计数初值为的定时器模式,计数初值为a a,则,则T0T0从初值从初值a a加加1 1计数至溢出所需的时
13、间为:计数至溢出所需的时间为: 式中式中f fOSCOSC为系统时钟频率,为系统时钟频率,T0MT0M为为T0T0的时钟选择位。的时钟选择位。v例例: :如果如果f fOSCOSC12MHz12MHz,则,则T0M=0T0M=0时,时,T T(2(21313a)a)s s;T0M=1T0M=1时,时,T T(2(21313a)/12a)/12s s。16v与方式与方式0 0的差别的差别仅仅在于计数器的位数不同,方式仅仅在于计数器的位数不同,方式1 1为为1616位位的定时器计数器。的定时器计数器。vT0T0工作于方式工作于方式1 1时,由时,由TH0TH0作为高作为高8 8位,位,TL0TL0
14、作为低作为低8 8位位,构成一个构成一个1616位计数器。位计数器。v若若T0T0工作于方式工作于方式1 1定时,计数初值为定时,计数初值为a a,f fOSCOSC12MHz12MHz,则则T0T0从计数初值从计数初值a a加加1 1计数到溢出的定时时间为:计数到溢出的定时时间为: T T( (2 21616a)s a)s 或或 T T( (2 21616a)/12sa)/12s。178位自动重装初值位自动重装初值18v适用于需要适用于需要重复定时或计数的场合重复定时或计数的场合。v定时精度比较高,但定时时间较短。定时精度比较高,但定时时间较短。v定时时间可用下式计算:定时时间可用下式计算:
15、 19v只适用于只适用于T0T0,若,若T1T1设置为方式设置为方式3 3,则停止计数。,则停止计数。 两个独立两个独立8位计数器位计数器借用借用T1的资源的资源TH0只只作定时作定时器用器用TL0可定可定时时/计数计数20v初始化步骤初始化步骤 初始化初始化TMOD根据需要初始化根据需要初始化CKCON装入初值装入初值中断设置(中断设置(IE、IP)启动定时启动定时/计数器(计数器(TCON)v计数器方式初值的计算计数器方式初值的计算 TC=2TC=2N NC C N N为计数器的位数,与工作方式有关为计数器的位数,与工作方式有关 ,C为需要的计数次数为需要的计数次数v定时器方式初值的计算定
16、时器方式初值的计算T=(T=(2 2N NTC)TC)T T计数计数 TC=TC=2 2N NT/TT/T计数计数 (10)12=T MoscTf计数N(10)=2 -12oscT MTTCf步骤随意步骤随意21v最大定时时间(最大定时时间(f fOSCOSC12MHz12MHz、T0M=0T0M=0 ):):方式方式0 0:T TMAX MAX = 2= 213131 1s s = 8.192ms= 8.192ms方式方式1 1:T TMAXMAX = 2 = 216161 1s s = 65.536ms= 65.536ms方式方式2 2、3 3: T TMAXMAX = 2 = 28 81
17、 1s s = 0.256ms= 0.256ms22v例例4.14.1 若若f fOSCOSC=12MHz=12MHz,用系统时钟的十二分频作为计数源,请,用系统时钟的十二分频作为计数源,请计算定时计算定时2ms2ms所需的初值,并给出初始化程序。所需的初值,并给出初始化程序。v解解(1 1)T0M=0T0M=0时,时, f fOSCOSC= 12MHz= 12MHz,用系统时钟的十二分频作为,用系统时钟的十二分频作为计数源时,方式计数源时,方式2 2、3 3的最大定时时间只有的最大定时时间只有0.256ms0.256ms,因此要想获得,因此要想获得2ms2ms的定时时间,的定时时间,必须用方
18、式必须用方式0 0或方式或方式1 1。v方式方式0 0TC=2TC=213132ms/1us=6192=1830H 2ms/1us=6192=1830H 即:即:TH0=0C1HTH0=0C1H;TL0=10HTL0=10H(高三位为(高三位为0 0) v方式方式1 1TC=2TC=216162ms/1us=63536=2ms/1us=63536=F830HF830H 即:即:TH0=0F8HTH0=0F8H;TL0=30HTL0=30H(2) T0M=1时,只能使用方式时,只能使用方式1TC=216212103=41536=A240H?23v初始化程序初始化程序 void T0_mode1_
19、2ms_init()void T0_mode1_2ms_init() CKCON CKCON &= &= 0 xf7;0 xf7;TMOD=0 x01; TMOD=0 x01; TH0=0 xf8; TH0=0 xf8; TL0=0 x30; TL0=0 x30; TCON TCON |= |= 0 x10; 0 x10; 时基与工时基与工作方式设作方式设定定装入初装入初始值始值启动启动T0,可用可用TR0=1代替代替?24v给定时器赋初值的语句给定时器赋初值的语句也可以采用如下方法也可以采用如下方法: TH0=(65536-2000)/256;TH0=(65536-2000)/256; TL
20、0=(65536-2000)%256; TL0=(65536-2000)%256;或或 TH0=-2000/256;TH0=-2000/256; TL0=-2000%256; TL0=-2000%256;由编译器完由编译器完成数据的计成数据的计算算?25vP146:11、13、14、16、17、1926v定时定时/计数器原理计数器原理框图结构,框图结构,4部分组成部分组成v定时定时/计数器计数器T0、T1TMOD、TCON的作用、格式的作用、格式工作方式工作方式方式方式0、方式、方式1、方式、方式2、方式、方式3初始化工作初始化工作TMOD、TCON、CKCON、IE、IP、初始值、初始值初值
21、计算初值计算TC=M-CTC=M-T/T计数计数(10)12=T MoscTf计数N(10)=2 -12oscT MTTCf27v例例4.24.2 若若f fOSCOSC=12MHz=12MHz,T1T1工作于方式工作于方式1 1,产生,产生50ms50ms的定时中断,的定时中断,TF1TF1为高级中断源。试编写主程序和中断服务程序,使为高级中断源。试编写主程序和中断服务程序,使P1.0P1.0产生产生周期为周期为1s1s的方波的方波。 v解:解:让让P1.0P1.0每每500ms500ms取反一次取反一次即可实现。定时器的单次定时时即可实现。定时器的单次定时时间不可能达到间不可能达到500m
22、s500ms,但可通过,但可通过多次定时产生多次定时产生500ms500ms的定时时间,的定时时间,如让如让T1T1工作在方式工作在方式1 1,单次定时时间为,单次定时时间为50ms50ms,那么,那么T1T1中断中断1010次就次就是是500ms500ms的时间。的时间。 v(1 1)确定定时常数)确定定时常数假设使用假设使用f fOSCOSC的的1212分频作为计数源,则分频作为计数源,则T T计数计数12/f12/fOSCOSC 12/12/(121210106 6)1s1s由公式由公式TC=MTC=MT/TT/T计数计数,可知,可知TC=2TC=21616-50-5010103 315
23、536=3CB0H15536=3CB0HTH1=0 x3cTH1=0 x3c,TL0=0 xb0TL0=0 xb0。 28v(2 2)初始化程序)初始化程序 包括包括T1T1初始化和中断系统初始化,主要是对初始化和中断系统初始化,主要是对IPIP、IEIE、CKCONCKCON、TCONTCON、TMODTMOD的相应位进行正确的设置,并将时间常数送入的相应位进行正确的设置,并将时间常数送入T1T1。本例中将初始化操作放在主程序中完成,当程序规模较大时,本例中将初始化操作放在主程序中完成,当程序规模较大时,应编写单独的初始化程序,以利于程序的模块化设计。应编写单独的初始化程序,以利于程序的模块
24、化设计。v(3 3)中断服务程序)中断服务程序 中断服务程序除了完成要求的方波产生这一工作之外,还中断服务程序除了完成要求的方波产生这一工作之外,还要注意将时间常数重新送入要注意将时间常数重新送入T1T1中,为下一次产生中断作准备。中,为下一次产生中断作准备。29#include #include sbit P1_0 = P10;sbit P1_0 = P10;int count=10;int count=10;/全局变量全局变量void main( void )void main( void ) WDTCN=0 xDE; WDTCN=0 xDE; WDTCN=0 xAD; WDTCN=0 x
25、AD; CKCON&=0 xef; CKCON&=0 xef; TMOD=0 x10; TMOD=0 x10; XBR2=0 x40; XBR2=0 x40; P1_0=0;P1_0=0; TH1=0 x3c; TL1=0 xb0; TH1=0 x3c; TL1=0 xb0; IE|=0 x88; IE|=0 x88; IP|=0 x08; IP|=0 x08; TCON|=0 x40; TCON|=0 x40; while(1); while(1); 关看门狗时关看门狗时基和方式设基和方式设定,使能交定,使能交叉开关叉开关初值与中断初值与中断设定,启动设定,启动计数计数无限循环,无限循环,等
26、待计时等待计时中断中断30void Timer1_ISR (void) void Timer1_ISR (void) interrupt 3interrupt 3 TH1=0 x3c; TH1=0 x3c; TL1|=0 xb0;TL1|=0 xb0; count count-; ; if (count if (count=0) 0) count=10; P1_0=!P1_0; count=10; P1_0=!P1_0; 重装初值重装初值中断中断10次次产生一次产生一次方波方波问题:问题:为什么用为什么用TL1|=0 xb0;TL1|=0 xb0;而非而非TL1=0 xb0TL1=0 xb0?
27、31v#include #include sbit P1_0= P10;sbit P1_0= P10;void main( )void main( ) int count=10;int count=10;局部变量局部变量 WDTCN=0 xDE;WDTCN=0 xDE; WDTCN=0 xAD; WDTCN=0 xAD; CKCON&=0 xef; CKCON&=0 xef; XBR2=0 x40;XBR2=0 x40; TMOD=0 x10; TMOD=0 x10; P1_0=0; P1_0=0; TR1=1; TR1=1;时基和方式时基和方式设定,使能设定,使能交叉开关交叉开关启动计启动计
28、数数32 for(; ;) for(; ;) TH1=-50000/256; TH1=-50000/256; TL1=-50000%256; TL1=-50000%256; Do while(!TF1); Do while(!TF1); TF1=0; count TF1=0; count-; ; If (count=0) If (count=0) count=10;P1_0=!P1_0; count=10;P1_0=!P1_0; 无限循环,同无限循环,同while(1)装入装入初值初值查询查询TF1产生产生波形波形33vT2T2 和和T4T4基本相同,唯一区别是基本相同,唯一区别是T2T2可作
29、可作UART0UART0波特率发生器,而波特率发生器,而T4T4可作可作UART1UART1波特率发生器波特率发生器vT2T2为为1616位位定时定时/ /计数器,由计数器,由TL2TL2(低字节)和(低字节)和TH2TH2(高字节)组(高字节)组成。成。vC/T2C/T2(T2CON.1T2CON.1)=0(=0(定时定时) )时,系统时钟作为定时器的输入时,系统时钟作为定时器的输入(由(由CKCONCKCON的的T2MT2M位指定不分频或位指定不分频或1212分频)。分频)。C/T2 =1C/T2 =1(计数)(计数)时,时,T2T2输入引脚上的负跳变使计数器加输入引脚上的负跳变使计数器加
30、“1”1”。vT2T2还可以用于启动还可以用于启动ADCADC数据转换和触发数据转换和触发DACDAC的输出更新。的输出更新。 v三种工作方式三种工作方式(由(由T2CONT2CON中的配置位选择):自动重装初值的中的配置位选择):自动重装初值的1616位定时器位定时器/ /计数器方式、带捕捉的计数器方式、带捕捉的1616位定时器位定时器/ /计数器方式和波计数器方式和波特率发生器方式。特率发生器方式。34v位位7 7(TF2TF2):):T2T2溢出标志位溢出标志位T2T2溢出时由硬件置位。允许溢出时由硬件置位。允许T2T2中断时,使中断时,使CPUCPU转向转向T2T2的中断服的中断服务程
31、序。不能由硬件自动清务程序。不能由硬件自动清0 0,必须用软件清,必须用软件清0 0。RCLK0RCLK0或或TCLK0TCLK0为为1 1时(波特率发生器方式),时(波特率发生器方式),TF2TF2不会被置不会被置1 1。v位位6 6(EXF2EXF2):):T2T2外部中断标志位外部中断标志位EXEN2EXEN2为为“1”1”时,当时,当T2EXT2EX输入引脚发生输入引脚发生负跳变负跳变时,由硬件置时,由硬件置位。允许位。允许T2T2中断时,使中断时,使CPUCPU转向转向T2T2的中断服务程序。不能由硬的中断服务程序。不能由硬件自动清件自动清0 0,必须用软件清,必须用软件清0 0。C
32、P/RL2C/T2TR2EXEN2TCLK0RCLK0EXF2TF2字节字节地址地址C8HC8H D7 D6 D5 D4 D3 D2 D1 D035v位位5 5(RCLK0RCLK0):UART0UART0接收时钟选择位接收时钟选择位0 0:T1T1溢出作为接收时钟。溢出作为接收时钟。1 1:T2T2溢出作为接收时钟。溢出作为接收时钟。v位位4 4(TCLK0TCLK0):UART0UART0发送时钟选择位发送时钟选择位0 0:T1T1溢出作为发送时钟。溢出作为发送时钟。1 1:T2T2溢出作为发送时钟。溢出作为发送时钟。v位位3 3(EXEN2EXEN2):T2T2外部中断允许控制位外部中断
33、允许控制位0 0:T2EXT2EX上的负跳变被忽略。上的负跳变被忽略。1 1:T2EXT2EX上的负跳变导致一次捕捉或重载,并置位上的负跳变导致一次捕捉或重载,并置位EXF2EXF2。v位位2 2(TR2TR2):T2T2启启/ /停控制位停控制位0 0:停止。:停止。1 1:启动。:启动。36v位位1 1(C/T2C/T2):定时器:定时器/ /计数器功能选择位计数器功能选择位0 0:定时器功能,由:定时器功能,由T2M(CKCON.5)T2M(CKCON.5)定义的时钟加定义的时钟加“1”1”。1 1:计数器功能,由外部输入引脚:计数器功能,由外部输入引脚(T2)(T2)的负跳变加的负跳变
34、加“1”1”。v位位0 0(CP/RL2CP/RL2):捕捉:捕捉/ /重载选择位重载选择位EXEN2EXEN2必须为必须为1 1才能使才能使T2EXT2EX上的负跳变能够被识别并触发捕捉上的负跳变能够被识别并触发捕捉和重载。当和重载。当RCLK0RCLK0或或TCLK0TCLK0为为“1”1”时,该位被忽略,时,该位被忽略,T2T2将工作将工作在自动重装载方式。在自动重装载方式。0 0:T2T2溢出或溢出或T2EXT2EX上发生负跳变时将上发生负跳变时将自动重装载自动重装载1 1:T2EXT2EX发生负跳变时发生负跳变时捕捉捕捉。3738v(1 1)方式)方式0 0:自动重装初值的自动重装初
35、值的1616位定时器位定时器/ /计数器方式计数器方式原理框图如图原理框图如图4-54-5所示。所示。表表4-3 T24-3 T2的方式选择的方式选择 RCLK0+TCLK0CP/RL2工作方式工作方式00自动重装载的自动重装载的16位定时器位定时器/计数器计数器 01带捕捉的带捕捉的16位定时器位定时器/计数器计数器 1UART0波特率发生器方式波特率发生器方式39自动重装初值自动重装初值两中断标志两中断标志为为0时忽略时忽略T2EX负跳变,负跳变,不产生不产生EXF2中断中断40vRCLK0=0RCLK0=0、TCLK0=0TCLK0=0、CP/RL2=1CP/RL2=1时,时,T2T2工
36、作在此方式工作在此方式vEXEN2=1EXEN2=1时为允许捕捉方式,时为允许捕捉方式,T2EXT2EX引脚上的引脚上的负跳变负跳变将将TH2TH2、TL2TL2的当前值捕捉到的当前值捕捉到RCAP2HRCAP2H、RCAP2LRCAP2L寄存器,同时置寄存器,同时置EXF2=1EXF2=1,发,发出中断请求。出中断请求。vEXEN2=0EXEN2=0时,时,RCAP2HRCAP2H、PCAP2LPCAP2L不起作用,此时不起作用,此时T2T2与与T0T0、T1T1的的方式方式1 1完全相同。即:完全相同。即:C/T2C/T20 0时为时为1616位定时器方式,位定时器方式,C/T2C/T21
37、 1时时为为1616位计数器方式,计数溢出时位计数器方式,计数溢出时TF2TF21 1,发送中断请求信号。,发送中断请求信号。 v原理框图如图原理框图如图4-64-6所示。所示。 41是否捕捉是否捕捉捕捉并产生捕捉并产生EXF2中断中断触发捕捉触发捕捉42v RCLKRCLK或或TCLKTCLK置置1 1时,时,T2T2工作于波特率发生器方式。工作于波特率发生器方式。 v 与自动重装载方式相似。但与自动重装载方式相似。但不置位不置位TF2TF2,也不产生中断。溢出,也不产生中断。溢出事件事件用作用作UART0UART0的移位时钟的移位时钟输入。输入。 v T2T2溢出可用于产生独立的发送或接收
38、波特率溢出可用于产生独立的发送或接收波特率, ,也可同时产生发也可同时产生发送和接收波特率,取决于送和接收波特率,取决于T2CONT2CON的设置。的设置。 v T2T2的计数源可以是的计数源可以是系统时钟的二分频系统时钟的二分频,也可以是,也可以是T2T2引脚上的引脚上的输入,取决于输入,取决于C/T2C/T2的设置。的设置。 v 如果如果EXEN2EXEN2为为1 1,则,则T2EX T2EX 引脚上的负跳变将置位引脚上的负跳变将置位EXF2EXF2标志,并标志,并产生一个产生一个T2T2中断(如果允许)。因此,中断(如果允许)。因此,T2EX T2EX 输入可以被用作额输入可以被用作额外
39、的外部中断源。外的外部中断源。v 原理框图如图原理框图如图4-74-7所示。所示。43做做UART0波特率发生器波特率发生器T1作作UART0波波特率发生器特率发生器产生外部中断产生外部中断时基选择时基选择不置位不置位TF244v当选择系统时钟的二分频作计数源时,当选择系统时钟的二分频作计数源时,T2T2为为UART0UART0提提供的波特率可以用如下公式计算:供的波特率可以用如下公式计算:v当选择外部引脚当选择外部引脚T2T2上的输入作为时基时,上的输入作为时基时,T2T2为为UART0UART0提供的波特率可以用如下公式计算:提供的波特率可以用如下公式计算: 451. 1. 定时器定时器T
40、3T3的结构的结构 v1616位定时位定时/ /计数器,由计数器,由TMR3LTMR3L(低字节)和(低字节)和TMR3HTMR3H(高字节)组(高字节)组成。成。 vT3T3的时钟输入可以通过程序选择为外部振荡器的的时钟输入可以通过程序选择为外部振荡器的8 8分频、系统分频、系统时钟或系统时钟的时钟或系统时钟的1212分频。分频。 vT3T3只有自动重装初值一种工作方式,初值保存在只有自动重装初值一种工作方式,初值保存在TMR3RLLTMR3RLL(低(低字节)和字节)和TMR3RLHTMR3RLH(高字节)两个(高字节)两个SFRSFR中,中,T3T3没有计数器方式。没有计数器方式。 v除
41、作为通用定时除作为通用定时/ /计数器使用外,计数器使用外,T3T3还可以用于启动还可以用于启动ADCADC数据转数据转换、换、SMBusSMBus定时等。定时等。 v原理框图如图原理框图如图4-8所示。所示。46时基选择时基选择仅此一种方式仅此一种方式启动启动ADC47v位位7 7(TF3TF3):):T3T3溢出标志位溢出标志位溢出时置溢出时置1 1,不能由硬件自动清,不能由硬件自动清0 0,必须用软件清,必须用软件清0 0 v位位2 2(TR3TR3):):T3T3运行控制位运行控制位 0 0:停止。:停止。1 1:启动。:启动。v位位1 1(T3MT3M):):T3T3时钟选择位时钟选
42、择位 0 0:T3T3使用系统时钟的使用系统时钟的1212分频。分频。1 1:T3T3使用系统时钟。使用系统时钟。v位位0 0(T3XCLKT3XCLK):):T3T3外部时钟选择位外部时钟选择位 0 0:由:由T3MT3M定义。定义。1 1:外部振荡器输入的:外部振荡器输入的8 8分频。分频。 T3XCLKT3MTR3-TF3字节字节地址地址C8HC8H D7 D6 D5 D4 D3 D2 D1 D048v例例 4.34.3 假设假设C8051F020C8051F020的并行口的并行口P2P2、P3P3连接连接1616个共阳极个共阳极LEDLED指指示灯,试编写程序使示灯,试编写程序使P3P
43、3口所接的口所接的LEDLED灯循环点亮,灯循环点亮,P2P2口所接的口所接的LEDLED灯实现走马灯效果。(灯实现走马灯效果。(实验四实验四) v解:解:要实现题目要求的效果,只需要要实现题目要求的效果,只需要定期更新定期更新P2P2、P3P3口的状态口的状态即可。这里可即可。这里可以使用以使用T3T3定时器再加软件计数的方法达定时器再加软件计数的方法达到所要求的时间,假设到所要求的时间,假设T3T3定时定时0.10.1秒产生秒产生中断,则软件计数器每中断,则软件计数器每0.10.1秒加秒加1 1,让计,让计数器加到数器加到5 5时,改变时,改变P2P2、P3P3口的状态,就口的状态,就可以
44、实现可以实现每秒每秒2 2次刷新次刷新LEDLED灯的状态。灯的状态。49#include sfr16 TMR3RL = 0 x92; /16位位SFR sfr16 TMR3 = 0 x94; #define SYSCLK 2000000 /系统时钟使用系统时钟使用2MHz/函数声明函数声明void PORT_Init(void); void Timer3_Init(int counts);void Timer3_ISR(void);/P2口口8个个LED (共阳极)产生走马灯效果所需的数据(共阳极)产生走马灯效果所需的数据 unsigned int xdata p2led=0 x7f,0 x
45、bf,0 xdf,0 xef,0 xf7, 0 xfb,0 xfd,0 xfe; 50void main (void) WDTCN = 0 xde; /禁止看门狗定时器禁止看门狗定时器 WDTCN = 0 xad;PORT_Init(); /端口初始化端口初始化 Timer3_Init(SYSCLK/12/10); /T3初始化,产生初始化,产生0.1秒的定时中断秒的定时中断 EA = 1; /开中断开中断 while (1) ; /循环等待循环等待T3中断,产生走马灯效果中断,产生走马灯效果 void PORT_Init (void) XBR2 = 0 x40; /使能交叉开关使能交叉开关T
46、C=-T/T计数=-0.1/12/SYSCLK=-SYSCLK/12/1051void Timer3_Init (int counts) TMR3CN = 0 x00; TMR3RL = -counts; /T3赋初值,也可以采用赋初值,也可以采用8位位SFR方式,向例方式,向例4.2那样那样 TMR3 = 0 xffff; /立即重载立即重载 EIE2 |= 0 x01; /开开T3中断中断 ,见见P44 EIE2格式格式 TMR3CN |= 0 x04; /启动启动T352void Timer3_ISR (void) interrupt 14 static int count; stati
47、c int i=9,j=0; static int led=0 xff; /P3口口LED灯的初始状态灯的初始状态 TMR3CN &= (0 x80); /清清TF3 count+; if(count=5) /T3中断中断5次更新一次次更新一次LED灯状态灯状态 count=0; P3=led;P2=p2ledj; /查表查表led=led1; i-; j+; if(j=8) j=0; /P2口口LED灯循环一个周期灯循环一个周期 if(i=0) i=9; led=0 xff; /P3口口LED灯循环一个周期灯循环一个周期 为什么为什么i=9,而不是,而不是i=8?因为还有全灭状态,所因为还有
48、全灭状态,所以共以共9个状态个状态53vPCA (Programmable Counter Array)提供了提供了增强的定时器增强的定时器功能,功能,比标准比标准8051的定时的定时/计数器需要的计数器需要的CPU干预更少。干预更少。vC8051F020内部集成有一个内部集成有一个PCA,称为,称为PCA0 。一个专用的一个专用的16位定时器位定时器/计数器计数器5个个16位位捕捉捕捉/比较模块比较模块。每个模块有自己的。每个模块有自己的I/O线线 (CEXn)。通过交叉开。通过交叉开关,可连接到关,可连接到I/O端口。端口。v定时定时/计数器有计数器有六个计数源六个计数源(由由PCA0MD
49、PCA0MD中的中的CPS2-CPS0CPS2-CPS0位选择位选择) )系统时钟、系统时钟系统时钟、系统时钟/4、系统时钟、系统时钟/12、外部振荡器时钟源、外部振荡器时钟源8分频、定时器分频、定时器0溢出、溢出、ECI线上的外部时钟信号。线上的外部时钟信号。v每个捕捉每个捕捉/比较模块可独立工作在比较模块可独立工作在6种工作方式种工作方式之一。之一。546种时钟源种时钟源捕捕捉捉/比比较较模模块块55PCA0ME2(XBR0.5)PCA0ME12(XBR0.4)PCA0ME0(XBR0.3)连到连到I/O端口端口连接数连接数000所有所有PCA0口都不配置口都不配置I/O端口端口0001C
50、EX01010CEX0、CEX12011CEX0、CEX1、CEX23100CEX0、CEX1、CEX2、CEX341CEX0、CEX1、CEX2、CEX3、CEX455657v可编程计数器阵列可编程计数器阵列PCA0 一个专用的一个专用的16位定时器位定时器/计数器计数器 5个个16位位捕捉捕捉/比较模块比较模块。每个模块有自己的。每个模块有自己的I/O线线 (CEXn)。通过通过交叉开关交叉开关,可连接到,可连接到I/O端口端口 定时定时/计数器有计数器有六个计数源六个计数源(由由PCA0MDPCA0MD中的中的CPS2-CPS0CPS2-CPS0位选择位选择) ) 每个捕捉每个捕捉/比较
51、模块可独立工作在比较模块可独立工作在6种工作方式种工作方式之一之一 相关相关SFR:PCA0L+PCA0H、PCA0CPLn+PCA0CPLn、PCA0CN、PCA0MD、PCA0CPMn581 1、PCAPCA控制寄存器控制寄存器PCA0CN PCA0CN CCF0CCF1CCF2CCF3CCF4-CRCF字节字节地址地址D8HD8H D7 D6 D5 D4 D3 D2 D1 D0v位位7 7(CFCF):):PCAPCA定时器定时器/ /计数器溢出标志位计数器溢出标志位PCA0PCA0定时定时/ /计数器溢出时由硬件置位。如允许计数器溢出时由硬件置位。如允许CFCF中断,将使中断,将使CP
52、UCPU转向转向CFCF中断服务程序。不能由硬件自动清中断服务程序。不能由硬件自动清0 0,必须用软件清,必须用软件清0 0。 v位位6 6(CRCR):):PCA0PCA0定时定时/ /计数器运行控制位计数器运行控制位0 0:停止计数:停止计数 1 1:启动计数:启动计数v位位4-4-位位0 0(CCF4- CCF0CCF4- CCF0):):PCA0PCA0模块模块4-4-模块模块0 0捕捉捕捉/ /比较标志位比较标志位匹配或捕捉时由硬件置位。允许匹配或捕捉时由硬件置位。允许CCFCCF中断时,将使中断时,将使CPUCPU转向转向CCFCCF中断服中断服务程序。不能由硬件自动清务程序。不能
53、由硬件自动清0 0,必须用软件清,必须用软件清0 0。59v位位7 7(CIDLCIDL):):PCA0PCA0定时定时/ /计数器空闲控制位计数器空闲控制位0 0:当:当CPUCPU处于等待方式时,处于等待方式时,PCA0PCA0继续正常工作。继续正常工作。1 1:当:当CPUCPU处于等待方式时,处于等待方式时,PCA0PCA0停止工作。停止工作。v位位3-13-1(CPS2-CPS0CPS2-CPS0):):PCA0PCA0定时器定时器/ /计数器计数时钟源选择位计数器计数时钟源选择位这些位选择这些位选择PCA0PCA0计数器的计数时钟源,计数器的计数时钟源,如表如表4-94-9所示所示
54、。v位位0 0(ECFECF)PCA0PCA0定时器定时器/ /计数器溢出中断允许位计数器溢出中断允许位0 0:禁止:禁止CFCF中断。中断。 1 1:允许:允许CFCF中断。中断。ECFCPS0CPS1CPS2-CIDL字节字节地址地址D9HD9H D7 D6 D5 D4 D3 D2 D1 D060CPS2CPS1CPS0计数脉冲源计数脉冲源000系统时钟的系统时钟的12分频分频001系统时钟的系统时钟的4分频分频010定时器定时器0溢出溢出011ECI负跳变(最大速率负跳变(最大速率=系统时钟频率系统时钟频率/4)100系统时钟系统时钟101外部振荡源外部振荡源8分频分频61vPCA0CP
55、MnPCA0CPMn地址:地址: PCA0CPM0=0 xDA (n=0)PCA0CPM0=0 xDA (n=0)、PCA0CPMl=0 xDB (n=1)PCA0CPMl=0 xDB (n=1) PCA0CPM2=0 xDC (n=2) PCA0CPM2=0 xDC (n=2)、PCA0CPM3=0 xDD (n=3)PCA0CPM3=0 xDD (n=3) PCA0CPM4=0 xDE (n=4) PCA0CPM4=0 xDE (n=4)v位位7 7:PWMl6nPWMl6n:1616位脉冲宽度调制允许位位脉冲宽度调制允许位 当工作在脉冲宽度调制方式时当工作在脉冲宽度调制方式时 (PWMn
56、=1)(PWMn=1),该位选择,该位选择1616位位PWMPWM方式。方式。 0 0:选择:选择8 8位位PWMPWM。1 1:选择:选择1616位位PWMPWM。ECCFnPWMnTOGnMATnCAPNnCAPPnECOMnPWM16n字节字节地址地址0DA-0DEH0DA-0DEH D7 D6 D5 D4 D3 D2 D1 D062v位位6 6(ECOMnECOMn):比较器功能允许位):比较器功能允许位0 0:禁止。:禁止。1 1:允许。:允许。v位位5 5(CAPPnCAPPn):正沿捕捉功能允许位):正沿捕捉功能允许位0 0:禁止。:禁止。1 1:允许。:允许。v位位4 4(CA
57、PNnCAPNn):负沿捕捉功能允许位):负沿捕捉功能允许位0 0:禁止。:禁止。1 1:允许。:允许。v位位3 3(MATnMATn):匹配功能允许位):匹配功能允许位0 0:禁止。:禁止。1 1:允许。:允许。v位位2 2(TOGnTOGn):电平切换功能允许位):电平切换功能允许位 0 0:禁止。:禁止。1 1:允许。:允许。v位位1 1(PWMnPWMn):脉宽凋制方式允许位):脉宽凋制方式允许位 0 0:禁止。:禁止。1 1:允许。:允许。v位位0 0(ECCFnECCFn):捕捉):捕捉/ /比较标志中断允许位比较标志中断允许位0 0:禁止:禁止CCFnCCFn中断中断1 1:当:
58、当CCFnCCFn位置位置1 1时,允许捕捉时,允许捕捉/ /比较标志的中断请求。比较标志的中断请求。63v1616位位PCAPCA定时定时/ /计数器由计数器由PCA0LPCA0L(低字节)和(低字节)和PCA0HPCA0H(高字节)组(高字节)组成。在读成。在读PCA0LPCA0L的同时的同时自动锁存自动锁存PCA0HPCA0H的值。读的值。读PCA0HPCA0H或或PCA0LPCA0L不不影响计数器工作。原理框图如图影响计数器工作。原理框图如图4-144-14所示。所示。vPCA0MDPCA0MD寄存器中的寄存器中的CPS2-CPS0CPS2-CPS0位用于选择位用于选择PCAPCA定时
59、定时/ /计数器的计计数器的计数脉冲源,如下表所示。数脉冲源,如下表所示。CPS2CPS1CPS0计数脉冲源计数脉冲源000系统时钟的系统时钟的12分频分频001系统时钟的系统时钟的4分频分频010定时器定时器0溢出溢出011ECI负跳变(最大速率负跳变(最大速率=系统时钟频率系统时钟频率/4)100系统时钟系统时钟101外部振荡源外部振荡源8分频分频64v清除清除PCA0MDPCA0MD寄存器中的寄存器中的CIDLCIDL位位则允许则允许PCAPCA在微控制器内核处于在微控制器内核处于等待方式时继续正常工作。等待方式时继续正常工作。v定时定时/ /计数器溢出时计数器溢出时 ( (从从0 xF
60、FFF0 xFFFF加加1 1到到0 x0000)0 x0000),PCA0MDPCA0MD中的中的CF CF 置置1 1,如果允许,如果允许CFCF中断,则可以产生一个中断请求。中断,则可以产生一个中断请求。vPCA0MDPCA0MD中的中的ECFECF位置位置1 1即可允许即可允许CFCF中断,但要使中断,但要使CFCF中断得到响应,中断得到响应,必须先必须先总体允许总体允许PCA0PCA0中断中断(通过将(通过将EAEA位位 (IE.7) (IE.7) 和和EPCA0EPCA0位位 (EIE1.3) (EIE1.3) 置置1 1可总体允许可总体允许PCA0PCA0中断)。中断)。CFCF
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度品牌授权合同:拂晓冥想商标使用许可3篇
- 2024年度企业IT培训与咨询服务合同3篇
- 《导数与定积分总结》课件
- 复旦大学(张奇):2023年大语言模型评测报告
- 2024年度技术服务合同技术指标与服务流程详解
- 2024年度企业与网络安全公司网络安全服务合同
- 2024年度技术研发合作合同(人工智能领域)
- 2024中国烟草总公司内蒙古自治区公司招聘调剂信息易考易错模拟试题(共500题)试卷后附参考答案
- 2024中国平安人寿保险股份限公司嘉兴中心支公司招聘易考易错模拟试题(共500题)试卷后附参考答案
- 2024年度祁菊离婚财产分配及赡养费协议
- 《秸秆还田》ppt课件
- 食品加工企业安全设计设施专篇
- 颈动脉斑块科普知识PPT参考幻灯片
- 封头容积、质量、内表面积和总高度计算
- 反射隔热涂料施工方案(完整版)
- 海南省建设工程施工阶段监理服务费计费规则
- [精编]《工伤保险》之铁路企业职工工伤保险试行办法
- 创建五星级班组PPT课件
- TBJWA001-2021健康直饮水水质标准
- 监理日报模板
- 社区卫生服务中心创建汇报材料
评论
0/150
提交评论