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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索

代碼高手看一下我的單片機代碼有些問題但不知道問題在哪

查看數(shù): 3088 | 評論數(shù): 7 | 收藏 0
關(guān)燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請稍候......
發(fā)布時間: 2023-6-21 20:51

正文摘要:

第一個算式正確第二個就在第一個的基礎(chǔ)上累加,輸入沒有優(yōu)先級 單片機源程序如下: #include<reg52.h> #include<stdio.h> #include <stdlib.h> void send_int_to_serial_port(int c); unsigned ...

回復

ID:1087948 發(fā)表于 2023-7-31 12:30
我注意到了幾個可能的問題:  在 uart() 中斷函數(shù)中,你在接收到數(shù)據(jù)后立即發(fā)送了相同的數(shù)據(jù)回去,這可能不是你想要的行為。  在 panduan_jisuan() 函數(shù)中,你的代碼假設(shè)每個數(shù)字和運算符都是由單個字符表示的,且每個數(shù)字和運算符之間沒有任何空格或其他字符。如果輸入的表達式不滿足這些條件,你的代碼可能無法正確地解析和計算它。  同樣在 panduan_jisuan() 函數(shù)中,你的代碼只處理了第一個運算符和等號之后的字符,對于等號之后的字符,你的代碼并沒有進行處理。  你的代碼沒有處理除數(shù)為0的情況,如果輸入的表達式包含除以0的操作,你的代碼可能會產(chǎn)生錯誤。  在 main() 函數(shù)中,你使用了一個名為 flag 的變量來判斷是否已經(jīng)接收到數(shù)據(jù),但是你并沒有在任何地方初始化這個變量。如果這個變量的初始值不是0,你的代碼可能會在接收到任何數(shù)據(jù)之前就開始嘗試進行計算。
ID:1053359 發(fā)表于 2023-7-3 12:57
在您提供的代碼中,存在以下問題:  chuankou_chushihua() 函數(shù)中缺少對串口引腳的配置。在8051單片機中,需要設(shè)置相應(yīng)的引腳(如P3.0和P3.1)為串口通信功能。  在主函數(shù) main() 中,調(diào)用 chuankou_chushihua() 函數(shù)時沒有傳入任何參數(shù),但是函數(shù)定義中有一個參數(shù)。  在 uart() 中斷函數(shù)中,nm 變量用于記錄接收到的字符數(shù)量,但未進行初始化。需要在主函數(shù)中添加類似 nm = 0; 的語句。  在 panduan_jisuan() 函數(shù)中,判斷數(shù)字范圍的條件語句錯誤。正確的條件應(yīng)為 '0' <= rec_data[i] && rec_data[i] <= '9'。此外,該條件語句也需要修正為 rec_data[i] 而不是 rec_data[0]。  在 panduan_jisuan() 函數(shù)中,返回值 ansi 應(yīng)在最后的 switch 語句之后進行賦值,而不是在進入循環(huán)時
ID:844772 發(fā)表于 2023-7-3 08:01
1.累加的原因是沒清零,但我覺得連續(xù)累加這也是一個功能吧。
2.沒有優(yōu)先級是程序問題,建議使用堆棧處理數(shù)據(jù),同時解決只能一位運算的問題。
ID:1086796 發(fā)表于 2023-7-2 15:55
這個程序有幾個問題:  在程序開頭引入的頭文件reg52.h是基于8051單片機的,而不是適用于大多數(shù)現(xiàn)代的開發(fā)平臺。你可以考慮移除這個頭文件。  頭文件stdio.h中的printf函數(shù)和stdlib.h中的sprintf函數(shù)不能直接使用,因為它們是針對標準輸入輸出流的,而不是嵌入式系統(tǒng)中的串口通信。你需要自己實現(xiàn)串口發(fā)送函數(shù)和接收函數(shù)。  rec_data數(shù)組沒有進行邊界檢查,可能導致越界訪問。在處理接收到的數(shù)據(jù)之前,應(yīng)該先檢查接收到的數(shù)據(jù)長度是否超過了數(shù)組的長度。  沒有對變量nm進行初始化,可能導致未定義的行為。在使用或判斷nm之前,應(yīng)該將其初始化為合適的值。  在函數(shù)panduan_jisuan中,判斷數(shù)字是否在正確的范圍內(nèi)時,使用了錯誤的條件。應(yīng)該是'0'<=rec_data[i]&&rec_data[i]<='9'而不是'0'<=rec_data[0]&&rec_data[0]<='9'。  在函數(shù)panduan_jisuan中,在執(zhí)行完一個運算符后沒有重置op的值,可能導致后續(xù)運算出錯。在處理完一個運算符后,應(yīng)該將op重置為空字符。  在函數(shù)send_int_to_serial_port中,沒有定義變量i的類型和初始值。應(yīng)該在函數(shù)開頭定義并初始化變量i。

評分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

ID:1063563 發(fā)表于 2023-6-25 09:47
buffer緩沖區(qū)不夠了,數(shù)據(jù)溢出了吧。
ID:1067540 發(fā)表于 2023-6-23 14:15
在計算結(jié)束后把存儲計算結(jié)果的變量清零
ID:235200 發(fā)表于 2023-6-22 13:12
接收中斷發(fā)生時,需一次把所有接收字符接收完(沒有做到),
send_int_to_serial_port這個函數(shù)想把接收表達式及結(jié)果發(fā)送出去,可buffer緩沖區(qū)中無內(nèi)容

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

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 午夜视频免费在线观看 | 午夜精品一区二区三区在线观看 | 精品www| 亚洲精彩免费视频 | 国产激情一区二区三区 | 免费观看黄色一级片 | 羞羞视频网页 | 久久久国产精品一区 | 国产一级片在线观看视频 | 久草网址 | 国产精品夜夜夜一区二区三区尤 | 亚洲精品乱码久久久久久久久 | 日韩午夜在线播放 | 蜜桃免费一区二区三区 | 精品国产乱码久久久久久闺蜜 | 久久精品视频一区二区 | 超碰在线国产 | 国产精品一区在线 | 一级做a爰片性色毛片 | 国户精品久久久久久久久久久不卡 | 久久精品一区二区 | 国产成人a亚洲精品 | 亚洲精品视频三区 | 国产高清在线观看 | 欧美在线日韩 | 国产日韩久久久久69影院 | 精品免费在线 | 成人h视频在线 | 国内精品久久久久久久影视简单 | 日韩欧美中文字幕在线观看 | 国产这里只有精品 | 久久精品在线播放 | 中国一级特黄真人毛片 | 国产福利在线 | 91精品国产色综合久久 | 日日摸夜夜添夜夜添精品视频 | 亚洲性人人天天夜夜摸 | 99免费在线观看视频 | 久久99精品久久久久久 | 婷婷丁香在线视频 | 视频1区|