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

QQ登錄

只需一步,快速開始

搜索

單片機(jī)C語言程序 為何無法循環(huán)?

查看數(shù): 2568 | 評(píng)論數(shù): 10 | 收藏 0
關(guān)燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請(qǐng)稍候......
發(fā)布時(shí)間: 2023-4-13 22:23

正文摘要:

大家好,學(xué)習(xí)EEPROM知識(shí),想利用EEPROM上電進(jìn)行遞增0-4數(shù)字,但發(fā)現(xiàn)無法進(jìn)行0-4之間的循環(huán),不知道循環(huán)部分怎么寫了?程序如圖,

回復(fù)

ID:706724 發(fā)表于 2023-4-15 10:28
zch5200 發(fā)表于 2023-4-14 08:58
你是想上電一次e2里面的值加1吧,你把while(1)后面的程序全放在前面去,while(1);。讓程序停在這里。
   ...

你好!安恢滥闶裁磿r(shí)候?qū)戇M(jìn)e2的,數(shù)可能會(huì)跳過不是遞增的”這句話怎么理解?沒貼上的就是EEPROM的擦除,寫入,讀取的基本程序。這程序完全沒有循環(huán),
ID:706724 發(fā)表于 2023-4-15 10:23
Hephaestus 發(fā)表于 2023-4-13 23:35
TIM_10MS_Flag是在中斷里面改變的吧?用個(gè)不用的GPIO把這個(gè)標(biāo)志位輸出出來,用示波器看。

,你好,看了,是10MS一個(gè)周期
ID:1034262 發(fā)表于 2023-4-14 11:20
if(dat>=3) dat = 0;
因?yàn)槟愕某绦蚴?、1、2循環(huán),所以當(dāng)然到不了3、4。

評(píng)分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

ID:291668 發(fā)表于 2023-4-14 09:09
先把定時(shí)器中斷標(biāo)志去了,看看會(huì)不會(huì)循環(huán),,按你的邏輯是0,1,2,來循環(huán)的,到不了3,和4。

評(píng)分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

ID:1004920 發(fā)表于 2023-4-14 08:58
你是想上電一次e2里面的值加1吧,你把while(1)后面的程序全放在前面去,while(1);。讓程序停在這里。
     你在死循環(huán)里一直加dat,程序沒貼全不知道你什么時(shí)候?qū)戇M(jìn)e2的,數(shù)可能會(huì)跳過不是遞增的。還有if(dat>=3) {dat=0;}dat的值是0-3循環(huán)。

評(píng)分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

ID:460753 發(fā)表于 2023-4-14 07:51
dat的值,后來被從E2讀出來的值覆蓋,而E2的初始值,有可能是負(fù)數(shù),自加1后一時(shí)半回還到不了0-4的范圍。
試下把dat的定議為無符號(hào)數(shù),再把此值寫入E2,再讀出來,接著再到你后定的程序。

評(píng)分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

ID:213173 發(fā)表于 2023-4-14 06:14
將dat約束在0-4范圍
dat++;
if(dat>=5) {dat=0;}
ID:973041 發(fā)表于 2023-4-14 01:37
你試試把 char dat = 0; 改成 int dat =0;
ID:883242 發(fā)表于 2023-4-13 23:35
TIM_10MS_Flag是在中斷里面改變的吧?用個(gè)不用的GPIO把這個(gè)標(biāo)志位輸出出來,用示波器看。

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

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

快速回復(fù) 返回頂部 返回列表