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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索

MCU將8位AD采集到的值轉換成實際值遇到的坑求解

查看數: 2906 | 評論數: 6 | 收藏 0
關燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請稍候......
發布時間: 2021-3-31 04:19

正文摘要:

MCU AD采集到的值dat從二進制轉換成10進制實際電壓值輸出中遇到了一些問題 采集到電壓值dat區間在0-255之間,實際參考位5V,講采集到的值做運算,輸出實際電壓值 1.unsigned char型的變量轉換成int型,為什么需要 ...

回復

ID:250416 發表于 2021-4-1 08:23
sdarling 發表于 2021-4-1 00:51
為什么uchar型的dat和500先運算,是以int型輸出而不是以char型嗎,是因為前邊變量temp的緣故?

uchar型dat和500運算是int型,因為500是int型常量
ID:886945 發表于 2021-4-1 00:51
張天師 發表于 2021-3-31 09:11
dat為0-255,那么500*dat最大值為127500。這里存在C語言運算類型轉換原則,,500*1.0就轉換為float運算,其 ...

為什么uchar型的dat和500先運算,是以int型輸出而不是以char型嗎,是因為前邊變量temp的緣故?
ID:886945 發表于 2021-4-1 00:49
liujunping11 發表于 2021-3-31 13:21
如果dat值為255,則temp11為500,遠遠大于255,8位無法表示,所以亂碼

temp是int型,而且你這里理解是錯了,不管怎么算 temp都是要大于255的,我現在有問題的是這個運算順序,1.0放在變量dat前邊還是放在dat后邊相乘,兩個結果是不一樣的
ID:712560 發表于 2021-3-31 13:21
如果dat值為255,則temp11為500,遠遠大于255,8位無法表示,所以亂碼

評分

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

查看全部評分

ID:814525 發表于 2021-3-31 09:11
dat為0-255,那么500*dat最大值為127500。這里存在C語言運算類型轉換原則,,500*1.0就轉換為float運算,其類型是32位,500*1.0*dat其值不會溢出;而500*dat*1.0,就先以int類型運算再以浮點運算,而int運算時,有可能已經溢出了,結果就出錯。所以運算的類型及前后順序很重要,這就是稍不注意就出錯的原因

評分

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

查看全部評分

ID:886945 發表于 2021-3-31 04:26
我看別人的程序,這個1.0放在變量后邊都沒問題,編譯器問題?看視屏里用的keil4,我用的keil5

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表