久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
代碼高手看一下我的單片機代碼有些問題但不知道問題在哪
[打印本頁]
作者:
zhai123
時間:
2023-6-21 20:51
標題:
代碼高手看一下我的單片機代碼有些問題但不知道問題在哪
第一個算式正確第二個就在第一個的基礎上累加,輸入沒有優先級
51hei.png
(24.51 KB, 下載次數: 52)
下載附件
2023-6-21 22:14 上傳
單片機源程序如下:
#include<reg52.h>
#include<stdio.h>
#include <stdlib.h>
void send_int_to_serial_port(int c);
unsigned char rec_data[32],bete;
unsigned char op,flag, num[2],n=0;
unsigned int i,ansi,j,nm;
void send_data(char jieguo);
void chuankou_chushihua()//串口初始化程序
{
TMOD|=0X20; //設置計數器1為工作方式 2
SCON=0X50; //設置串行口為工作方式 1
PCON=0X80; //波特率加倍
TH1=0XFA; //計數器初始值設置9600baud
TL1=0XFA;
ES=1; //打開接收中斷
EA=1; //打開總中斷
TR1=1; //打開計數器
}
void uart() interrupt 4 //串口通信中斷函數
{
if(RI == 1)
{
RI=0;//清除接收中斷標志位
bete=SBUF;//存儲接收到的數據
send_data(bete);
rec_data[nm++]=bete;
}
flag=1;
}
void send_data(char jieguo)
{
SBUF=jieguo;
while(TI==0);
TI=0;
}
int panduan_jisuan()
{
if('0'<=rec_data[0]&&rec_data[0]<='9')
num[0] = rec_data[0] - '0';
// 將第一個數字存入num[0]
for (i = 1; i < nm; i++)// 掃描整個字符數組,從第二個字符開始逐一處理
{
if (rec_data[i] == '+' || rec_data[i] == '-' || rec_data[i] == '*' ||rec_data[i] == '/')// 如果是運算符,則將其存儲到op中,并將下一個數字存入num[1]
{
op = rec_data[i];
num[1] = rec_data[i + 1] - '0'; // 將指針移位至下一個數
}
else if (rec_data[i] == '=') // 如果是等號,則運算結果即為第一個數字
{
ansi = num[0];
}
else if('0'<=rec_data[0]&&rec_data[0]<='9') // 如果是數字,則根據之前的運算符進行運算
{
switch (op)
{
case '+':
num[0] = num[0] + (rec_data[i] - '0');
break;
case '-':
num[0] = num[0] - (rec_data[i] - '0');
break;
case '*':
num[0] = num[0] * (rec_data[i] - '0');
break;
case '/':
num[0] = num[0] / (rec_data[i] - '0');
break;
}
ansi=num[0];
}
}
return ansi;
}
void send_int_to_serial_port(int c)
{
char buffer[16];
sprintf(buffer, "%d", c);// 使用 sprintf() 函數將整型變量轉換為字符串
for (i = 0; buffer[i] != '\0'; i++) // 將字符串逐個發送到串口
{
send_data(buffer[i]);
}
}
void main()
{
int k;
chuankou_chushihua( );
while(1)
{
if(flag==1)
{
k=panduan_jisuan();
send_int_to_serial_port(k);
flag=0;
}
}
}
復制代碼
作者:
csmyldl
時間:
2023-6-22 13:12
接收中斷發生時,需一次把所有接收字符接收完(沒有做到),
send_int_to_serial_port這個函數想把接收表達式及結果發送出去,可buffer緩沖區中無內容
作者:
xiaouex
時間:
2023-6-23 14:15
在計算結束后把存儲計算結果的變量清零
作者:
芯菲
時間:
2023-6-25 09:47
buffer緩沖區不夠了,數據溢出了吧。
作者:
dwping
時間:
2023-7-2 15:55
這個程序有幾個問題: 在程序開頭引入的頭文件reg52.h是基于8051單片機的,而不是適用于大多數現代的開發平臺。你可以考慮移除這個頭文件。 頭文件stdio.h中的printf函數和stdlib.h中的sprintf函數不能直接使用,因為它們是針對標準輸入輸出流的,而不是嵌入式系統中的串口通信。你需要自己實現串口發送函數和接收函數。 rec_data數組沒有進行邊界檢查,可能導致越界訪問。在處理接收到的數據之前,應該先檢查接收到的數據長度是否超過了數組的長度。 沒有對變量nm進行初始化,可能導致未定義的行為。在使用或判斷nm之前,應該將其初始化為合適的值。 在函數panduan_jisuan中,判斷數字是否在正確的范圍內時,使用了錯誤的條件。應該是'0'<=rec_data[i]&&rec_data[i]<='9'而不是'0'<=rec_data[0]&&rec_data[0]<='9'。 在函數panduan_jisuan中,在執行完一個運算符后沒有重置op的值,可能導致后續運算出錯。在處理完一個運算符后,應該將op重置為空字符。 在函數send_int_to_serial_port中,沒有定義變量i的類型和初始值。應該在函數開頭定義并初始化變量i。
作者:
glinfei
時間:
2023-7-3 08:01
1.累加的原因是沒清零,但我覺得連續累加這也是一個功能吧。
2.沒有優先級是程序問題,建議使用堆棧處理數據,同時解決只能一位運算的問題。
作者:
real8799190
時間:
2023-7-3 12:57
在您提供的代碼中,存在以下問題: chuankou_chushihua() 函數中缺少對串口引腳的配置。在8051單片機中,需要設置相應的引腳(如P3.0和P3.1)為串口通信功能。 在主函數 main() 中,調用 chuankou_chushihua() 函數時沒有傳入任何參數,但是函數定義中有一個參數。 在 uart() 中斷函數中,nm 變量用于記錄接收到的字符數量,但未進行初始化。需要在主函數中添加類似 nm = 0; 的語句。 在 panduan_jisuan() 函數中,判斷數字范圍的條件語句錯誤。正確的條件應為 '0' <= rec_data[i] && rec_data[i] <= '9'。此外,該條件語句也需要修正為 rec_data[i] 而不是 rec_data[0]。 在 panduan_jisuan() 函數中,返回值 ansi 應在最后的 switch 語句之后進行賦值,而不是在進入循環時
作者:
liyonghua111
時間:
2023-7-31 12:30
我注意到了幾個可能的問題: 在 uart() 中斷函數中,你在接收到數據后立即發送了相同的數據回去,這可能不是你想要的行為。 在 panduan_jisuan() 函數中,你的代碼假設每個數字和運算符都是由單個字符表示的,且每個數字和運算符之間沒有任何空格或其他字符。如果輸入的表達式不滿足這些條件,你的代碼可能無法正確地解析和計算它。 同樣在 panduan_jisuan() 函數中,你的代碼只處理了第一個運算符和等號之后的字符,對于等號之后的字符,你的代碼并沒有進行處理。 你的代碼沒有處理除數為0的情況,如果輸入的表達式包含除以0的操作,你的代碼可能會產生錯誤。 在 main() 函數中,你使用了一個名為 flag 的變量來判斷是否已經接收到數據,但是你并沒有在任何地方初始化這個變量。如果這個變量的初始值不是0,你的代碼可能會在接收到任何數據之前就開始嘗試進行計算。
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
秋霞电影一区二区三区
|
午夜视频在线免费观看
|
久久久精品综合
|
亚洲国产精品99久久久久久久久
|
91亚洲国产成人精品一区二三
|
韩日av片
|
无码日韩精品一区二区免费
|
国产精品3区
|
国产精品免费大片
|
色爱综合网
|
亚洲激情自拍偷拍
|
国产精品福利一区二区三区
|
久久亚洲视频网
|
成人高潮片免费视频欧美
|
久久精品亚洲国产
|
亚洲精品国产电影
|
欧美精品二区
|
福利影院在线看
|
一级二级三级黄色
|
久久久国产视频
|
老司机狠狠爱
|
亚洲成年在线
|
成人中文字幕在线
|
在线一区观看
|
国产一伦一伦一伦
|
91精品国产综合久久精品
|
日韩av免费在线观看
|
精品在线免费观看视频
|
亚洲欧美日韩久久
|
自拍在线
|
国产精品一区二区在线观看
|
日韩色图在线观看
|
www.久久.com
|
精品久
|
亚洲综合网站
|
中文字幕av高清
|
日韩一区中文字幕
|
日一日操一操
|
秋霞av国产精品一区
|
亚洲精品乱码久久久久久久久久
|
日本三级日产三级国产三级
|