打印

求助求助啊 请教大家啊 帮帮忙啊 :(

[复制链接]
1710|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ql1007|  楼主 | 2010-7-5 17:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 ql1007 于 2010-7-6 11:12 编辑

void system_init(void){
OSCCON = 0b01110000;    //PLL off, 8M Internal OSC
while(HFIOFS==1);       //等待振荡器0.5%稳定
T1CON = 0b10111101;     //32.768K crystal OSC, 1:8 prescaler
T1GCON = 0b00000000;    //T1G off
TMR1H = 0xfo;//1S
TMR1L = 0x00;
TMR1IE = 1;
WDTCON = 0b00011111;    //32s
SWDTEN=1;
TRISA=0xff;
TRISB=0xff;
TRISC=0xff;
TRISE=0xff;
ANSELA=0;
ANSELB=0;
WPUB=0;
LATA=0xff;
LATB=0xff;
LATC=0xff;
LATE=0xff;
TokenDisplay[0]=3;
TokenDisplay[1]=4;
TokenDisplay[2]=5;
TokenDisplay[3]=6;
TokenDisplay[4]=7;
TokenDisplay[5]=8;
TimeSegment=3;
PEIE = 1;
GIE = 1;
}

void interrupt isr(void){
if(TMR1IF==1&&TMR1IE==1){
  TMR1IF=0;
  TMR1H=TMR1Hset;
  //TMR1L=TMR1Lset;
  Timer1Overflow=1;
}


昨天可能没表达清楚,重新说下,大家给看下,
我看网上很多时钟这块都是选的32768K的晶振定时精确,可是我看这个程序,也是32768K,定时器用这个外部晶振实时计时,预分频8,那这个定时器1最大定时时间是:65535*4/0.032*8=65535000us=65535MS
考虑一秒溢出中断一次,1000MS/8=125000us,就是定时器1经过这么多周期就是1S,
问题就在于 :初值怎么算呢?6553500-125000=?? 和他这个F000差别也太大了吧,大家给看看啊
沙发
ql1007|  楼主 | 2010-7-6 11:17 | 只看该作者
在线等啊 ,小弟愚钝 希望大家给指点指点啊

使用特权

评论回复
板凳
ql1007|  楼主 | 2010-7-6 11:59 | 只看该作者
已解决 ,原来自己理解错误 ,计算是一样 还是65536,65536是计数的次数 而不是最大计数,。。所以 (65536-X)/32.768k*8=1S 算出来的确是fooo。

使用特权

评论回复
地板
兰天白云| | 2010-7-6 20:50 | 只看该作者
[local]1[/local]

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

35

主题

122

帖子

0

粉丝