久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標題: STC8H8K64U使用內部晶振異常,只有8M [打印本頁]

作者: zhujiang4812    時間: 2025-7-13 00:46
標題: STC8H8K64U使用內部晶振異常,只有8M
不帶晶振,如下編譯完成,燒錄時顯示頻率只有8M,怎么更改到11.059MHz

本例程基于STC8H8K64U為主控芯片的實驗箱9進行編寫測試,STC8G、STC8H系列芯片可通用參考.

串口1全雙工中斷方式收發通訊程序。
通過PC向MCU發送數據, MCU收到后通過串口1把收到的數據原樣返回.

用定時器做波特率發生器,建議使用1T模式(除非低波特率用12T),并選擇可被波特率整除的時鐘頻率,以提高精度。

下載時, 選擇時鐘 22.1184MHz (用戶可自行修改頻率).

******************************************/

#include "stc8h.h"       //包含此頭文件后,不需要再包含"reg51.h"頭文件

#define MAIN_Fosc       22118400L   //定義主時鐘(精確計算115200波特率)


typedef     unsigned char   u8;
typedef     unsigned int    u16;
typedef     unsigned long   u32;


#define     Baudrate1           115200L
#define     UART1_BUF_LENGTH    64


u8  TX1_Cnt;    //發送計數
u8  RX1_Cnt;    //接收計數
bit B_TX1_Busy; //發送忙標志

u8  xdata RX1_Buffer[UART1_BUF_LENGTH]; //接收緩沖


void UART1_config(u8 brt);   // 選擇波特率, 2: 使用Timer2做波特率, 其它值: 使用Timer1做波特率.
void PrintString1(u8 *puts);


//========================================================================
// 函數: void main(void)
// 描述: 主函數。
// 參數: none.
// 返回: none.
// 版本: VER1.0
// 日期: 2014-11-28
// 備注:
//========================================================================
void main(void)
{
    P_SW2 |= 0x80;  //擴展寄存器(XFR)訪問使能

    P0M1 = 0x30;   P0M0 = 0x30;   //設置P0.4、P0.5為漏極開路(實驗箱加了上拉電阻到3.3V)
    P1M1 = 0x30;   P1M0 = 0x30;   //設置P1.4、P1.5為漏極開路(實驗箱加了上拉電阻到3.3V)
    P2M1 = 0x3c;   P2M0 = 0x3c;   //設置P2.2~P2.5為漏極開路(實驗箱加了上拉電阻到3.3V)
    P3M1 = 0x50;   P3M0 = 0x50;   //設置P3.4、P3.6為漏極開路(實驗箱加了上拉電阻到3.3V)
    P4M1 = 0x3c;   P4M0 = 0x3c;   //設置P4.2~P4.5為漏極開路(實驗箱加了上拉電阻到3.3V)
    P5M1 = 0x0c;   P5M0 = 0x0c;   //設置P5.2、P5.3為漏極開路(實驗箱加了上拉電阻到3.3V)
    P6M1 = 0xff;   P6M0 = 0xff;   //設置為漏極開路(實驗箱加了上拉電阻到3.3V)
    P7M1 = 0x00;   P7M0 = 0x00;   //設置為準雙向口

    UART1_config(1);    // 選擇波特率, 2: 使用Timer2做波特率, 其它值: 使用Timer1做波特率.
    EA = 1; //允許總中斷

    PrintString1("STC8H8K64U UART1 Test Programme!\r\n");  //UART1發送一個字符串

    while (1)
    {
        if((TX1_Cnt != RX1_Cnt) && (!B_TX1_Busy))   //收到數據, 發送空閑
        {
            SBUF = RX1_Buffer[TX1_Cnt];     //把收到的數據遠樣返回
            B_TX1_Busy = 1;
            if(++TX1_Cnt >= UART1_BUF_LENGTH)   TX1_Cnt = 0;
        }
    }
}


//========================================================================
// 函數: void PrintString1(u8 *puts)
// 描述: 串口1發送字符串函數。
// 參數: puts:  字符串指針.
// 返回: none.
// 版本: VER1.0
// 日期: 2014-11-28
// 備注:
//========================================================================
void PrintString1(u8 *puts) //發送一個字符串
{
    for (; *puts != 0;  puts++)     //遇到停止符0結束
    {
        SBUF = *puts;
        B_TX1_Busy = 1;
        while(B_TX1_Busy);
    }
}

//========================================================================
// 函數: SetTimer2Baudraye(u16 dat)
// 描述: 設置Timer2做波特率發生器。
// 參數: dat: Timer2的重裝值.
// 返回: none.
// 版本: VER1.0
// 日期: 2014-11-28
// 備注:
//========================================================================
void SetTimer2Baudraye(u16 dat)  // 選擇波特率, 2: 使用Timer2做波特率, 其它值: 使用Timer1做波特率.
{
    AUXR &= ~(1<<4);    //Timer stop
    AUXR &= ~(1<<3);    //Timer2 set As Timer
    AUXR |=  (1<<2);    //Timer2 set as 1T mode
    T2H = dat / 256;
    T2L = dat % 256;
    IE2  &= ~(1<<2);    //禁止中斷
    AUXR |=  (1<<4);    //Timer run enable
}

//========================================================================
// 函數: void UART1_config(u8 brt)
// 描述: UART1初始化函數。
// 參數: brt: 選擇波特率, 2: 使用Timer2做波特率, 其它值: 使用Timer1做波特率.
// 返回: none.
// 版本: VER1.0
// 日期: 2014-11-28
// 備注:
//========================================================================
void UART1_config(u8 brt)    // 選擇波特率, 2: 使用Timer2做波特率, 其它值: 使用Timer1做波特率.
{
    /*********** 波特率使用定時器2 *****************/
    if(brt == 2)
    {
        AUXR |= 0x01;       //S1 BRT Use Timer2;
        SetTimer2Baudraye(65536UL - (MAIN_Fosc / 4) / Baudrate1);
    }

    /*********** 波特率使用定時器1 *****************/
    else
    {
        TR1 = 0;
        AUXR &= ~0x01;      //S1 BRT Use Timer1;
        AUXR |=  (1<<6);    //Timer1 set as 1T mode
        TMOD &= ~(1<<6);    //Timer1 set As Timer
        TMOD &= ~0x30;      //Timer1_16bitAutoReload;
        TH1 = (u8)((65536UL - (MAIN_Fosc / 4) / Baudrate1) / 256);
        TL1 = (u8)((65536UL - (MAIN_Fosc / 4) / Baudrate1) % 256);
        ET1 = 0;    //禁止中斷
        INTCLKO &= ~0x02;   //不輸出時鐘
        TR1  = 1;
    }
    /*************************************************/

    SCON = (SCON & 0x3f) | 0x40;    //UART1模式, 0x00: 同步移位輸出, 0x40: 8位數據,可變波特率, 0x80: 9位數據,固定波特率, 0xc0: 9位數據,可變波特率
//  PS  = 1;    //高優先級中斷
    ES  = 1;    //允許中斷
    REN = 1;    //允許接收
    P_SW1 &= 0x3f;
    P_SW1 |= 0x00;      //UART1 switch to, 0x00: P3.0 P3.1, 0x40: P3.6 P3.7, 0x80: P1.6 P1.7, 0xC0: P4.3 P4.4
//  PCON2 |=  (1<<4);   //內部短路RXD與TXD, 做中繼, ENABLE,DISABLE

    B_TX1_Busy = 0;
    TX1_Cnt = 0;
    RX1_Cnt = 0;
}


//========================================================================
// 函數: void UART1_int (void) interrupt UART1_VECTOR
// 描述: UART1中斷函數。
// 參數: nine.
// 返回: none.
// 版本: VER1.0
// 日期: 2014-11-28
// 備注:
//========================================================================
void UART1_int (void) interrupt 4
{
    if(RI)
    {
        RI = 0;
        RX1_Buffer[RX1_Cnt] = SBUF;
        if(++RX1_Cnt >= UART1_BUF_LENGTH)   RX1_Cnt = 0;    //防溢出
    }

    if(TI)
    {
        TI = 0;
        B_TX1_Busy = 0;
    }
}

111.jpg (85.41 KB, 下載次數: 0)

111.jpg

112.jpg (45.25 KB, 下載次數: 0)

112.jpg

作者: lmn2005    時間: 2025-7-16 14:42
1、用最新版本的ISP2、把燒錄波特率調低點試試




作者: WL0123    時間: 2025-7-16 16:18
你說的情況從沒遇過,試試下載時除了選擇【不調節,使用內部預置的頻率】外,其他選項全部默認。



作者: rundstedt    時間: 2025-7-16 16:51
那就是芯片不行,將就著用吧,不是11.0592一樣可以用1串口。




歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 欧美a一级| 免费av一区二区 | 成人在线观看免费爱爱 | www激情 | 日韩欧美在线看 | a视频在线免费观看 | 91亚色视频| 欧美黑人一区二区三区 | 色综合天天综合网国产成人网 | 久久国产影院 | 免费爱爱网站 | 成年人免费看视频 | 国产又粗又猛又黄又爽无遮挡 | 成人免费看片&#39; | 麻豆av在线播放 | 久草综合在线 | 国产综合第一页 | 婷婷综合久久 | 麻豆视频一区二区 | 色av吧| 成人在线a | 可以看av的网站 | 欧美一区 | 中文字幕日韩高清 | 中文字幕在线观看网址 | 午夜影院污 | 亚洲最大的网站 | 久久久久久久网 | 国产又粗又猛又黄又爽无遮挡 | 夜夜躁狠狠躁日日躁av | 亚洲成人一区 | 日本人の夫妇交换 | 天天干夜夜爽 | 欧美69视频 | 久久久久久久国产精品 | 欧美一级色 | 哦┅┅快┅┅用力啊┅aps | 亚洲亚洲人成综合网络 | 久草福利视频 | 国产一级在线观看 | 欧美一二 |