控制/MCU
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进行操作。
全部0条评论
快来发表一下你的评论吧 !