|
|
| | -文章搜索 - 最新文章 - | |
第1213篇:用PIC16C54做一个LED电子钟 |
| 发布时间:2006年2月14日 点击次数:4795 |
| 来源: 作者: |
电子钟虽然耗电一点,但在夜间也不用打开照明就可以看得清清楚楚,还是很方便的了. PIC16C54内部有512字节(准确的说是可以放512条指令)的指令空间,对于电子钟的 应用项目来说,资源已经足够了.它具有12个I/O口,刚好可以用来做一个四个数码管的电 子钟.其中PORTA口用作位码输出,PORTB用作段码输出和按键输入. 54内部有一个8位的定时器,但没有中断溢出功能,对于用惯了中断的人来说,可能觉 得定时基准不好做,比如51系列的,只要设定好中断溢出时间,一般取整数指令周期,如每 次溢出时间为50mS,每次溢出时累加器加一,当加到20次时就有1S了,很方便进行系统时钟 的处理.但PIC16C54没有中断功能,只能用判断定时器溢出的方式来确定定时器的定时.判 断定量器溢出可以采用比较的方式,当采集到TMR0的计数值为0-5时,可以认为定时器溢出 了,另一种方式是测试TMR0的最高位是否为1,也就是把TMR0当作7位定时器来用,这样,就 不会出现前一种方式由于程序错过捕获到TMR0的值为0-5的时机而使定时出现误差了.比 较好的方法是用一个存储器X0跟踪TMR0的计数值,在正常情况下,X0总是会小于TMR0的计 数值,因为在读取TMR0的值并把这个值赋值给X0之后,TMR0的计数值又在累加了,但TMR0是 一个循环计数器,当加到255后,其值将会变为零,这样就为判断TMR0提供了依据,即只要测 试到X0>=TMR0,即可认为TMR0已经溢出,这样就可以进行相应的处理了.如时钟频率为 4MHz,则一条指令的执行时间为1uS,TMR0溢出对应于256uS,当测试到TMR0溢出之后,不对 TMR0进行任何赋值操作,因为对TMR0进行写入,会使TMR0延迟三个指令周期,而每次往 TMR0写入的时候,不可能它的计数值都是同一个值,所以只能采用加一个预定值的方法,如 果TMR0不采用分频器,则对TMR0执行 TMR0=TMR0+9的操作,将使每次TMR0的计数溢出周期 等效为250个指令周期,也就是250uS,需要注意的是,每次读入TMR0的值与X0进行比较时的 时间间隔一定不能大于TMR0的溢出时间,否则错过溢出时刻.判断TMR0溢出的最短指令为: MOVF TMR0,W |
|
|
|
|
[PIC MSP430 ] 相关文章: PLC内部掉电保持寄存器的巧妙利用简介: 我们在设计小型的PLC控制系统时,常常会需要在外部改变PLC内部的数据,譬如Counter, Timer或者Data的值,以适应生产过程的需要。而且要求系统关机以后,这些数据还能够保存在PLC内部,当下次开机后,这些数据可以被调出继续使用。 现在许多小型的PLC都或多或少地提供了掉电保持寄存器,以便在PLC断电的时候,保存用户想要保存的数据。但大多数时候,PLC制造厂商为了节约成本,不可能提供足够数量的掉电保持寄存器供系统设计人员使用,所以当被调整的数据项目超过PLC内部的掉电保持寄存器的数目...... PLC自动控制系统可靠性研究 Microchip发布驱动168段LCD 64引脚单片机 PIC16C5X的低功耗模式 PIC16C5X的复位电路 |
|
|
|