|
|||||||||||
| 技术交流 | 电路欣赏 | 工控天地 | 数字广电 | 通信技术 | 电源技术 | 测控之家 | EMC技术 | ARM技术 | EDA技术 | PCB技术 | 嵌入式系统 驱动编程 | 集成电路 | 器件替换 | 模拟技术 | 新手园地 | 单 片 机 | DSP技术 | MCU技术 | IC 设计 | IC 产业 | CAN-bus/DeviceNe |
请教老鸟们,一个实时时钟问题(PIC16C57)偶在线等 |
| 作者:sosa.gu 栏目:单片机 |
我的实时时钟是按以下思路完成的,晶体为4.194m: 查寻tmr0是否到128,不是的话一直查,若是128进入时间处理程序。 经测试,时间不准。 程序如下: start: movlw b'00000100' ;;32分频 option movlw b'01111111' movwf tmr0_save ........ .......... ;;===================================== main clrwdt movf tmr0,w subwf tmr0_save,w btfsc status,c ;;(4/4.194304)*32*128= 3.9ms goto time here goto main ;=================== timer clrf tmr0 ;;但是预分频器里的东东也被清了 ;是否这个原因导致时间不准??? ..... ;;时间累加处理: ........ goto here |
| 2楼: | >>参与讨论 |
| 作者: fineasy 于 2003/10/20 13:44:00 发布:
分频为16,测TMR0溢出方便且准。 |
|
| 3楼: | >>参与讨论 |
| 作者: eling 于 2003/10/20 13:49:00 发布:
改成测TMR0,7 ,然后只清TMR0,7就不会影响了 |
|
| 4楼: | >>参与讨论 |
| 作者: 张明峰 于 2003/10/20 14:35:00 发布:
别碰TMR0 用低端5x做时钟如果你想做得准,用了预分频的话就千万别碰TMR0,即不要用任何指令去改写TMR0的值。 |
|
| 5楼: | >>参与讨论 |
| 作者: fxmxh 于 2003/10/20 16:38:00 发布:
我的两个查寻 ////////////////////////////////////////////////////////// TIME: BTFSC TIME_START GOTO TIME1 MOVF RTCC,0 MOVWF TIME_BUF BSF TIME_START RETLW 0 ;定时查寻 TIME1: MOVF RTCC,0 SUBWF TIME_BUF,0 BTFSC STATUS,2 RETLW 0 BCF TIME_START INCF RTCC_BUF,1 RETLW 0 我是去查RTCC有没有发生跳变如有则表示时间过了一段时间---RTCC_BUF加一;这样做有一个好处---你不必去管RTCC具体的值是多少, time_start=RTCC; if(time_start>=time_stop) { time_buf=time_start-time_stop; } else { time_buf=(255-time_stop)+time_start; } time_stop=time_start; 这种查讯可用在遥控接收 * - 本贴最后修改时间:2003-10-20 16:45:57 修改者:fxmxh |
|
|
|
Copyright © 1998-2006 www.j71x6.cn 浙ICP证030469号 |