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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 221|回復: 3
打印 上一主題 下一主題
收起左側

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
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:71233 發表于 2025-7-16 14:42 | 只看該作者
1、用最新版本的ISP2、把燒錄波特率調低點試試



回復

使用道具 舉報

板凳
ID:1133081 發表于 2025-7-16 16:18 | 只看該作者
你說的情況從沒遇過,試試下載時除了選擇【不調節,使用內部預置的頻率】外,其他選項全部默認。


回復

使用道具 舉報

地板
ID:879809 發表于 2025-7-16 16:51 | 只看該作者
那就是芯片不行,將就著用吧,不是11.0592一樣可以用1串口。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: av在线播放不卡 | 久久精品国产一区 | 亚洲成人日韩 | 国产一级一片免费播放放a 免费国产视频 | av黄色网 | 在线色综合 | 免费在线观看黄色片 | 久久私人影院 | 成人精品在线观看 | 日韩欧美视频一区 | 亚洲欧美一区二区三区在线 | 亚洲综合免费 | 欧美色综合网 | 在线中文字幕 | 日韩毛片在线播放 | 国产高清视频在线播放 | 日本国产精品 | 91视频亚洲| 97福利视频 | 三级网站在线播放 | 伊人在线 | 91精品久久久久久久久 | 天堂网中文 | 男女那个视频 | 99色综合 | 欧美日韩精品一区二区三区 | 蜜臀av性久久久久av蜜臀妖精 | 黑森林av| 国产寡妇亲子伦一区二区三区四区 | 欧美日韩伦理 | 午夜婷婷 | 久久综合热 | 一级做a爰片久久毛片潮喷 亚洲黄色天堂 | 日本韩国欧美中文字幕 | 日本中文字幕在线观看 | 国产精品一区在线播放 | 日韩一区精品 | 黑人黄色一级片 | 伊人久久中文字幕 | 精品一区久久 | 999热视频 |