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

QQ登錄

只需一步,快速開始

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

一個(gè)關(guān)于C語言變量賦值和保存的小白問題求教

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:997026 發(fā)表于 2021-12-26 11:28 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
各位大佬好,

本人做一個(gè)可調(diào)時(shí)間的鬧鐘程序,要求設(shè)置一次時(shí)間,只要單片機(jī)不關(guān)機(jī),每到這個(gè)時(shí)間,鬧鐘都會(huì)自動(dòng)響鈴。

部分C語言程序如下:

int total_time;

int Temp;

void main(void)

{

while(1)
{  
total_time=Temp;
}
}

ISR(TIMER_vect)  //定時(shí)器中斷,1s進(jìn)一次中斷
{
if (total_time !=0)
{ beep=1;
total_time--;
}
else

{beep=0;}


在這個(gè)程序中,Temp是一個(gè)臨時(shí)變量,是通過按鍵設(shè)置的,比如按鍵設(shè)置Temp=30,此時(shí)30賦值給total_time, 進(jìn)入中斷后,由于total_time不等于0(為30),此時(shí)鬧鐘響,同時(shí)totai_time每1s自減1,直到為0為止,自減到0后,鬧鐘停,這就實(shí)現(xiàn)了鬧鐘響30s的一個(gè)功能。


我的疑問是:
1,total_time自減到0后,total_time的值是不是永遠(yuǎn)就變成0了?如果這樣的話,鬧鐘就只能實(shí)現(xiàn)一次,下一次又需要重新設(shè)置,這樣不方便,有沒有可以設(shè)置一次,鬧鐘每到這個(gè)時(shí)間點(diǎn)就自動(dòng)鬧鈴?
2,我main里有一個(gè)total_time=Temp;的賦值,如果total_time在中斷里自減到0后,total_time就永遠(yuǎn)是0了嗎?因?yàn)閠otal_time=Temp;這個(gè)賦值是放在while(1)循環(huán)里的,會(huì)不會(huì)自減到0后,total_time重新被賦值為30?只要我的Temp不變,total_time就是30?還是0?這個(gè)地方搞不清楚,我的需求是需要total_time一直保持30,除非Temp改變。


請(qǐng)各位大佬賜教!
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:488334 發(fā)表于 2021-12-26 15:19 | 只看該作者
首先你mian函數(shù)里面total_time=Temp,雖然你說Temp是臨時(shí)變量,但是你定義的確是全局變量,所以Temp的值如果不按按鍵,是不會(huì)變化的,所以total_time=Temp只要進(jìn)入while(1)循環(huán),就會(huì)一直賦值,total_time就會(huì)一直是30,再說中斷,中斷里面的total_time值,就算當(dāng)前中斷減1了,退出中斷又會(huì)變成30,所以你可以多設(shè)置幾個(gè)變量,而不是糾結(jié)在這兩個(gè)變量。

評(píng)分

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

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

板凳
ID:633559 發(fā)表于 2021-12-26 22:13 | 只看該作者
你有這樣的疑問是因?yàn)槟氵不太清楚程序的執(zhí)行順序。程序是這樣執(zhí)行的,主函數(shù)中的代碼一條條執(zhí)行下來,當(dāng)發(fā)生中斷的時(shí)候,會(huì)進(jìn)入中斷去處理中斷中的代碼,而中斷中的代碼也是一條條執(zhí)行下來的,執(zhí)行到底跳出來后,回到主函數(shù)被中斷打斷的位置接著往下執(zhí)行,如此往復(fù)。

評(píng)分

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

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

地板
ID:997026 發(fā)表于 2022-1-15 19:55 | 只看該作者
tatachaoren 發(fā)表于 2021-12-26 15:19
首先你mian函數(shù)里面total_time=Temp,雖然你說Temp是臨時(shí)變量,但是你定義的確是全局變量,所以Temp的值如 ...

后來我自己驗(yàn)證了,確實(shí)如您所說,非常感謝回復(fù)和幫助!
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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