标题: STC15W204S单片机计时时间不对 [打印本页]

作者: aimaoju    时间: 2019-5-21 15:08
标题: STC15W204S单片机计时时间不对
各位大神,以下程序在89C52芯片上运行,是按0.45秒闪烁(12MHZ),但是下载到15W204S里,设定IRC频率为12MHZ时,闪烁很快,大概快了4倍,请问是哪里设定不对吗?第一次用15系列,求解答,谢谢!

单片机源程序如下:
#include "reg52.h"               
typedef unsigned int u16;        
typedef unsigned char u8;

sbit led=P3^3;                 //将单片机的P3.3端口定义为led
void delay(u16 i)
{
        while(i--);        
}

void main()
{
        while(1)
        {
                led=0;        
                delay(50000); //大约延时450ms
                led=1;
                delay(50000);  //大约延时450ms        
        }               
}



作者: wc86110    时间: 2019-5-22 00:14
速度快改慢 4 倍不就行了么
作者: angmall    时间: 2019-5-22 06:47
延时函数不对

void Delay450ms()                //@12.000MHz
{
        unsigned char i, j, k;

        _nop_();
        _nop_();
        i = 21;
        j = 133;
        k = 210;
        do
        {
                do
                {
                        while (--k);
                } while (--j);
        } while (--i);
}


作者: zhanghyg    时间: 2019-5-22 10:46
12T模式还是1T模式?
作者: wulin    时间: 2019-5-22 11:29
/*-------------------------
  15W系列ms延时程序(12MHz 1T)
-------------------------*/
void delay_ms(uint k)//T=1*k(ms)
{
        uint i,j;
        for(i=k;i>0;i--)
                for(j=892;j>0;j--);       
}
作者: 笨笨兔    时间: 2019-5-22 13:07
资料看的不仔细,造成的结果,解释这样
作者: aimaoju    时间: 2019-5-22 21:25
wc86110 发表于 2019-5-22 00:14
速度快改慢 4 倍不就行了么

我的意思是同一个程序,在两块芯片上不一样,理解不了是哪里有问题。
作者: aimaoju    时间: 2019-5-22 21:26
angmall 发表于 2019-5-22 06:47
延时函数不对

void Delay450ms()                //@12.000MHz

谢谢大佬,这个我知道,还要加个头文件,我的意思是同一个程序,在两块芯片上不一样,理解不了是哪里有问题。
作者: aimaoju    时间: 2019-5-22 21:26
wulin 发表于 2019-5-22 11:29
/*-------------------------
  15W系列ms延时程序(12MHz 1T)
-------------------------*/

谢谢大佬,这个我知道,还要加个头文件,我的意思是同一个程序,在两块芯片上不一样,理解不了是哪里有问题。
作者: wulin    时间: 2019-5-23 06:13
aimaoju 发表于 2019-5-22 21:26
谢谢大佬,这个我知道,还要加个头文件,我的意思是同一个程序,在两块芯片上不一样,理解不了是哪里有问 ...

软件都是基于硬件条件下编写的,同一个程序在两块相同的芯片上使用不会有问题,如果在不同的芯片,甚至同一厂商的不同系列的芯片都不一定能正常运行。STC15W204S是1T单片机,运行速度比STC89C52快得多,所以用软件延时就要改数据,否则延时时间会缩短许多。
作者: aking991    时间: 2019-5-23 08:32
这款单片机的运行速度比老单片机快,所以定时器设定值要注意是12T还是1T,默认都是1T的,所以这点没有改就很容间造成时间变快,还有软件硬延时都不一样,请好好看两种单片机的手册
作者: 智芸DIY    时间: 2019-5-23 09:41
15的本来就比他快啊,程序要修改,建议用定时器,更准
作者: 晓风残月1124    时间: 2019-5-23 09:57
我感觉也有问题




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1