欢迎来到天天文库
浏览记录
ID:40815309
大小:850.00 KB
页数:43页
时间:2019-08-08
《07 定时器计数器》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、PIC单片机技术电子信息与电气工程系通信教研室1第7章定时器/计数器定时器/计数器模块是大部分单片机都内置的一项重要功能,定时器/计数器的正常工作一般表现为计数累计功能,通常是由时钟脉冲来驱动。定时器/计数器模块一般适用于以下3种不同的应用场合:从单片机I/O引脚上向外部电路输出一系列符合一定时序规范的方波信号。从单片机I/O引脚上,检测外部电路输入的一系列方波信号的脉宽、周期或频率,以便单片机接收外部电路的输入信号或通信信号。单片机对其端口引脚上输入的由外部事件产生的触发信号进行准确地计数,依据计数结果来控制完成相
2、应的动作。2F877单片机配置3个定时器/计数器模块:CCP:输入捕捉、输出比较和PWM脉冲宽度调制功能低频时基振荡器:32768Hz3三者的共同点:它们的核心部分都是一个由时钟信号触发,按递增方式累加工作的循环计数器;从预先设定的某一初始值开始累计,在累计到计数器产生溢出,并且同时会建立一个相应的溢出中断标志。47.1定时器/计数器TMR0核心部分是一个由时钟信号触发,按递增方式累加工作的循环计数器;从预先设定的某一初始值开始累计,在累计到计数器产生溢出,并且同时会建立一个相应的溢出中断标志。引脚T0CKI58位宽
3、循环累加计数统一编址的寄存器可直接读/写计数器具有一个软件可编程的8位预分频器;定时器模式计数器模式当使用内部触发信号,即指令周期作为时钟信号源时,为固定上升沿触发计数;而当使用外部触发信号作为时钟信号源时,可由程序定义为上升沿或下降沿触发有效;在计数器溢出时,相应的溢出中断标志自动置位,并可产生溢出中断。7.1.1定时器/计数器TMRO的特点67.1.2与定时器/计数器TMR0模块相关的寄存器定时器/计数器TMR0选项寄存器OPTION_REG中断控制寄存器INTCON端口RA方向控制寄存器TRISA77.1.2与
4、定时器/计数器TMR0模块相关的寄存器1.定时器/计数器TMR0定时/计数:累加赋值启动87.1.2与定时器/计数器TMR0模块相关的寄存器2.选项寄存器OPTION_REGOPTION寄存器D7D6D5D4D3D2D1D0INTEDGT0CST0SEPSAPS2PS1PS0910定时器/计数器TMR0模块的电路结构和工作原理117.1.2与定时器/计数器TMR0模块相关的寄存器总结OPTION可用于:a、定义预分频器的预分频参数。b、分配预分频器(Prescaler)给TMR0或WDT。注意预分频器只能分配给TMR
5、0或WDT其中之一使用,不能同时分配。c、定义TMR0的信号源。d、定义TMR0信号源的触发沿(上升沿触发或下降沿触发)。12补充:预分频器Prescaler看门狗定时器WDT与TMR0共用同一个分频器,但两者不能同时使用。分频器实际上也是一个8位累加计数器。分频器的功能就是将进入TMR0的时钟信号或从WDT送出低时钟信号频率除以一个指定的倍数,这个倍数就是分频比。预分频器的分配对象完全由程序控制。可以在程序中改变预分频器分配对象。当预分频器分配给TMR0后,所有写TMR0寄存器的指令如CLRF1、MOVWF1等都会
6、清除预分频器。同理,分配给WDT时,诸如CLRWDT和SLEEP指令将清除预分频器里已有的值使其归零。13补充:预分频器Prescaler1、从TMR0到WDT的改变MOVLWB'XXXX1XXX';MOVWFOPTION;2、从WDT到TMR0的改变CLRWDT;清WDT及预分频器MOVLWB'XXXX0XXX;选择TMR0MOVWFOPTION147.1.2与定时器/计数器TMR0模块相关的寄存器3.中断控制寄存器INTCON157.1.2与定时器/计数器TMR0模块相关的寄存器4.RA方向控制寄存器TRISA外
7、部计数时,T0CKI为输入167.1.3应用实例TMR0的应用有两种:查询、中断例:利用TMR0进行计数,当计数溢出后,把RA0置1方法一:查询ORG0000HMainBCFPORTA,0MOVLWB’01101001’MOVWFOPTION_REGBCFINTCON,T0IFMOVLWData;赋值,启动计数MOVWFTMR0LoopBTFSSINTCON,T0IF;检测溢出标志位GOTOLoopBSFPORTA,0BCFINTCON,T0IFEND17方法二:中断ORG0000HGOTOMainORG0004HG
8、OTOT0INTSubMainIO口方向设置MOVLWB’01101001’MOVWFOPTION_REGMOVLWB’10100000’;开T0中断MOVWFINTCONMOVLWData;赋值,启动计数MOVWFTMR0dosomethingelse…(GOTO$;等待中断,中断响应后返回到此处)T0INTSubBSFPORTA,0BCFI
此文档下载收益归作者所有