標題: 單片機C語言程序 為何無法循環(huán)? [打印本頁]

作者: 木示    時間: 2023-4-13 22:23
標題: 單片機C語言程序 為何無法循環(huán)?
大家好,學習EEPROM知識,想利用EEPROM上電進行遞增0-4數(shù)字,但發(fā)現(xiàn)無法進行0-4之間的循環(huán),不知道循環(huán)部分怎么寫了?程序如圖,

145.png (20.32 KB, 下載次數(shù): 50)

這部分,不知道這樣寫對不對

這部分,不知道這樣寫對不對

作者: Hephaestus    時間: 2023-4-13 23:35
TIM_10MS_Flag是在中斷里面改變的吧?用個不用的GPIO把這個標志位輸出出來,用示波器看。
作者: yahooboby    時間: 2023-4-14 01:37
你試試把 char dat = 0; 改成 int dat =0;
作者: wulin    時間: 2023-4-14 06:14
將dat約束在0-4范圍
dat++;
if(dat>=5) {dat=0;}
作者: ucmic    時間: 2023-4-14 07:51
dat的值,后來被從E2讀出來的值覆蓋,而E2的初始值,有可能是負數(shù),自加1后一時半回還到不了0-4的范圍。
試下把dat的定議為無符號數(shù),再把此值寫入E2,再讀出來,接著再到你后定的程序。
作者: zch5200    時間: 2023-4-14 08:58
你是想上電一次e2里面的值加1吧,你把while(1)后面的程序全放在前面去,while(1);。讓程序停在這里。
     你在死循環(huán)里一直加dat,程序沒貼全不知道你什么時候?qū)戇Me2的,數(shù)可能會跳過不是遞增的。還有if(dat>=3) {dat=0;}dat的值是0-3循環(huán)。
作者: li64331218    時間: 2023-4-14 09:09
先把定時器中斷標志去了,看看會不會循環(huán),,按你的邏輯是0,1,2,來循環(huán)的,到不了3,和4。
作者: coody_sz    時間: 2023-4-14 11:20
if(dat>=3) dat = 0;
因為你的程序是0、1、2循環(huán),所以當然到不了3、4。
作者: 木示    時間: 2023-4-15 10:23
Hephaestus 發(fā)表于 2023-4-13 23:35
TIM_10MS_Flag是在中斷里面改變的吧?用個不用的GPIO把這個標志位輸出出來,用示波器看。

,你好,看了,是10MS一個周期
作者: 木示    時間: 2023-4-15 10:28
zch5200 發(fā)表于 2023-4-14 08:58
你是想上電一次e2里面的值加1吧,你把while(1)后面的程序全放在前面去,while(1);。讓程序停在這里。
   ...

你好!安恢滥闶裁磿r候?qū)戇Me2的,數(shù)可能會跳過不是遞增的”這句話怎么理解?沒貼上的就是EEPROM的擦除,寫入,讀取的基本程序。這程序完全沒有循環(huán),
作者: 木示    時間: 2023-4-15 10:51
這個下載得選項是要勾選上的吧?

33333.png (236.25 KB, 下載次數(shù): 53)

33333.png





歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1