当前位置:技术文章首页 >> 单片机源码 >> 用PIC16C54做一个LED电子钟

用PIC16C54做一个LED电子钟

1970-01-01 08:00:00  作者:本站  来源:本站整理  浏览次数:300  文字大小:【】【】【

对于很多电子爱好者来说,自己制作一款LED的电子钟,是很有意思的一件事情,LED的

电子钟虽然耗电一点,但在夜间也不用打开照明就可以看得清清楚楚,还是很方便的了.

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

SUBWF X0,F

MOVWF X0

SKPC

GOTO 没有溢出...

溢出处理...

对应的C语言语句为:

i=TMR0;

x0=x0-i;

x0=i;

if(CARRY)

{TMR0+=9;
}
这里借用了一个临时存储器i,如果没有它,则语句编译不会最短,程序执行会了出错

,不能保证每次溢出为250uS.

如果选用32768晶振的话,程序的设计上,不需要再对TMR0作任何写入,只需用上述程

序判断TMR0溢出就可以了.因为TMR0每次溢出的时间为0.03125秒,再对其进行32分频即可

得到秒信号了.

这样,整个程序的核心部分就完成了,剩下的应该不难写出来.

责任编辑:


相关文章
 

最新文章

更多

· 最新10位数字温度传感器...
· AT45D081/AT45DB021/AT4...
· X24C44一款老的EEPROM,(...
· 93C46/93c06/93c46/93c5...
· 128x64液晶KS0108控制器...
· 本站液晶程序里使用的ab...
· DS1302驱动程序(C51)
· 学习GCC Complete Refer...
· 农历转换函数(C语言版)
· 基于WinAVR的DS18B20源程序

推荐文章

更多

· 最新10位数字温度传感器...
· AT45D081/AT45DB021/AT4...
· X24C44一款老的EEPROM,(...
· 93C46/93c06/93c46/93c5...
· 128x64液晶KS0108控制器...
· 本站液晶程序里使用的ab...
· DS1302驱动程序(C51)
· 学习GCC Complete Refer...
· 农历转换函数(C语言版)
· 基于WinAVR的DS18B20源程序

热点文章

更多

01-01·[接口与通讯] 红外遥控系统原理及单片机软... (3804)
01-01·[单片机技术] 温度传感器PT100的应用 (2424)
09-17·[可编程逻辑] 基于VHDL语言的智能密码锁设计 (1984)
09-08·[可编程逻辑] 基于FPGA的QPSK调制解调电路... (1973)
09-08·[单片机技术] AT89S52的中文简介及资料下载 (1909)
11-24·[电子基础] 与初学者谈电子制作(电子入门) (1789)
09-09·[电源技术] 基于DSP的三相SPWM波发生软件... (1789)
10-24·[传感与控制] MODBUS RTU通讯协议在S7-200... (1612)
12-01·[单片机技术] 基于ARM智能家居控制器设计与... (1612)
11-24·[单片机技术] 常用LED数码管驱动电路2(单 ... (1601)
09-08·[电源技术] 能延长电池寿命的单节电池升... (1537)
09-11·[仪器与仪表] 应用ADuC847芯片设计压力及温... (1520)