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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 6588|回復(fù): 79
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)C語(yǔ)言程序奇怪的問(wèn)題,我沒(méi)有考慮到什么?

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:776619 發(fā)表于 2022-6-2 20:55 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
       原理:開(kāi)機(jī)時(shí)讀入1302時(shí)間,記住分鐘初值,同時(shí)打開(kāi)繼電器,接通wifi電源。在while(1)循環(huán)內(nèi)不斷的看1302的分鐘
值,如果大于5分鐘就關(guān)wifi。現(xiàn)在出現(xiàn)的問(wèn)題是開(kāi)機(jī)差不多不滿(mǎn)1分鐘就關(guān)機(jī)了。if內(nèi)的條件
((gds1302_time[1]/16*10+gds1302_time[1]%16-5)>(offpower)),如果把大于號(hào)改==就可以實(shí)現(xiàn)5分鐘關(guān)wifi。


       現(xiàn)在想請(qǐng)問(wèn)一下高手為什么我在條件里用>號(hào)不可以呢?==就可以?

單片機(jī)源程序如下:

...............;
unsigned char gds1302_time[7];                               //1302時(shí)鐘數(shù)組
............;
unsigned char offpower;                                         //開(kāi)機(jī)時(shí)分鐘值
sbit  wifi_power=P1^5;                                         //繼電器
..........;
main()
{
.........;
.........;
ds1302_read_time();                                                       //讀入1302時(shí)間值,放數(shù)組gds1302_time里,[1]里的是分鐘。
offpower=gds1302_time[1]/16*10+gds1302_time[1]%16; //分鐘轉(zhuǎn)為數(shù)值,此變量為開(kāi)機(jī)分鐘初始值
if (offpower>49) offpower=0;                                         //將與下面的量比定時(shí)最大十分鐘

wifi_power=0;                                                                //打開(kāi)繼電器,wifi通電。
...................;
...................;
while (1)
    {
      ..........;
      .........;
     ds1302_read_time();                                                                    //動(dòng)態(tài)讀入時(shí)間值
     if ((gds1302_time[1]/16*10+gds1302_time[1]%16-5)>(offpower))  //轉(zhuǎn)化為現(xiàn)時(shí)分鐘后與開(kāi)機(jī)時(shí)分鐘比較(現(xiàn)定時(shí)5                                                                                                      //分鐘)
                {                                                                                    //大于5分鐘后關(guān)wifi電源
                 wifi_power=1;
                 offpower=0xff;                                                              //同時(shí)比較初值設(shè)為255,因?yàn)?302時(shí)鐘原理,它永
                                                                                                    //遠(yuǎn)不會(huì)大于59,以后只要不關(guān)機(jī)再開(kāi),永遠(yuǎn)不合if
                                                                                                    //條件。
                }         
     ..................;
     .................;
     }

}



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

使用道具 舉報(bào)

沙發(fā)
ID:776619 發(fā)表于 2022-6-2 21:57 | 只看該作者
     想了一下,初值取模有點(diǎn)問(wèn)題如果是定時(shí)10分鐘,應(yīng)當(dāng)是offpower>49時(shí),offpwoer應(yīng)當(dāng)是offpwoer+10-60。當(dāng)然我在上面列出的程序是定時(shí)5分鐘,則為offpower>55時(shí),offpwoer應(yīng)當(dāng)是offpwoer+5-60。
     現(xiàn)在不說(shuō)模的問(wèn)題,是在時(shí)間為20幾分鐘時(shí)開(kāi)機(jī)它不按我的定時(shí)分鐘關(guān)電,而是差不多1分鐘就關(guān)電了,改>于號(hào)為==就可以。
回復(fù)

使用道具 舉報(bào)

板凳
ID:883242 發(fā)表于 2022-6-2 22:07 | 只看該作者
如果沒(méi)有仿真器,那么用串口把(gds1302_time[1]/16*10+gds1302_time[1]%16-5)和(offpower)兩個(gè)值打印出來(lái)看看。
回復(fù)

使用道具 舉報(bào)

地板
ID:230742 發(fā)表于 2022-6-2 22:24 | 只看該作者
如果只是5分鐘后關(guān)閉什么東西,不用1302也行。直接用定時(shí)器計(jì)時(shí)簡(jiǎn)單一點(diǎn)。
回復(fù)

使用道具 舉報(bào)

5#
ID:776619 發(fā)表于 2022-6-2 22:25 | 只看該作者
Hephaestus 發(fā)表于 2022-6-2 22:07
如果沒(méi)有仿真器,那么用串口把(gds1302_time[1]/16*10+gds1302_time[1]%16-5)和(offpower)兩個(gè)值打印出來(lái)看 ...

好主意,在滿(mǎn)足條件語(yǔ)句里打印。但現(xiàn)在我想問(wèn)的是為什么>不行,==就可以,是不是單片機(jī)把條件當(dāng)作賦值語(yǔ)句什么的了,比如我在這里改>號(hào)為單=號(hào),大多數(shù)情況它的條件不為零,它會(huì)同樣是一執(zhí)行到就關(guān)電。
回復(fù)

使用道具 舉報(bào)

6#
ID:776619 發(fā)表于 2022-6-2 22:32 | 只看該作者
啤酒瓶子老大 發(fā)表于 2022-6-2 22:24
如果只是5分鐘后關(guān)閉什么東西,不用1302也行。直接用定時(shí)器計(jì)時(shí)簡(jiǎn)單一點(diǎn)。

不想浪費(fèi)定時(shí)器資源。我這個(gè)是1302時(shí)鐘程序,wifi每天對(duì)時(shí),當(dāng)然對(duì)時(shí)完成wifi會(huì)關(guān)電。現(xiàn)在是在wifi連不上網(wǎng)的時(shí)候就不對(duì)時(shí)了,一定時(shí)間關(guān)wifi,節(jié)能。
回復(fù)

使用道具 舉報(bào)

7#
ID:776619 發(fā)表于 2022-6-2 22:36 | 只看該作者
Hephaestus 發(fā)表于 2022-6-2 22:07
如果沒(méi)有仿真器,那么用串口把(gds1302_time[1]/16*10+gds1302_time[1]%16-5)和(offpower)兩個(gè)值打印出來(lái)看 ...

其實(shí)打印出來(lái)也沒(méi)有用,開(kāi)機(jī)到條件滿(mǎn)足就一兩分鐘,打印出來(lái)的數(shù)據(jù)對(duì)分析作用不太大。無(wú)非是我的初值加1兩分鐘。
回復(fù)

使用道具 舉報(bào)

8#
ID:645485 發(fā)表于 2022-6-2 22:45 | 只看該作者
本帖最后由 tongguan123 于 2022-6-2 23:14 編輯
Hephaestus 發(fā)表于 2022-6-2 22:07
如果沒(méi)有仿真器,那么用串口把(gds1302_time[1]/16*10+gds1302_time[1]%16-5)和(offpower)兩個(gè)值打印出來(lái)看 ...

首先說(shuō)明一下,我也是一名初學(xué)者啊。
你所說(shuō)的通過(guò)串口把這兩個(gè)值打印出來(lái),是不是在編程序時(shí)候,分別將這兩個(gè)公式計(jì)算的值賦值給兩個(gè)變量,然后通過(guò)串口發(fā)送出來(lái)???
回復(fù)

使用道具 舉報(bào)

9#
ID:161164 發(fā)表于 2022-6-2 23:07 | 只看該作者
要不改成這樣試試
  1. while (1)
  2.     {
  3.       ..........;
  4.       .........;
  5.      ds1302_read_time();                                                                    //動(dòng)態(tài)讀入時(shí)間值
  6.          CurrentTime = gds1302_time[1]/16*10+gds1302_time[1]%16;//<<<<<<<<<<<<<<<<<<<<<<<<<<<<
  7.      if (CurrentTime - offpower >= 5)  //轉(zhuǎn)化為現(xiàn)時(shí)分鐘后與開(kāi)機(jī)時(shí)分鐘比較(現(xiàn)定時(shí)5                                                                                                      //分鐘)
  8.                 {                                                                                    //大于5分鐘后關(guān)wifi電源
  9.                  wifi_power=1;
  10.                  offpower=0xff;                                                              //同時(shí)比較初值設(shè)為255,因?yàn)?302時(shí)鐘原理,它永
  11.                                                                                                     //遠(yuǎn)不會(huì)大于59,以后只要不關(guān)機(jī)再開(kāi),永遠(yuǎn)不合if
  12.                                                                                                     //條件。
  13.                 }         
  14.      ..................;
  15.      .................;
  16.      }
復(fù)制代碼




回復(fù)

使用道具 舉報(bào)

10#
ID:776619 發(fā)表于 2022-6-2 23:09 | 只看該作者
tongguan123 發(fā)表于 2022-6-2 22:45
首先說(shuō)明一下,我也是一名初學(xué)者啊。
你所說(shuō)的通過(guò)串口把這兩個(gè)值打印出來(lái),是不是在編程序時(shí)候, ...

條件滿(mǎn)足時(shí)在進(jìn)入里面的語(yǔ)句加才有效,要不循環(huán)內(nèi)我的時(shí)間值在不斷的讀不斷的變。
回復(fù)

使用道具 舉報(bào)

11#
ID:645485 發(fā)表于 2022-6-2 23:13 | 只看該作者
作為一名菜鳥(niǎo),只能這樣分析了,看圖說(shuō)話(huà)!





所以-------------------------------------

回復(fù)

使用道具 舉報(bào)

12#
ID:645485 發(fā)表于 2022-6-2 23:17 | 只看該作者
wolfinn 發(fā)表于 2022-6-2 21:57
想了一下,初值取模有點(diǎn)問(wèn)題如果是定時(shí)10分鐘,應(yīng)當(dāng)是offpower>49時(shí),offpwoer應(yīng)當(dāng)是offpwoer+10-60。 ...
所以你那個(gè)取模應(yīng)該是沒(méi)問(wèn)題的。
回復(fù)

使用道具 舉報(bào)

13#
ID:776619 發(fā)表于 2022-6-2 23:18 | 只看該作者
lkc8210 發(fā)表于 2022-6-2 23:07
要不改成這樣試試

謝謝你,我估計(jì)你這想法也是可以的,因?yàn)槲矣?=也是可以通過(guò)的。

其實(shí)寫(xiě)這程序出來(lái)只是提供一個(gè)思路,怎樣運(yùn)行一段時(shí)間關(guān)一個(gè)東西,我這里利用上了1302時(shí)鐘的分鐘功能,當(dāng)然用定時(shí)器0也是可以的。
程序用于GPS、Wifi雙模塊每天定時(shí)對(duì)1302對(duì)時(shí),關(guān)電再也可以對(duì)時(shí)一次。

我想了解的是邏輯語(yǔ)句的>號(hào)和==為什么會(huì)有這效果,是不是==號(hào)有強(qiáng)制數(shù)據(jù)轉(zhuǎn)換功能。而>號(hào)就沒(méi)有。而表達(dá)式的左邊是不是為INT整形了,而右邊是字符形,不轉(zhuǎn)換類(lèi)型的話(huà)是不是INT整形永遠(yuǎn)大于任何一個(gè)字符形。
回復(fù)

使用道具 舉報(bào)

14#
ID:645485 發(fā)表于 2022-6-2 23:21 | 只看該作者
wolfinn 發(fā)表于 2022-6-2 23:09
條件滿(mǎn)足時(shí)在進(jìn)入里面的語(yǔ)句加才有效,要不循環(huán)內(nèi)我的時(shí)間值在不斷的讀不斷的變。
ok,了解!Thanks, my brother!
回復(fù)

使用道具 舉報(bào)

15#
ID:776619 發(fā)表于 2022-6-2 23:22 | 只看該作者
tongguan123 發(fā)表于 2022-6-2 23:17
所以你那個(gè)取模應(yīng)該是沒(méi)問(wèn)題的。

程序里沒(méi)有寫(xiě)-60,當(dāng)然這里不是討論這個(gè)模的問(wèn)題,最多是在變模處會(huì)有1~10分鐘的不規(guī)則定時(shí)。
回復(fù)

使用道具 舉報(bào)

16#
ID:776619 發(fā)表于 2022-6-2 23:27 | 只看該作者
tongguan123 發(fā)表于 2022-6-2 23:13
作為一名菜鳥(niǎo),只能這樣分析了,看圖說(shuō)話(huà)!

你錯(cuò)了,如你所說(shuō),1302取出的數(shù)是0x24,而不是24,所以如果要數(shù)碼管顯示的話(huà)得2后直接查2的段碼顯示就行,余4也同樣查4的段碼。如在LED等顯示要加0x30或48,或‘ ’空格。2要加,4也要加。
回復(fù)

使用道具 舉報(bào)

17#
ID:645485 發(fā)表于 2022-6-2 23:31 | 只看該作者
wolfinn 發(fā)表于 2022-6-2 23:22
程序里沒(méi)有寫(xiě)-60,當(dāng)然這里不是討論這個(gè)模的問(wèn)題,最多是在變模處會(huì)有1~10分鐘的不規(guī)則定時(shí)。
因?yàn)槟阍O(shè)置的時(shí)間剛好是五分鐘就要執(zhí)行關(guān)閉WIFI電源,所以按照你那個(gè)if里面取模公式,必須要等于==offpower,才滿(mǎn)足條件,即條件為真,才執(zhí)行里面的語(yǔ)句!
回復(fù)

使用道具 舉報(bào)

18#
ID:645485 發(fā)表于 2022-6-2 23:39 | 只看該作者
所以這條語(yǔ)句應(yīng)該不會(huì)執(zhí)行吧?   if (offpower>49) offpower=0;      //將與下面的量比定時(shí)最大十分鐘
回復(fù)

使用道具 舉報(bào)

19#
ID:776619 發(fā)表于 2022-6-2 23:48 | 只看該作者
tongguan123 發(fā)表于 2022-6-2 23:31
因?yàn)槟阍O(shè)置的時(shí)間剛好是五分鐘就要執(zhí)行關(guān)閉WIFI電源,所以按照你那個(gè)if里面取模公式,必須要等于==offpowe ...

你沒(méi)有明白,我不是要求必須要==才關(guān)電,而是>于也可以,只要關(guān)了就行。
比如我取初值時(shí)為58,程序里認(rèn)為大于49了,初值為0.然后過(guò)三分鐘,時(shí)間為01,大于00了,關(guān)電,達(dá)不到10分鐘的定時(shí)要求。加上模就不同了,58+10-60=08分鐘,到09才關(guān)電.

同樣5分鐘的定時(shí)模也一樣。我取初值時(shí)為58,程序里認(rèn)為大于55了,初值為0.然后過(guò)三分鐘,時(shí)間為01,大于00了,關(guān)電,達(dá)不到5分鐘的定時(shí)要求。加上模就不同了,58+5-60=03分鐘,到04才關(guān)電.
回復(fù)

使用道具 舉報(bào)

20#
ID:883242 發(fā)表于 2022-6-2 23:50 | 只看該作者
tongguan123 發(fā)表于 2022-6-2 23:39
所以這條語(yǔ)句應(yīng)該不會(huì)執(zhí)行吧?   if (offpower>49) offpower=0;      //將與下面的量比定時(shí)最大十分鐘

你明顯不對(duì),如果是59分,那么是0x59/16*10
回復(fù)

使用道具 舉報(bào)

21#
ID:776619 發(fā)表于 2022-6-2 23:50 | 只看該作者
tongguan123 發(fā)表于 2022-6-2 23:39
所以這條語(yǔ)句應(yīng)該不會(huì)執(zhí)行吧?   if (offpower>49) offpower=0;      //將與下面的量比定時(shí)最大十分鐘

時(shí)間分鐘是59,但是1302讀出的是0x59,而不是值是59,值是5*16+9=89
回復(fù)

使用道具 舉報(bào)

22#
ID:883242 發(fā)表于 2022-6-2 23:52 | 只看該作者
tongguan123 發(fā)表于 2022-6-2 22:45
本帖最后由 tongguan123 于 2022-6-2 23:14 編輯

首先說(shuō)明一下,我也是一名初學(xué)者啊。

對(duì)啊!這樣才能知道這兩個(gè)值到底是什么,而不是樓主夢(mèng)想中的值。
回復(fù)

使用道具 舉報(bào)

23#
ID:645485 發(fā)表于 2022-6-3 00:02 | 只看該作者
wolfinn 發(fā)表于 2022-6-2 23:50
時(shí)間分鐘是59,但是1302讀出的是0x59,而不是值是59,值是5*16+9=89

OK!
回復(fù)

使用道具 舉報(bào)

24#
ID:776619 發(fā)表于 2022-6-3 00:05 | 只看該作者
tongguan123 發(fā)表于 2022-6-2 23:39
所以這條語(yǔ)句應(yīng)該不會(huì)執(zhí)行吧?   if (offpower>49) offpower=0;      //將與下面的量比定時(shí)最大十分鐘

你別跟我糾結(jié)模的問(wèn)題啦,在40以下不跟模運(yùn)算有關(guān)的用 >都出現(xiàn)點(diǎn)問(wèn)題,模我改了以后沒(méi)問(wèn)題的了。還有你對(duì)1302取出的數(shù)不了解,它用的是BCD碼表示一位數(shù)值,是多少分鐘就是0x多少,小時(shí)、年、月、日、秒都一樣。BCD是用四位二進(jìn)制表示一位數(shù)字,我們就理解直讀就行。比如0x59,就是0101 1001,為什么這么表示而不用89(10進(jìn)制)。用BCD碼以后顯示運(yùn)算方便啊。好象書(shū)上寫(xiě)過(guò)最快的是移位和位運(yùn)算吧,如果右移四,      
0000 0101 5這個(gè)數(shù)不是出來(lái)了?再位運(yùn)算與0F,0000 1001不是出來(lái)了。當(dāng)然我在程序里用什么除16乘10再加16的余數(shù)也是一樣的。
回復(fù)

使用道具 舉報(bào)

25#
ID:776619 發(fā)表于 2022-6-3 00:07 | 只看該作者
只是討論,討論才讓人明白,并不是顯示我多懂,是想讓我懂的東西別人也懂了。
回復(fù)

使用道具 舉報(bào)

26#
ID:645485 發(fā)表于 2022-6-3 00:12 | 只看該作者
wolfinn 發(fā)表于 2022-6-3 00:05
你別跟我糾結(jié)模的問(wèn)題啦,在40以下不跟模運(yùn)算有關(guān)的用 >都出現(xiàn)點(diǎn)問(wèn)題,模我改了以后沒(méi)問(wèn)題的了。還有你對(duì) ...

好吧!
回復(fù)

使用道具 舉報(bào)

27#
ID:776619 發(fā)表于 2022-6-3 00:13 | 只看該作者

好吧,再說(shuō)回轉(zhuǎn)問(wèn)題,是不是拿89當(dāng)59運(yùn)算呢。不是的,還是得算回59,就是89/16,再89%16,當(dāng)然可以寫(xiě)0x59/16+0x59%16直觀(guān)點(diǎn),砍一個(gè)位的數(shù)就行。
回復(fù)

使用道具 舉報(bào)

28#
ID:776619 發(fā)表于 2022-6-3 00:28 | 只看該作者

再說(shuō)一個(gè),比如我們要LED十六進(jìn)制顯示出一個(gè)數(shù),我們知道它的值是0x6B(107十進(jìn)制),先原樣字符0x,再經(jīng)過(guò)運(yùn)算得6(0x36,即6+0x30),再輸出B(是不是0x3B?不是的,0~9要字符顯示是加0x30,余數(shù)大于10以上的A~F要加0x37才正常顯示。如要顯示0x6b,這樣B小寫(xiě),同樣余數(shù)大于10以上的a~f也不能加0x37了,要加什么,我還沒(méi)算,自己查ASCII表也可以算出來(lái)。
回復(fù)

使用道具 舉報(bào)

29#
ID:624769 發(fā)表于 2022-6-3 00:34 | 只看該作者
我不知道為什么你要用這么復(fù)雜的算法……
不知道乘除法非常費(fèi)資源的么? 而且跨60的時(shí)候,還要策略去補(bǔ)償,
只是要計(jì)算多少分鐘,這樣不是最穩(wěn)妥?

void main()
{
offpower = 100;

while(1)
{
........................
     if(offpower)       //非0才進(jìn)入
     {
           if(temp != gds1302_time[1])
           {
                    temp = gds1302_time[1];
                    if(++offpower  > 105)
                    {
                              wifi_power=1;
                              offpower = 0;  
                     }
            }
}
}

回復(fù)

使用道具 舉報(bào)

30#
ID:776619 發(fā)表于 2022-6-3 00:37 | 只看該作者
wolfinn 發(fā)表于 2022-6-3 00:28
再說(shuō)一個(gè),比如我們要LED十六進(jìn)制顯示出一個(gè)數(shù),我們知道它的值是0x6B(107十進(jìn)制),先原樣字符0x,再經(jīng) ...

小寫(xiě)表示a~f要加0x57。
回復(fù)

使用道具 舉報(bào)

31#
ID:776619 發(fā)表于 2022-6-3 00:50 | 只看該作者
188610329 發(fā)表于 2022-6-3 00:34
我不知道為什么你要用這么復(fù)雜的算法……
不知道乘除法非常費(fèi)資源的么? 而且跨60的時(shí)候,還要策略去補(bǔ)償 ...

多謝指導(dǎo),你的才真的高。學(xué)習(xí)。
總會(huì)有問(wèn)題的,你怎不查下為什么我會(huì)出這種小問(wèn)題?是數(shù)據(jù)左右不同?
另外單片機(jī)用數(shù)組多了會(huì)有數(shù)據(jù)重疊現(xiàn)象,當(dāng)然對(duì)結(jié)果沒(méi)有大影響,就是會(huì)影響LED顯示,有什么解決方法?
回復(fù)

使用道具 舉報(bào)

32#
ID:624769 發(fā)表于 2022-6-3 13:12 | 只看該作者
wolfinn 發(fā)表于 2022-6-3 00:50
多謝指導(dǎo),你的才真的高。學(xué)習(xí)。
總會(huì)有問(wèn)題的,你怎不查下為什么我會(huì)出這種小問(wèn)題?是數(shù)據(jù)左右不同?
...

查問(wèn)題, 是需要標(biāo)本的……, 樓上好多層都讓你回傳數(shù)據(jù),你覺(jué)得沒(méi)有意義。那么很多東西是沒(méi)有辦法分析的……

給你前面那個(gè)代碼,說(shuō)實(shí)話(huà),其實(shí)我是打算在你不愿意采集標(biāo)本的前提下,通過(guò)我比較確認(rèn)的代碼變相的采集標(biāo)本。

非要拿你的代碼來(lái)說(shuō)的話(huà)……,至少我看下來(lái),除了:
if (offpower>49) offpower=0;                                         //將與下面的量比定時(shí)最大十分鐘
這個(gè)帶來(lái)很多問(wèn)題之外,
理論上,如果你在 20分左右的時(shí)候,開(kāi)機(jī),應(yīng)該是可以5分鐘關(guān)機(jī)的。

非要我給你一個(gè)方案的話(huà),我以為:

ds1302_read_time();                                                                    //動(dòng)態(tài)讀入時(shí)間值
if((gds1302_time[1] < 0x60) && ((gds1302_time[1] & 0x0f)< 0x0A))     //這里增加一個(gè)判斷{
     if ((gds1302_time[1]/16*10+gds1302_time[1]%16-5)>(offpower))  //轉(zhuǎn)化為現(xiàn)時(shí)分鐘后與開(kāi)機(jī)時(shí)分鐘比較(現(xiàn)定時(shí)5                                                                                                      //分鐘)
                {                                                                                    //大于5分鐘后關(guān)wifi電源
                 wifi_power=1;
                 offpower=0xff;                                                              //同時(shí)比較初值設(shè)為255,因?yàn)?302時(shí)鐘原理,它永
                                                                                                    //遠(yuǎn)不會(huì)大于59,以后只要不關(guān)機(jī)再開(kāi),永遠(yuǎn)不合if
                                                                                                    //條件。
                }

}

應(yīng)該可以解決你的問(wèn)題。
至于原因,我相信,當(dāng)你這么寫(xiě)確實(shí)解決問(wèn)題了之后,你就明白為什么了。
回復(fù)

使用道具 舉報(bào)

33#
ID:776619 發(fā)表于 2022-6-3 20:26 | 只看該作者
188610329 發(fā)表于 2022-6-3 13:12
查問(wèn)題, 是需要標(biāo)本的……, 樓上好多層都讓你回傳數(shù)據(jù),你覺(jué)得沒(méi)有意義。那么很多東西是沒(méi)有辦法分析的 ...

唉,轉(zhuǎn)模處不討論,這東西經(jīng)過(guò)我進(jìn)行轉(zhuǎn)模處理后是沒(méi)有問(wèn)題的了。我是想讓高手你以你的經(jīng)驗(yàn)看看條件中同樣是關(guān)系表達(dá)式,為什么用>號(hào)不行,==號(hào)反倒可以,同時(shí)我也試過(guò)了>=也同樣不行的哈。如果是純粹地為了讓程序運(yùn)行得了,通得過(guò)。用==就是了,或者用你那高效率的奇妙寫(xiě)法就行。可能還是數(shù)據(jù)轉(zhuǎn)換的問(wèn)題,因?yàn)槲沂侵苯颖磉_(dá)式,如果放一有類(lèi)型變量后再比較可能會(huì)好。
回復(fù)

使用道具 舉報(bào)

34#
ID:624769 發(fā)表于 2022-6-3 23:28 | 只看該作者
wolfinn 發(fā)表于 2022-6-3 20:26
唉,轉(zhuǎn)模處不討論,這東西經(jīng)過(guò)我進(jìn)行轉(zhuǎn)模處理后是沒(méi)有問(wèn)題的了。我是想讓高手你以你的經(jīng)驗(yàn)看看條件中同樣 ...

所以,我就是問(wèn), 按我上面寫(xiě)的加一個(gè)判斷, 大于是不是可以了? 這個(gè)也很難回答么?
回復(fù)

使用道具 舉報(bào)

35#
ID:776619 發(fā)表于 2022-6-4 11:30 | 只看該作者
188610329 發(fā)表于 2022-6-3 23:28
所以,我就是問(wèn), 按我上面寫(xiě)的加一個(gè)判斷, 大于是不是可以了? 這個(gè)也很難回答么?

我歷來(lái)都是說(shuō)不觸發(fā)模的情況下20多分鐘也不行,所以你說(shuō)的有關(guān)加個(gè)檢查模的那條命令這沒(méi)有必要試。另外我不想用串口輸出兩個(gè)值是因?yàn)檩敵鲆龈袷交幚恚译[隱感覺(jué)這可能是左邊的公式?jīng)]有數(shù)據(jù)類(lèi)型,可能是系統(tǒng)做轉(zhuǎn)化的問(wèn)題,而我用輸出同樣是找不到答案的。用頭腦可以運(yùn)行出時(shí)間沒(méi)有超過(guò)兩分鐘。另外我有點(diǎn)不好意思,好象我在逼著你回答一樣。我后來(lái)也把左邊自己加上(int)和 (unsigned char)自己強(qiáng)廹讓它數(shù)據(jù)轉(zhuǎn)化,也不行。
        以后我少點(diǎn)發(fā)這種請(qǐng)教的問(wèn)題了,其實(shí)我目的也不在請(qǐng)教,只是想說(shuō)明自己遇到過(guò)這種情況,如有高手點(diǎn)一下最好,如果同樣是菜鳥(niǎo)回復(fù)就算不解決不了問(wèn)題,我在回應(yīng)中舒緩下神經(jīng),說(shuō)不定一閃光自己能解決了。
回復(fù)

使用道具 舉報(bào)

36#
ID:624769 發(fā)表于 2022-6-4 12:26 | 只看該作者
wolfinn 發(fā)表于 2022-6-4 11:30
我歷來(lái)都是說(shuō)不觸發(fā)模的情況下20多分鐘也不行,所以你說(shuō)的有關(guān)加個(gè)檢查模的那條命令這沒(méi)有必要試。另外我 ...

行吧,如無(wú)意外,最后一次對(duì)此問(wèn)題展開(kāi)討論。
在所有的判定當(dāng)中, == 是最為嚴(yán)格的, 當(dāng)測(cè)試 == 能正常動(dòng)作時(shí),不管你換成大于和小于理論上都是能正常動(dòng)作的。所以,加任何強(qiáng)轉(zhuǎn)什么的都是毫無(wú)必要的。這是無(wú)用功!!!你以為你做了很多,其實(shí),等于什么都沒(méi)做。
那么,== 能夠正確的判定, 為什么換了 > 就出問(wèn)題了呢? 問(wèn)題肯定不在判定的公式上,而是天平兩邊的東西和你預(yù)料的不同,在極為嚴(yán)格的 == 下,被貍貓換太子的數(shù)據(jù),不會(huì)讓==準(zhǔn)許進(jìn)入if分支,但是,如果不嚴(yán)格 > 就會(huì)允許進(jìn)入到 if 分支。
不知基于什么原因,但凡對(duì)你的數(shù)據(jù)源有一點(diǎn)懷疑,就好像刺痛你的神經(jīng)源一樣。但是,事實(shí)上,如果上面的描述你沒(méi)有刻意隱藏一些其他信息的話(huà),基本可以確定,就是你數(shù)據(jù)源有亂入數(shù)據(jù)。不過(guò),既然你也說(shuō)了,你不打算知道問(wèn)題的真相,那么,就當(dāng)我瞎起勁就是了。
反正,你解決問(wèn)題也好,了解真相也好,對(duì)于我是沒(méi)有辦法好處的。
回復(fù)

使用道具 舉報(bào)

37#
ID:776619 發(fā)表于 2022-6-4 13:29 | 只看該作者
188610329 發(fā)表于 2022-6-4 12:26
行吧,如無(wú)意外,最后一次對(duì)此問(wèn)題展開(kāi)討論。
在所有的判定當(dāng)中, == 是最為嚴(yán)格的, 當(dāng)測(cè)試 == 能正常 ...

好吧,謝謝你,左邊是一個(gè)現(xiàn)算值,右邊一個(gè)算好的變量值,數(shù)據(jù)亂入?不想吵了,謝謝你,浪費(fèi)了你的時(shí)間。
回復(fù)

使用道具 舉報(bào)

38#
ID:99525 發(fā)表于 2022-6-4 14:27 | 只看該作者
比較前,把等號(hào)左邊的值送串口看一眼很難嗎?爭(zhēng)來(lái)爭(zhēng)去,沒(méi)有數(shù)據(jù)徒傷和氣,有什么意義?
回復(fù)

使用道具 舉報(bào)

39#
ID:121859 發(fā)表于 2022-6-4 14:38 | 只看該作者
關(guān)鍵的問(wèn)題是當(dāng),分值大于49時(shí),被賦予了值為0,當(dāng)然就會(huì)出問(wèn)題了。所以要分別處理大于49和小于49的情況。
回復(fù)

使用道具 舉報(bào)

40#
ID:776619 發(fā)表于 2022-6-4 15:31 | 只看該作者
沒(méi)必要送串口了,打印出來(lái)也分析不出什么引起的。單片機(jī)很忠實(shí)的。條件運(yùn)算的結(jié)果肯定是為真(1),轉(zhuǎn)換后的數(shù)我認(rèn)為就是數(shù)據(jù)自動(dòng)轉(zhuǎn)換的問(wèn)題了,經(jīng)換換后的數(shù)肯定是大于初值的,至于==的情況只有一個(gè)滿(mǎn)足,所以用==可以獲得我要的定時(shí)結(jié)果。我在網(wǎng)上搜了一下,左右數(shù)據(jù)類(lèi)型不同的情況比較確實(shí)會(huì)自動(dòng)轉(zhuǎn)換。按說(shuō)法應(yīng)該是負(fù)數(shù)轉(zhuǎn)換才會(huì)出錯(cuò),也就是在后面讀的分鐘在00~定時(shí)值時(shí),左邊是負(fù)值,轉(zhuǎn)換后永遠(yuǎn)大于初值。至于不為負(fù)轉(zhuǎn)換后也這樣我就不明白了。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: h漫在线观看 | 久久久精品综合 | 亚洲一区免费视频 | 久久久欧洲 | 欧美一级免费 | 久久99精品久久久久子伦 | 亚洲黄色一级毛片 | 中文字幕一区二区三区四区 | 国产精品福利在线 | 亚洲精品乱码久久久久v最新版 | 亚洲国产aⅴ精品 | 国产精品国产三级国产aⅴ中文 | 视频在线一区 | 91黄色免费看 | 国产精品精品视频一区二区三区 | 色视频www在线播放国产人成 | 一级做a爰片性色毛片16美国 | 国产乱码精品一区二区三区五月婷 | 九九热在线免费视频 | av一级在线观看 | 三级国产三级在线 | 四虎永久免费地址 | 亚洲精品电影在线观看 | 国产精品视频网 | 亚洲 欧美 日韩在线 | 久久国产欧美日韩精品 | 九九久久这里只有精品 | 九九久久这里只有精品 | 欧美日韩在线一区二区 | 亚洲一二三在线 | 国产精品一区在线观看 | 四虎免费视频 | 国产一区欧美 | 日本久久一区二区三区 | 精品欧美乱码久久久久久1区2区 | 一区二区三区四区毛片 | 男女羞羞免费视频 | 国产高清一区二区三区 | 国产精品一二三区 | 99久久精品国产一区二区三区 | 秋霞国产 |