历史上的今天
今天是:2025年01月16日(星期四)
2020年01月16日 | PIC16F87X单片机的定时器/计数器的应用
2020-01-16 来源:elecfans
PIC16F87X单片机内部配置了3个定时器/计数器,分别记为TMR0、TMR1、TMR2。这3个定时器/计数器模块不仅在电路结构上不相同,而且其在设计的初衷和使用上也各有不同。
· 定时器/计数器TMR0。
定时器/计数器TMR0是3个同类模块中最常用的器件,与定时器/计数器TMR0相关的寄存器共有4个,分别为累加计数寄存器TMR0、选项寄存器OPTION REG、中断控制寄存器INTCON和端口RA方向寄存器TRISA。
· 定时器/计数器TMR1。
定时器/计数器TMR1是一个由两个8位可读写的寄存器(TMR01H和TMRIL)组成的16位定时器/计数器,它带有一个3位的可编程预分频器和一个内置的低功耗低频时基振荡器。
· 定时器/计数器TMR2。
定时器/计数器TMR2是一个8位定时器,其中还包括了一个可编程预分频器和一个后分频器。
1.设计思路
利用TIMER0定时米实现秒表的功能.为使该功能显得直观,该模块还扩充了键盘扫描和显示功能,
2.程序设计
该程序包含TMR0初始化子程序、spi显示初始化了程序、系统其他部分初始化子程序、SPI传输数据子程序、显示子程序、键扫描子程序及主函数。
(1)首先包括必要电动偷文件及程序中用到的全局变量。

(2)TMR0初始化子程序,使TMR0工作于定时器方式且不分频。

(3)SPI初始化程序,初始化SPI模块。


(4)设置于键盘有关的I/O端口的输入输出方式及键盘扫描的初始条件。

(5)SPI传输数据子程序,在监测到发送成功后的清除发送标志。

(6)通过SPI发送显示数据,在LED上对数据进行显示,显示的数据在程序开始定义的显示段码表中进行调用。为使显示美观,连续发送了4个DARK,最后给锁存信号,代表显示任务完成。

(7)软件延时自程序,空跑3553个系统周期。

(8)通过行列扫描来判断到底是哪个按键按下。


(9)该子程序主要功能是键盘的去抖动。

(10)该子程序对系统一些变量进行初始化。

(11)定时器中断服务程序。每次进入该子程序,令中断计数器加1,当中断次说达到40后,对S0、S1、S2、S3进行操作。
史海拾趣
|
作为一种基于普通电话双绞线的传输技术,ADSL对物理传输线路有很大的依赖性。环路的特征将对ADSL服务的质量和性能级别产生决定性影响。首先在业务开通时会遇到如何选择ADSL线路,某条线路能否开通ADSL业务,可以开通的速率是多少,影响传输质量的原 ...… 查看全部问答> |
|
RTL8309的资料好少,我在网络上有找到通过SMI接口协议来操作寄存器的,能通过主芯片和8309之间的I2C来进行通信,然后控制寄存器吗?… 查看全部问答> |
|
我两台机器的网卡都是百兆网卡,测速软件报告网速最高只有 26 Mbps,为什么呢? 我两台机器的网卡都是百兆网卡,我用测试软件测试了一下网速,能达到 26 Mbps,离 100 Mbps 还有很远呢!这是为什么呢? 我用的是直连网线。 我很关心 怎样能让测试结果非常接近 100 Mbps ? … 查看全部问答> |
|
在config.bib中把CE镜像划分为了4个部分,例如: KERNEL.BIN,DRIVER.BIN,APP.BIN,NK.BIN 这样做以便后期对单个镜像文件升级,现在问题来了,每个BIN文件中的DLL在SLOT0,SLOT1中所占用的地址空间都是在编译器时计算好的。如果后面我的APP.BIN变化 ...… 查看全部问答> |
|
很多价格昂贵的无铅焊台都喜欢强调和炫耀瞬间强大的温度恢复能力,其实这个有一些钻牛角尖的做法,虽然性能是上去了,但焊台本身的总体制造成本以及使用成本也跟着抬高,势必转嫁到最终用户身上。 &nb ...… 查看全部问答> |
|
本来打算用2013做16位AD,然后将数据用SPI传送给149的,做的时候才发现,2013的资料实在是太少了,特别是中文资料,反复看了例程,网上的,TI的,到现在还没有能通讯上,哎,2013这个东东怎么看都和先前的片子不一样,149,133资料多,好用,看来2xxx的麻烦死了. ...… 查看全部问答> |




