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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

STC8F單片機怎么保存串口輸入的字符串?

[復制鏈接]
跳轉到指定樓層
樓主
就是通過單片機串口讀取輸入的字符串,然后保存起來(斷電不丟失),再通過串口發送回去。
我用EEPROM,怎么都搞不成功
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:1038251 發表于 2022-10-22 15:13 | 只看該作者
字符串保存和發送的時候怎么處理?我的要么是發送回去?????要么是////////
回復

使用道具 舉報

板凳
ID:161164 發表于 2022-10-22 20:44 | 只看該作者
接收數據
順序寫入緩沖數組
檢測有否超時
寫入EEProm
順序發送數據
回復

使用道具 舉報

地板
ID:1038251 發表于 2022-10-22 21:10 | 只看該作者
lkc8210 發表于 2022-10-22 20:44
接收數據
順序寫入緩沖數組
檢測有否超時

我不知道為什么:
接收數組receive[],緩存數組save_number[]。
for(i=0;;i++)
{
save_number[i ] = receive[i ];
if(receive[i ] == '\r')
{
break;
}
}
然后把save_number一次保存到EEPROM中
具體就是
addr = 0X0A00;
for(j=0;;j++)
{
Iap_Write(addr,save_number[j]);
if(save_number[j] == '\r')
{
break;
}
addr++;
}

寫完以后
addr = 0X0A00;
for()
{
DAT = Iap_Read(addr);
Send_Dat(DAT);
if(DAT == '\r') {break;}
addr++;
}
這樣發出來的數據,個數上對的上,但是都變成了????,比如發送ABCD1234變成了????????,發送123456,變成了??????,改了半天,成功讓?變成了/
回復

使用道具 舉報

5#
ID:624769 發表于 2022-10-22 22:02 來自手機 | 只看該作者
先全收下,然后寫eeprom,讀也是,先全讀出來,再一起發出去。
回復

使用道具 舉報

6#
ID:161164 發表于 2022-10-23 22:55 | 只看該作者
鹿目覺 發表于 2022-10-22 21:10
我不知道為什么:
接收數組receive[],緩存數組save_number[]。
for(i=0;;i++)

寫入前沒有刷除?
回復

使用道具 舉報

7#
ID:879348 發表于 2022-10-24 08:21 | 只看該作者
EEPROM寫一次耗時太大了,如果用內部的EEPROM,還要關中斷,所以失敗是必然
回復

使用道具 舉報

8#
ID:526108 發表于 2022-10-24 08:24 | 只看該作者
http://www.zg4o1577.cn/bbs/dpj-223265-1.html
推薦使用這款軟件生成
雖然還沒做到STC8F系列,但是使用STC12C5A60S2系列型號生成的EEPROM操作函數是一樣的自帶很詳細的例程,操作簡單方便




回復

使用道具 舉報

9#
ID:1034262 發表于 2022-10-24 10:01 | 只看該作者
參考、測試STC官方的EEPROM例子
回復

使用道具 舉報

10#
ID:1038251 發表于 2022-10-24 11:31 | 只看該作者
lkc8210 發表于 2022-10-23 22:55
寫入前沒有刷除?

刪除了,程序部分寫在下面了,能幫忙看下哪里出問題了嗎?
回復

使用道具 舉報

11#
ID:1038251 發表于 2022-10-24 11:32 | 只看該作者
本帖最后由 鹿目覺 于 2022-10-24 11:34 編輯

void Send_Data(char dat)
{
        ES=0;
        IE2&=~(1<<0);
        SBUF=dat;
        S2BUF=dat;
        while((!TI)||(!(S2CON & 0x02)));
        TI=0;
        S2CON &=~(1<<1); //S2TI = 0;
        ES=1;
        IE2 |= (1<<0);
}
void Send_String(char *s)
{
while(*s)
{
Send_Data(*s++);
}
}

void Write_SN()
{
        SN_addr = 0xA00;
        Send_String("WSN_OK\r\n");
        for(k = 4;;k++)
        {
                IapErase(SN_addr);
                IapProgram(SN_addr,receive_number[k]);
                if(receive_number[k] == '\r')
                {
                        break;
                }
                else
                {
                        SN_addr++;
                }
        }
        Send_String("wsn_ok\r\n");
}


void Read_SN()
{
        SN_addr = 0x0A00;
        for(j = 0;;j++)
        {
                sn_number[j] = IapRead(SN_addr);
                if(sn_number[j] == '\r')
                {
                        break;
                }
                else
                {
                        Send_Data(sn_number[j]);
                        SN_addr++;
                }
        }
        Send_String("\r\n");
}
回復

使用道具 舉報

12#
ID:1038251 發表于 2022-10-24 11:38 | 只看該作者
發送數據的函數是沒問題的,應該問題就出在存和讀的部分,我還在程序別的地方保存和讀取了別的數據,是int類型的就可以正常存讀,不知道為什么字符串就不行。
回復

使用道具 舉報

13#
ID:1042619 發表于 2022-10-26 12:04 | 只看該作者
我習慣用S T C開發工具包里面的范例程序,稍微修改直接調用很方便

SM7[YFH[S[O9D6N~)M928%7.png (76.04 KB, 下載次數: 32)

SM7[YFH[S[O9D6N~)M928%7.png
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品一卡二卡三卡 | 免费成人在线网 | 欧美精品在线播放 | 午夜爽爽男女免费观看hd | 成人亚洲性情网站www在线观看 | 美女视频. | 免费看黄色视屏 | 亚洲精品亚洲人成人网 | 亚洲精品在线播放 | 天天草视频 | 国产专区在线 | 最新中文字幕在线 | www视频在线观看 | 成人精品一区 | 国产99久久精品 | 在线一区视频 | 亚洲国产一区在线 | 国产xxx在线观看 | 美女视频网站久久 | 精品国产欧美一区二区三区不卡 | 国产在线观看网站 | 欧美日韩综合 | 中文字幕第十页 | 国产免费va | 国产亚洲一区在线 | 91成人午夜性a一级毛片 | 色婷婷狠狠 | 一级毛片网 | 一级a性色生活片久久毛片 一级特黄a大片 | 国产一区二区三区视频在线观看 | 欧美视频区 | 国产成人精品999在线观看 | 91亚洲精品在线观看 | 91精品国产91久久久久福利 | 亚洲天堂免费 | av在线一区二区三区 | eeuss国产一区二区三区四区 | 亚洲欧美日韩在线 | 一区二区三区四区在线免费观看 | 久草中文在线观看 | 国产精品亚洲第一区在线暖暖韩国 |