8274|10

126

帖子

0

TA的资源

五彩晶圆(初级)

楼主
 

STC12C5206PWM定时器问题 [复制链接]

STC12C5206PWM单片机,也是兼容51不过速度快,以前的程序的程序烧到单片机后发现,定时器中断时间不对了????原理是50ms中断一次,计时20次为1S,现在好像快了很多????上电也没有把它设置成1T模式呀。
/*********************************************************************
函数:Delay()
功能:延时10ms~655.36s
参数:
t>0时,延时(t*0.01)s
t=0时,延时655.36s
说明:
晶振采用11.0592MHz
*/
void Delay(unsigned int t)
{
do
{
  TH0 = 0xDC;
  TL0 = 0x00;
  TR0 = 1;
  while ( !TF0 );
  TF0 = 0;
  TR0 = 0;
} while (--t);
}
/**********************************************************************
函数:SystemInit()
功能:系统初始化
*/
void SystemInit()
{
I2C_Init();
TMOD = 0x01;
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
//  CMOD=0x02; //PCA时钟为 Fosc/2,PWM输出频率(12M)12M/2/256=23.4375KHz
//  CMOD=0x0a; //PCA时钟为Fosc/4 ,PWM输出频率(12M)12M/4/256=11.71875KHz
  CMOD=0x00; //PCA时钟为Fosc/12 ,PWM输出频率(12M)12M/12/256=3.90625KHz
CL=0x00;   //自动计数PCA时钟
CCAP0L=0x00;
CCAP0H=0x00;//自动重装值
// CCAP1L=0x00;
// CCAP1H=0x00;//自动重装值
CCAPM0=0x42;  //无中断8位PWM
// CCAPM1=0x42;  //无中断8位PWM
Delay(40);  //等待ZLG7290复位完毕
}
/****************中断服务程序********************************/
void tim1() interrupt 3 using 3
{
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
count++;
count1++;
}


main()
{
.....

//********************时间显示程序 ************************   
   if(count==14400) //1200为1分钟
     {
     count=0;
     if(time1>0)
      time1=time1-1;
      if(time1==0)
       {
         ET1=0;
      TR1=0;
      CR=0;
      onoff=0;
      ZLG7290_SegOnOff(45,0);
      time1=Time;
      FlagStart=0;
      DispValueT(0,time1,0);
       Bee=1;   //蜂鸣器
       Delay(180);
       Bee=0;
       Delay(50);
       Bee=1;
       Delay(180);
       Bee=0;
        }
      DispValueT(0,time1,0);
    }
......
}



count是用来计数的,20次为1S
此帖出自单片机论坛

最新回复

我觉得是你的算法不对,当单片机的定时器工作于模式0的时候,它的最大计数值是2的13次方,你怎么能用65536呢?方式1的最大计时时间在51来讲,应该不超过10ms.   设为16位的记数模式.  详情 回复 发表于 2009-5-25 10:50
点赞 关注
 

回复
举报

126

帖子

0

TA的资源

五彩晶圆(初级)

沙发
 
用法应该没有问题,以前我也是这么用的都没有问题,我的STC烧写器是宏晶提供的,上面是18.432M的晶振,我的试验板上的晶振是12M,跟这个有关系吗?
此帖出自单片机论坛
 
 

回复

1759

帖子

0

TA的资源

裸片初长成(高级)

板凳
 
没用过stc的 是不是和里面的倍频有关系啊 呵呵 随口说说 真的没用过
此帖出自单片机论坛
 
个人签名南京璞晓电子   www.cpx0.com需要
msn:njlianjian@hotmail.com
 
 

回复

132

帖子

0

TA的资源

纯净的硅(高级)

4
 
估计是晶振的问题,仔细看看!
此帖出自单片机论坛
 
 
 

回复

132

帖子

0

TA的资源

纯净的硅(高级)

5
 
仔细看看吧,我用过PIC,AVR,MSP430的!STC没怎么用过!
此帖出自单片机论坛
 
 
 

回复

196

帖子

0

TA的资源

五彩晶圆(中级)

6
 
我觉得是你的算法不对,当单片机的定时器工作于模式0的时候,它的最大计数值是2的13次方,你怎么能用65536呢?方式1的最大计时时间在51来讲,应该不超过10ms
此帖出自单片机论坛
 
 
 

回复

126

帖子

0

TA的资源

五彩晶圆(初级)

7
 
谢谢大家,哪我再检查一下晶振是不是有问题,上面印的是12.000
此帖出自单片机论坛
 
 
 

回复

126

帖子

0

TA的资源

五彩晶圆(初级)

8
 
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
我的晶振是12M,计数器为1us计数一次,50000次为50ms并中断一次,再用count来计数,20次为1S。
以前我也这么用,很正常。现在????
此帖出自单片机论坛
 
 
 

回复

2771

帖子

0

TA的资源

裸片初长成(中级)

9
 

请仔细看DATASHEET

在我的记忆里,STC12的可以工作在12T,也可以 1T.要配置相关REGISTER
此帖出自单片机论坛
 
 
 

回复

2771

帖子

0

TA的资源

裸片初长成(中级)

10
 

ptwang

我觉得是你的算法不对,当单片机的定时器工作于模式0的时候,它的最大计数值是2的13次方,你怎么能用65536呢?方式1的最大计时时间在51来讲,应该不超过10ms.
 

设为16位的记数模式.
此帖出自单片机论坛

赞赏

1

查看全部赞赏

 
 
 

回复

126

帖子

0

TA的资源

五彩晶圆(初级)

11
 
TMOD = 0x01;
哦,知道了,是我搞错了,应该是TMOD = 0x11;,想用T1   16位,却老是去设置T0的控制位。
多谢了,有时真是钻到牛角尖里出不来了。
非常感谢!
此帖出自单片机论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表