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

標題: STC89C52單片機串口通信keil代碼燒錄到單片機上不能發送,Protues上仿真沒有問題 [打印本頁]

作者: 1239u3ha    時間: 2023-12-6 15:05
標題: STC89C52單片機串口通信keil代碼燒錄到單片機上不能發送,Protues上仿真沒有問題
#include "reg52.h"               
#include <stdio.h>
#include <oled.h>        
sbit SDA = P2 ^ 1;
sbit SCL = P2 ^ 0;



char recive=0;
unsigned char a;


//========================================================
//串口通信初始化
void UartInit(void)                //9600bps@11.0592MHz
{
        SCON = 0x50;               
        TMOD &= 0x0F;               
        TMOD |= 0x20;               
        TL1 = 0xFD;               
        TH1 = 0xFD;               
        ET1 = 0;               
        TR1 = 1;               
        ES = 1;
        EA = 1;
}
//========================================================

void SendByte (unsigned char dat)  //發送一個字符
{
        SBUF = dat;
        while(!TI);
        TI = 0;
        }
//===========================================================
char putchar(char c)  //獲取一個字符
{
         SendByte(c);
        return c;
}
//==============================================================
//延遲函2,ms=1,延遲1ms
void delay(unsigned int ms)
{
        unsigned char j = 0;
        while (ms--)
                for (j = 0; j < 254; j++);
}
//==============================================================
//OLED顯示函數
void OLED_display()
{
        OLED_Init();      //初始化OLED
        OLED_Clear();             //OLED清屏
        
  OLED_ShowChar(5,5,'A',8);
        OLED_ShowString(1,2,"Hello World",8);
}               
//=================================================================

void UART() interrupt 4
{
        if(RI == 1)
        {
                 
                a = SBUF;
                recive=2;
                switch(recive)
                {
                        case 0:printf("停止\r\n");break;
                        case 1:printf("3\r\n");break;
                        case 2:printf("2\r\n");break;
                        case 3:printf("1\r\n");break;
                        default: break;
                }
                RI=0;
        }        
}
//====================================================================
//主程序        
void main()
{

        UartInit();
        //printf("Start now!\r\n");
        OLED_display();
        while(1)
        {
               
        }
        }
        
//=================================================================


作者: yzw846562238    時間: 2023-12-6 16:17
檢查晶振頻率
作者: devcang    時間: 2023-12-6 16:23

可以按STC下載工具中的串口例子,來抄一個。


~~~~~
作者: 1239u3ha    時間: 2023-12-6 16:42
解決了,是“文件大小超出程序區范圍,超出部分已被自動移到EEPROM區”刪了一些定義就好了
作者: 1239u3ha    時間: 2023-12-6 16:43
devcang 發表于 2023-12-6 16:23
可以按STC下載工具中的串口例子,來抄一個。

謝謝,就是這樣試了試才發現,然后解決了
作者: mikkiu    時間: 2023-12-6 23:16
定義有問題吧 刪刪看
作者: 1619422734    時間: 2023-12-7 12:04
這種情況可能是由于單片機的硬件連接問題或者軟件配置問題導致的。首先,確保單片機的串口引腳連接正確,并且電平轉換電路(如果有的話)也正確連接。然后,檢查keil代碼中的串口配置是否正確,包括波特率、數據位、停止位和校驗位等參數。另外,還需要確保程序中的發送函數調用正確,并且發送的數據格式符合接收端的要求。

如果以上步驟都沒有解決問題,可以嘗試使用示波器或者邏輯分析儀來監測串口信號,以確定是否有數據發送出去。另外,還可以嘗試更換單片機或者調整串口配置參數來排除硬件問題。

最后,如果以上方法都無法解決問題,可以嘗試在單片機上添加調試輸出功能,通過串口或者其他方式輸出調試信息,幫助定位問題所在。




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1