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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

STC89C52單片機的除法運算問題

  [復制鏈接]
跳轉到指定樓層
樓主
想請教各位大佬關于STC89C52除法的問題。
大概就是發現程序在沒有準確算出這個式子的結果,調試出來的結果也很奇怪。
個人猜測是和STC89C52只有8位有關,但是由于自己單片機原理方面不太懂,所以想請教一下大家。

2.png (3.19 KB, 下載次數: 62)

調試結果

調試結果

1.png (4.31 KB, 下載次數: 70)

算式

算式
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:390416 發表于 2021-3-12 16:35 | 只看該作者
這個叫 取模,也就是 除法運算 保留了商 丟棄了余數   ,取余用%
回復

使用道具 舉報

板凳
ID:367369 發表于 2021-3-12 16:55 | 只看該作者
不應該吧,是不是其他地方把改變值了?
計算的時候應該是有高位寄存器和低位寄存器啊,
像定時器初始化時就寫到過(65535 - 1000) /  256

評分

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

查看全部評分

回復

使用道具 舉報

地板
ID:550952 發表于 2021-3-12 17:03 | 只看該作者
game灬boy 發表于 2021-3-12 16:55
不應該吧,是不是其他地方把改變值了?
計算的時候應該是有高位寄存器和低位寄存器啊,
像定時器初始化時 ...

這是我特意新建的一個工程,整個代碼就下面幾句
#include <reg52.h>
void main(void)
{
        unsigned int temp;
       
        temp = 200*255/500;
}
回復

使用道具 舉報

5#
ID:451718 發表于 2021-3-12 17:13 | 只看該作者
確實碰到過這類問題,我的解決方案是:
unsigned int a , temp;
a = 200*255;
temp = a / 500;
這樣就不會有錯,估計是編譯器的問題。

評分

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

查看全部評分

回復

使用道具 舉報

6#
ID:213173 發表于 2021-3-12 21:41 | 只看該作者
本帖最后由 wulin 于 2021-3-12 21:48 編輯

強制轉換數據類型,200和255默認為unsigned char型,500默認為unsigned int型。類型統一就不會錯了。
tepm=(unsigned int)(200*255)/500;也可以分兩步計算也不會錯。
tepm=200*255;
tepm=tepm/500;

評分

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

查看全部評分

回復

使用道具 舉報

7#
ID:605142 發表于 2021-3-12 22:02 | 只看該作者
編譯器默認是按有符號16位運行,200*255溢出了
a=200u*255/500應該可行

評分

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

查看全部評分

回復

使用道具 舉報

8#
ID:605142 發表于 2021-3-12 22:07 | 只看該作者


評分

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

查看全部評分

回復

使用道具 舉報

9#
ID:879348 發表于 2021-3-13 08:18 | 只看該作者
也可能是temp沒有用,被優化了,整個除法沒有執行

評分

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

查看全部評分

回復

使用道具 舉報

10#
ID:783421 發表于 2021-3-13 14:30 來自手機 | 只看該作者
數字有沒有溢出?
回復

使用道具 舉報

11#
ID:487569 發表于 2021-3-14 17:47 | 只看該作者
void main(void) {         unsigned int temp,a;                  temp = 200*255/500;a=temp; }.試試這個,然后你再看運算結果。我懷疑你并沒有執行運算,你定義temp的時候沒有賦初值,Value=0XFFE可能是temp運算之前的隨機值,按我給出的例子,當你指針指到a=temp;的時候再看temp的值

評分

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

查看全部評分

回復

使用道具 舉報

12#
ID:287575 發表于 2021-3-14 23:50 | 只看該作者
        unsigned int temp;
        temp=100*155/500;

51hei瀏覽器截圖20210314234538.png (4.27 KB, 下載次數: 58)

51hei瀏覽器截圖20210314234538.png
回復

使用道具 舉報

13#
ID:287575 發表于 2021-3-14 23:51 | 只看該作者
我測試正確的,結果是0x001F
回復

使用道具 舉報

14#
ID:550952 發表于 2021-3-15 12:09 | 只看該作者
感謝各位大佬的耐心解答,我參考了這篇帖子
https://blog.csdn.net/avideointerfaces/article/details/27512485
應該是溢出了
回復

使用道具 舉報

15#
ID:232366 發表于 2021-3-15 21:53 來自手機 | 只看該作者
hefq 發表于 2021-3-12 22:07

大佬你的keil配色可以分享一下嗎?
回復

使用道具 舉報

16#
ID:304608 發表于 2021-3-18 11:28 | 只看該作者
王快活。 發表于 2021-3-15 12:09
感謝各位大佬的耐心解答,我參考了這篇帖子
https://blog.csdn.net/avideointerfaces/article/details/275 ...

我覺得樓上說的對,可能是被優化了
回復

使用道具 舉報

17#
ID:304608 發表于 2021-3-18 11:30 | 只看該作者
王快活。 發表于 2021-3-15 12:09
感謝各位大佬的耐心解答,我參考了這篇帖子
https://blog.csdn.net/avideointerfaces/article/details/275 ...

你修改代碼再試一下, volatile unsigned int temp;  增加一個關鍵字試試
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲免费视频一区 | 免费激情 | 夜夜艹天天干 | 精品日韩欧美一区二区 | av网站在线看 | 亚洲日本国产 | 日韩欧美国产成人一区二区 | 国产综合第一页 | 欧美在线视频网站 | 中文字幕人成乱码在线观看 | 日本电影韩国电影免费观看 | 久久亚洲一区二区三区四区 | 国产日韩一区二区 | 中文字幕久久久 | 日韩欧美在线一区 | 久久久久久久久久久国产 | 精品视频一区二区三区在线观看 | 伊人超碰在线 | 成人亚洲片| 日韩欧美在线一区 | 一区二区三区视频在线 | 亚洲伊人久久综合 | 日韩午夜精品 | 亚洲综合色网 | 日韩精品a在线观看图片 | 在线视频 亚洲 | 国产91在线 | 亚洲 | 暴草美女 | 欧美性大战xxxxx久久久 | 性国产丰满麻豆videosex | 在线看av的网址 | 日韩综合| 亚洲视频免费 | 亚洲精品欧美 | 欧美精品在线观看 | 中文字幕在线免费观看 | 精品久久国产 | 欧美一级黄视频 | 特级特黄特色的免费大片 | 日韩在线观看 | 99精品免费视频 |