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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4642|回復: 19
收起左側

好幾天了,果真無人能解嗎?對單片機printf函數的疑惑 各位大佬健康快樂

  [復制鏈接]
ID:362599 發表于 2022-9-17 12:01 | 顯示全部樓層 |閱讀模式
對printf函數的疑惑
各位大佬健康快樂!
請看如下問題:
在程序中如果嵌入了匯編語言,則printf函數就會對浮點數出錯,何耶?


#include"stdio.h"
#include"reg51.h"
float xyz=123.45;
main()
{
//串口初始化();
printf("xyz=%8.3f\n",xyz);  //此時輸出正確“xyz=123.45”
while (1);
}

在程序中如果嵌入了匯編語言,則printf函數就會對浮點數出錯,何耶?

#include"stdio.h"
#include"reg51.h"
float xyz=123.45;
main()
{
//串口初始化();
#pragma asm
NOP
#pragma endasm

printf("xyz=%8.3f\n",xyz);  //此時輸出不正確:“xyz=??”
while (1);
}
回復

使用道具 舉報

ID:123289 發表于 2022-9-17 14:17 | 顯示全部樓層
是51單片機吧。
用的是哪一款芯片?
從什么地方輸出數據的?
數據接收方是什么?
接收到的數據是如何不同的?
能否將兩個程序,生成的匯編代碼貼出來。

回復

使用道具 舉報

ID:362599 發表于 2022-9-17 16:56 | 顯示全部樓層
yzwzfyz 發表于 2022-9-17 14:17
是51單片機吧。
用的是哪一款芯片?
從什么地方輸出數據的?

是51單片機,AT89C52,程序及其簡單,插入匯編printf函數就會出錯!編譯軟件是KIEL V3~V5都一樣不行!奇怪!
回復

使用道具 舉報

ID:401564 發表于 2022-9-17 21:37 | 顯示全部樓層
C和匯編混編是給高手用的
用C就純C
用匯編就純匯編
而且,你混的匯編就是一個空指令............
回復

使用道具 舉報

ID:624769 發表于 2022-9-17 21:49 來自手機 | 顯示全部樓層
就我知道,論壇里沒幾個人玩混編,就算玩混編,應該也是多文件混編,插入式混編,本來就不好用,最后,就上個帖子我也說過,printf,玩混編的是看不上的,所以與其你要解這個問題,不如寫一個匯編的發送函數,好的多。
回復

使用道具 舉報

ID:362599 發表于 2022-9-18 06:38 | 顯示全部樓層
Y_G_G 發表于 2022-9-17 21:37
C和匯編混編是給高手用的
用C就純C
用匯編就純匯編

一條空指令意味著讓單片機用匯編執行最簡單的動作也不行。。。?磥,KIEL V3~V5技止此耳
回復

使用道具 舉報

ID:883242 發表于 2022-9-18 06:49 | 顯示全部樓層
這個問題跟匯編無關,而是在8位機這個螺螄殼里面玩兒浮點數這種大規模道場,也太不合理了。
回復

使用道具 舉報

ID:362599 發表于 2022-9-18 06:57 | 顯示全部樓層
Hephaestus 發表于 2022-9-18 06:49
這個問題跟匯編無關,而是在8位機這個螺螄殼里面玩兒浮點數這種大規模道場,也太不合理了。

據說F22里面都是4位處理器,但是現在仍然全無敵
回復

使用道具 舉報

ID:401564 發表于 2022-9-18 08:42 | 顯示全部樓層
cys9981 發表于 2022-9-18 06:38
一條空指令意味著讓單片機用匯編執行最簡單的動作也不行。。。?磥恚琄IEL V3~V5技止此耳

上一次說出這類驚世狂言的人,說是只要用0和1機器碼寫程序,我當初不懂事,還跟他說了半天的編程理論
對于你,我就不解釋了,我要去做核酸了,等下人多了不好排除了
回復

使用道具 舉報

ID:362599 發表于 2022-9-18 09:04 | 顯示全部樓層
Y_G_G 發表于 2022-9-18 08:42
上一次說出這類驚世狂言的人,說是只要用0和1機器碼寫程序,我當初不懂事,還跟他說了半天的編程理論
對于 ...

看來你就是不太董事,只能當總工師,進不了董事會了
回復

使用道具 舉報

ID:434018 發表于 2022-9-18 10:09 | 顯示全部樓層
看生成的匯編代碼,應該可以找到問題.
回復

使用道具 舉報

ID:83553 發表于 2022-9-18 12:34 | 顯示全部樓層
樓主的意思是printf輸出非浮點數是對的?
多年前我用過asm文件+c文件混編,樓主這樣用法,什么資料上有介紹?
回復

使用道具 舉報

ID:362599 發表于 2022-9-18 15:17 | 顯示全部樓層
mcza30 發表于 2022-9-18 12:34
樓主的意思是printf輸出非浮點數是對的?
多年前我用過asm文件+c文件混編,樓主這樣用法,什么資料上有介 ...

KIEL V3~V5均允許示例程序中的匯編語句的嵌入混編。
回復

使用道具 舉報

ID:883242 發表于 2022-9-18 18:21 | 顯示全部樓層
cys9981 發表于 2022-9-18 06:57
據說F22里面都是4位處理器,但是現在仍然全無敵

誰跟說的?能不能不造謠???F-22的CIP(central integrated processor)用的是i960MX,90年代RISC處理器大行其道的時候,intel推出來的試水之作,性能相當于高端486或者最低端Pentium。CIP一個cluster有35個i960MX。中國進入網絡時代已經二十多年了,還在傳播這種低級趣味的無根據小道消息有意思嗎?
回復

使用道具 舉報

ID:429003 發表于 2022-9-19 09:42 | 顯示全部樓層
先檢查一下,標準庫的鏈接設置是否一樣的! 如果在一工程配置下,出現這種問題,是挺費解的,printf如果要正常工作,須保證兩點:1.正確的配置標準庫。2:對于浮點數的處理,堆棧指針至少8字節對齊!還有一個可能,是不是堆棧設計太小,進入main時,堆棧已經溢出了???仔細檢查,這類問題看似摸不到頭腦,問題根源可能只是個很簡單的配置錯誤。
回復

使用道具 舉報

ID:83553 發表于 2022-9-19 10:32 | 顯示全部樓層
cys9981 發表于 2022-9-18 15:17
KIEL V3~V5均允許示例程序中的匯編語句的嵌入混編。

謝謝。
回復

使用道具 舉報

ID:748788 發表于 2022-9-19 10:41 | 顯示全部樓層
如果樓主懷疑是編譯的問題,那就只能找keil說道說道了。一般用戶遇到編譯問題還是能繞就繞吧,寫程序還是要靈活一些的。
回復

使用道具 舉報

ID:1045193 發表于 2022-9-19 16:52 | 顯示全部樓層
出現以下錯誤:
error C272: 'asm/endasm' requires src-control to be active
解決方法:在 Files Toolbar 中選中當前C51文件,點右鍵查看文件選項,將 Generate Assembler SRC File 與 Assemble SRC File 的勾選由灰色變為黑色,即使這兩項有效!
這時進行編譯沒有問題,但是Link時產生了兩個警告:
*** WARNING L1: UNRESOLVED EXTERNAL SYMBOL
*** WARNING L2: REFERENCE MADE TO UNRESOLVED EXTERNAL
解決方法是需要在 Source Group 中添加一個 LIB 文件,根據內容不同有所區別:
C51S.LIB - 沒有浮點運算的 Small model
C51C.LIB - 沒有浮點運算的 Compact model
C51L.LIB - 沒有浮點運算的 Large model
C51FPS.LIB - 帶浮點運算的 Small model
回復

使用道具 舉報

ID:883242 發表于 2022-9-20 23:39 | 顯示全部樓層
wwh2382 發表于 2022-9-19 10:41
如果樓主懷疑是編譯的問題,那就只能找keil說道說道了。一般用戶遇到編譯問題還是能繞就繞吧,寫程序還是要 ...

Keil搞了這么多年,比論壇大部分人的年紀都大,怎么可能有隨便哪個貓々狗々能找出的bug?

太多的細節問題能造成錯誤,隨便舉例,樓主用的是#include<reg51.h>那么能直接訪問的ram只有128字節,鏈接可能用256字節單片機,實際用的是什么?鬼都不知道!
回復

使用道具 舉報

ID:362599 發表于 2022-9-21 06:53 | 顯示全部樓層
即便是#include<reg58.h>也不行!歲數大小與學識無關!太老了就會得阿爾茨海默癥。。。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 免费久久网站 | 久久国产精品亚洲 | 国产成人精品一区二区三区四区 | 视频精品一区 | 久久精品视频免费观看 | 国产精品久久国产精品 | 在线欧美视频 | 亚洲一级二级三级 | 一区二区三区视频在线免费观看 | 亚洲 欧美 日韩 在线 | 免费观看视频www | 日韩在线日韩 | 中文字幕一区二区三区日韩精品 | 日本视频免费观看 | 亚洲综合激情 | 91视频进入 | 日韩欧美一级 | 97精品超碰一区二区三区 | 午夜精品影院 | 91精品国产综合久久精品图片 | 操久久| 国产精品久久久久久久久久久久久 | 日韩精品免费看 | 国产草草视频 | 色婷婷精品久久二区二区蜜臂av | 最新中文字幕在线 | 久久夜视频 | 久久久av一区 | 一区中文字幕 | 亚洲成人一级 | 久久伊 | 精品毛片在线观看 | 99在线视频观看 | 中文字幕 视频一区 | 午夜精品一区二区三区在线视 | 国产精品国产三级国产aⅴ无密码 | 中文字幕成人av | 伊人春色在线观看 | 免费在线观看黄视频 | 亚洲精品在线免费看 | 综合亚洲视频 |