欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 601|回復: 10
收起左側

關于STC8H1K08單片機時鐘問題

[復制鏈接]
ID:65237 發表于 2025-5-20 09:28 | 顯示全部樓層 |閱讀模式
想用STC8H1K08單片機做一個315的解碼和控制,在壇里找了一個帶學習功能,用普通51測試沒問題,想改用STC8H1K08單片機做,發現解不了碼,查后發現時鐘不一樣,普通51是12個時鐘周期這個STC8H1K08是1個時鐘周期,壇朋們這個要怎么把STC8H1K08改有和51的一樣周期,望高手們指點一下
回復

使用道具 舉報

ID:65237 發表于 2025-5-21 09:16 | 顯示全部樓層
沒人用個STC的單片機嗎
回復

使用道具 舉報

ID:227818 發表于 2025-5-21 09:50 | 顯示全部樓層
這個很簡單,看你用的哪個定時器,如果是T0、T1、或T2,在AUXR中設定是12個時鐘周期或1個時鐘周期,T3或者T4,在T4T3M中設定,具體看下這個單片機的手冊。
回復

使用道具 舉報

ID:72649 發表于 2025-5-21 11:58 來自觸屏版 | 顯示全部樓層
把你的程序發上來
回復

使用道具 舉報

ID:584814 發表于 2025-5-22 17:19 | 顯示全部樓層
你在壇內搜索的工程就那么保密么 ?
你當大家都有你說的代碼和硬件么 ?
不想發工程文件可以不問,畢竟這不是算命論壇玩猜猜猜
回復

使用道具 舉報

ID:1110477 發表于 2025-5-23 03:31 | 顯示全部樓層
STC的燒錄器可以修改周期,但我以前改了也沒用
回復

使用道具 舉報

ID:1151360 發表于 2025-5-23 09:15 | 顯示全部樓層
STC8H1K08是1T單片機(1個時鐘周期執行1條指令),而傳統51是12T(12個時鐘周期執行1條指令)。這導致原有代碼中的時序邏輯(延時、定時器)在STC8H上運行速度快了12倍,無法正確解碼315MHz信號。  解決方案: 1. 修改定時器分頻系數(推薦) STC8H的定時器支持獨立分頻,無需降低主頻即可解決時序問題。假設原51使用12MHz晶振,定時器配置為12分頻,移植到STC8H時需調整如下:  c // 定時器初始化示例(Timer0) void Timer0_Init(void) {     AUXR |= 0x80;       // 定時器0設置為1T模式     TMOD &= 0xF0;       // 清除定時器0模式位     TMOD |= 0x01;       // 定時器0設為模式1(16位自動重載)     TL0 = 0x00;         // 初始化計時值     TH0 = 0x00;     ET0 = 1;            // 使能定時器0中斷     TR0 = 1;            // 啟動定時器0     // 關鍵設置:定時器時鐘分頻(假設原51為12分頻)     T0H = (65536 - (FOSC / 12 / 1000)) >> 8;  // 舉例:1ms中斷     T0L = (65536 - (FOSC / 12 / 1000)) & 0xFF; } 2. 調整系統時鐘分頻 若解碼邏輯依賴全局延時(如nop循環),可降低系統時鐘至原51的1/12:  c // 在程序初始化時設置時鐘分頻 CLKDIV = 0x0B;          // 系統時鐘12分頻(主頻=外部晶振/12) 3. 修改軟件延時函數 若代碼中有基于循環的軟件延時,需將延時倍數調整為12倍:  c void Delay1ms() {     unsigned int i, j;     for (i=0; i<12; i++) {  // 原循環次數乘以12         for (j=0; j<1000; j++);     } } 4. 檢查外部中斷配置 315MHz解碼通常依賴外部中斷檢測信號邊沿。確保STC8H的IO口模式配置正確(建議設置為高阻輸入):  c P1M1 |= 0x01;   // P1.0設為高阻輸入 P1M0 &= ~0x01; IT0 = 1;        // 設置INT0為下降沿觸發 EX0 = 1;        // 使能INT0中斷 EA = 1;         // 全局中斷使能
回復

使用道具 舉報

ID:1151360 發表于 2025-5-23 09:16 | 顯示全部樓層
STC8H1K08是1T單片機(1個時鐘周期執行1條指令),而傳統51是12T(12個時鐘周期執行1條指令)。這導致原有代碼中的時序邏輯(延時、定時器)在STC8H上運行速度快了12倍,無法正確解碼315MHz信號。

解決方案:
1. 修改定時器分頻系數(推薦)
STC8H的定時器支持獨立分頻,無需降低主頻即可解決時序問題。假設原51使用12MHz晶振,定時器配置為12分頻,移植到STC8H時需調整如下:
// 定時器初始化示例(Timer0)
void Timer0_Init(void) {
    AUXR |= 0x80;       // 定時器0設置為1T模式
    TMOD &= 0xF0;       // 清除定時器0模式位
    TMOD |= 0x01;       // 定時器0設為模式1(16位自動重載)
    TL0 = 0x00;         // 初始化計時值
    TH0 = 0x00;
    ET0 = 1;            // 使能定時器0中斷
    TR0 = 1;            // 啟動定時器0
    // 關鍵設置:定時器時鐘分頻(假設原51為12分頻)
    T0H = (65536 - (FOSC / 12 / 1000)) >> 8;  // 舉例:1ms中斷
    T0L = (65536 - (FOSC / 12 / 1000)) & 0xFF;
}
2. 調整系統時鐘分頻
若解碼邏輯依賴全局延時(如nop循環),可降低系統時鐘至原51的1/12:
// 在程序初始化時設置時鐘分頻
CLKDIV = 0x0B;          // 系統時鐘12分頻(主頻=外部晶振/12)
3. 修改軟件延時函數
若代碼中有基于循環的軟件延時,需將延時倍數調整為12倍:
void Delay1ms() {
    unsigned int i, j;
    for (i=0; i<12; i++) {  // 原循環次數乘以12
        for (j=0; j<1000; j++);
    }
}
4. 檢查外部中斷配置
315MHz解碼通常依賴外部中斷檢測信號邊沿。確保STC8H的IO口模式配置正確(建議設置為高阻輸入):
P1M1 |= 0x01;   // P1.0設為高阻輸入
P1M0 &= ~0x01;
IT0 = 1;        // 設置INT0為下降沿觸發
EX0 = 1;        // 使能INT0中斷
EA = 1;         // 全局中斷使能
回復

使用道具 舉報

ID:1121978 發表于 2025-5-23 10:52 | 顯示全部樓層
你這個問題挺關鍵的——主要是時鐘周期不同導致的解碼不兼容。STC8H1K08的內部時鐘周期通常是按照1個系統時鐘的,而普通51(如8051)可能用的是12個時鐘周期一個指令周期。  關鍵點:  8051/51芯片: 一個指令周期一般是12個機器時鐘(晶振),即每個指令執行時間為12個晶振周期。 STC8H1K08: 通常一個指令周期就是一個晶振頻率(1個晶振周期)。 解決方案:  調整你的晶振頻率: 讓STC8H1K08的晶振頻率與舊的51芯片相匹配(如果原本定義的時鐘周期是基于12個晶振周期的邏輯),這樣你在程序中計時時可以復用之前的算法。  軟件模擬延時:  如果你不能修改晶振,可以在程序里加入延時,用軟件延時等效于原先12個時鐘周期的時間。這在解碼等時序性很強的應用中常用。 使用FOSC指令或配置:  在STC芯片的配置(如FOSC)里調節時鐘源,讓其以接近12個晶振周期的方式運行(比如調節晶振頻率),符合之前的邏輯。 程序適配:  如果解碼算法依賴于時間,你需要在代碼中調整計時器的預分頻,使它計得與舊51芯片的時鐘節奏一樣。 總結: 最簡單的辦法就是調整晶振頻率讓用戶的代碼能在類似的時間尺度下工作。如果硬件限制,試試在程序中加上適當的延時或調整預分頻器。  你也可以提供更詳細的配置和代碼片段,我幫你具體看看該怎么調整!
回復

使用道具 舉報

ID:1034262 發表于 2025-5-23 16:08 | 顯示全部樓層
你解碼的方法是什么?你的解碼時序是什么?
沒有基本信息,我們不是神仙,猜不到的。
回復

使用道具 舉報

ID:401564 發表于 2025-5-26 09:29 | 顯示全部樓層
你說的這兩個單片機有兩點不同,一個是時鐘,另一個是端口的初始化,STC8H1K08默認的端口模式與STC89系列是不一樣的
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表