找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 4596|回復(fù): 3
打印 上一主題 下一主題
收起左側(cè)

STC15F104W和STC15W401AS單片機(jī)代碼可以通用嗎

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:221879 發(fā)表于 2019-3-17 12:12 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
最近使用STC15F104W單片機(jī)做的定時(shí)器電路,時(shí)鐘誤差很大,現(xiàn)在想用外接晶振的方法解決問(wèn)題。由于STC15F104W本身不支持外接晶振,所以查手冊(cè)得知STC15W401AS可以外接晶振,現(xiàn)在就是不知道STC15F104W和STC15W401AS代碼可以通用不,如果要修改要怎么改,先謝謝了。

使用芯片:STC15F104E
晶振:11.0592MHZ
波特率:9600
編譯環(huán)境:Keil
*********************************************************************/
/********************************************************************/

#include<reg52.h>                 //庫(kù)文件
#define uchar unsigned char//宏定義無(wú)符號(hào)字符型
#define uint unsigned int  //宏定義無(wú)符號(hào)整型
/********************************************************************
                            初始定義
*********************************************************************/
uint sec = 0; //定義計(jì)數(shù)值,每過(guò)1/10 秒,sec 加一
uint tcnt = 0; //鍵值判斷
uchar Start_Flag = 1;//定義一個(gè)全局變量,值初始化為1,用來(lái)判斷首次上電的
/********************************************************************
                            I/O定義
*********************************************************************/
sbit  OUT1=P3^3;//定義輸出口為P3.3口 用以控制繼電器
sbit  IN1=P3^5;        //定義輸入口為P3.5口 用以輸入信號(hào)

/********************************************************************
                            定時(shí)中斷服務(wù)函數(shù)
*********************************************************************/
void t0(void) interrupt 1 using 0 //定時(shí)中斷服務(wù)函數(shù)
{
        tcnt++;
        if(tcnt==4000)
        {
                tcnt=0;
                sec++;
                if(Start_Flag == 1)
                {
                        if(sec==10)
                        {
                        OUT1=1;
                        }
                        if(sec==20)
                        {
                        OUT1=0;
                        sec=0;
                        Start_Flag = 0;
                        }
                }
                else
                {
                        if(sec==30)
                        {
                        OUT1=1;
                        }
                        if(sec==40)
                        {
                        OUT1=0;
                        sec=0;
                        }
                }
        }
}

/********************************************************************
                            主函數(shù)
*********************************************************************/
void main()
{
        TMOD=0x02; //定時(shí)器工作在方式2
        TH0=0x06; //對(duì)TH0 TL0 賦值
        TL0=0x06;
        TR0=1; //開(kāi)始定時(shí)
        ET0=1;
        EA=1;
        sec=0;
        OUT1=0;//模塊通電繼電器吸合
        while(1)
        {
         if(IN1==0){OUT1=1;while(!IN1);OUT1=0;}
        }
}               

        
/********************************************************************
                              結(jié)束
*********************************************************************/

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:644425 發(fā)表于 2020-4-9 23:32 來(lái)自手機(jī) | 只看該作者
頭文件用 stc15.h
回復(fù)

使用道具 舉報(bào)

板凳
ID:644425 發(fā)表于 2020-4-9 23:44 來(lái)自手機(jī) | 只看該作者
頭文件用 stc15.h , TMOD =0X00  16位自動(dòng)重載。 然后,把定時(shí)中斷里的if,全拉到主程序來(lái),定時(shí)中斷就留一個(gè)tcnt++, 時(shí)間就準(zhǔn)了。另外,定時(shí)器中斷太頻繁了,建議控制在5ms一次中斷比較好,那么200次一秒,累加只需要用到uchar,而不需要用到uint,我用stc15f104至今,定時(shí)器誤差直局限于下載時(shí)調(diào)整晶振速率時(shí)那點(diǎn)差值,實(shí)際使用中連別人說(shuō)的頻飄都沒(méi)遇到過(guò)。
回復(fù)

使用道具 舉報(bào)

地板
ID:213173 發(fā)表于 2020-4-10 05:56 | 只看該作者
就樓主這個(gè)簡(jiǎn)單程序,只是使用了定時(shí)器0的模式2,沒(méi)有使用其它任何特殊功能,程序什么都不用改。STC的芯片都能直接用,當(dāng)然包括STC15W401AS在內(nèi)。不知樓主使用STC15F104W單片機(jī)做的定時(shí)器電路下載程序時(shí)選擇內(nèi)部時(shí)鐘是多少頻率,從程序中看定時(shí)器設(shè)置是12MHz/250us。如果下載程序選擇內(nèi)部時(shí)鐘默認(rèn)11.0592MHz就會(huì)誤差很大。在實(shí)際應(yīng)用中STC內(nèi)部時(shí)鐘1小時(shí)誤差在10秒內(nèi)。其實(shí)如果誤差比較穩(wěn)定還可以通過(guò)修改if(tcnt==4000)的數(shù)值增減使誤差控制在每小時(shí)1秒內(nèi),沒(méi)有必要加外部晶振。其實(shí)TB賣的晶振也準(zhǔn)不到那里去。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表