找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2931|回復(fù): 12
收起左側(cè)

關(guān)于單片機(jī)中斷(一小段代碼看不懂,麻煩有空的大神進(jìn)來幫忙看看

[復(fù)制鏈接]
ID:325939 發(fā)表于 2018-5-15 11:24 | 顯示全部樓層 |閱讀模式
  1. /*************定時(shí)器0中斷服務(wù)程序***************/
  2. void time0_int() interrupt 1
  3. {
  4. static uchar value;
  5. TH0 = 0x3c;
  6. TL0 = 0xb0;     // 50ms
  7. value ++;
  8. if(value % 2 == 0)
  9. {
  10.   flag_100ms = 1 ;
  11. }
  12. }
復(fù)制代碼
1、value沒賦初值吧?if里怎么知道value是多少。。
2、if沒有循環(huán)功能吧?執(zhí)行完了不就出來了嗎?
只學(xué)過匯編而且忘差不多了,時(shí)間有點(diǎn)緊迫所以想直接問比較快,求助QAQ


回復(fù)

使用道具 舉報(bào)

ID:164602 發(fā)表于 2018-5-15 12:40 | 顯示全部樓層
第一:你沒看到有:value++;嗎?
第二:下次中斷,不就回來了?

評分

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

查看全部評分

回復(fù)

使用道具 舉報(bào)

ID:319019 發(fā)表于 2018-5-15 13:27 | 顯示全部樓層
默認(rèn)初值為0;沒循環(huán),但每累加2次執(zhí)行一次if里面的語句;

評分

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

查看全部評分

回復(fù)

使用道具 舉報(bào)

ID:213173 發(fā)表于 2018-5-15 13:40 | 顯示全部樓層
這段程序不嚴(yán)謹(jǐn),應(yīng)該給value賦初值=0,由于定義的是靜態(tài)變量static uchar value;,編譯器默認(rèn)初值=0,value在每次定時(shí)器0中斷時(shí)自加1,所以他的值是從0~255周而復(fù)始,if(value % 2 == 0)判斷value是偶數(shù),flag_100ms標(biāo)志置1,否則直接結(jié)束程序。

評分

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

查看全部評分

回復(fù)

使用道具 舉報(bào)

ID:311300 發(fā)表于 2018-5-15 14:25 | 顯示全部樓層
1,value靜態(tài)變量默認(rèn)初值唯一,并且每次中斷進(jìn)來后value保持上一次的值。
回復(fù)

使用道具 舉報(bào)

ID:311300 發(fā)表于 2018-5-15 14:28 | 顯示全部樓層
1,value是static靜態(tài)變量,初始化值為0,并且每次進(jìn)入中斷value是保持上一次的值,也就是每次進(jìn)入中斷后value值加1。第一次進(jìn)入是0,第二次是1,第三次是2.。。。
2,這是定時(shí)器中斷,也就是每50ms就會執(zhí)行一次,并且value保持上一次的值,也就是每100ms if條件成立,執(zhí)行if條件下面的程序。

評分

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

查看全部評分

回復(fù)

使用道具 舉報(bào)

ID:325939 發(fā)表于 2018-5-15 15:36 | 顯示全部樓層
哇啊啊啊啊啊你們好善良,就這么一會這么多人回復(fù),太感動(dòng)了謝謝!!
先仔細(xì)看看你們說的
回復(fù)

使用道具 舉報(bào)

ID:241128 發(fā)表于 2018-5-15 16:13 | 顯示全部樓層
開始的100ms可以成立一次,之后是每1秒大概成立4次,可能程序在測試階段沒完成,原本可能是每100ms就置位一次flag_100ms標(biāo)志。但是應(yīng)該在判斷語句里清零靜態(tài)寄存器:
if(value % 2 == 0)
{
  flag_100ms = 1 ;
  value=0;
}
這樣就有點(diǎn)意思了,不然上面的程序都不好分析,因?yàn)?55/2不能整除,后面的標(biāo)志位出現(xiàn)的時(shí)機(jī)就不知道啥意思了.....

評分

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

查看全部評分

回復(fù)

使用道具 舉報(bào)

ID:325939 發(fā)表于 2018-5-15 16:50 | 顯示全部樓層
知道第一問了,第二問,為什么要有個(gè)if語句在這呢?
回復(fù)

使用道具 舉報(bào)

ID:319019 發(fā)表于 2018-5-15 17:48 | 顯示全部樓層
zhdp 發(fā)表于 2018-5-15 13:27
默認(rèn)初值為0;沒循環(huán),但每累加2次執(zhí)行一次if里面的語句;

50ms中斷一次,value +1,再50ms中斷一次,再value +1,value/2表示偶數(shù)時(shí)執(zhí)行if語句,但你沒value清0,所以value到255時(shí)就不再增加了 value=255,不循環(huán)。if是判斷語句,你沒學(xué)過嗎?

評分

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

查看全部評分

回復(fù)

使用道具 舉報(bào)

ID:330633 發(fā)表于 2018-5-15 17:51 | 顯示全部樓層
value默認(rèn)是0,每次自增1;if是判斷value的值是否是偶數(shù)情況,是就將falg_100ms置1,

評分

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

查看全部評分

回復(fù)

使用道具 舉報(bào)

ID:325939 發(fā)表于 2018-5-15 19:30 | 顯示全部樓層
zhdp 發(fā)表于 2018-5-15 17:48
50ms中斷一次,value +1,再50ms中斷一次,再value +1,value/2表示偶數(shù)時(shí)執(zhí)行if語句,但你沒value清0, ...

學(xué)過,但不知道這里為什么50ms中斷一次。。。
回復(fù)

使用道具 舉報(bào)

ID:325939 發(fā)表于 2018-5-15 19:33 | 顯示全部樓層
噢噢噢噢知道了 是定時(shí)器 所以50ms中斷一次
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

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