欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2569|回復: 7
收起左側

求教關于單片機定時器中斷程序的一個小問題,求大佬們指點,非常感謝!

[復制鏈接]
ID:796670 發表于 2020-7-15 18:22 | 顯示全部樓層 |閱讀模式
這是完整的程序,讓小燈循環點亮一秒,熄滅一秒
請問最后一張圖中的 i 是什么?為什么要判斷 i 等于1000?
教程里說 i 起始是1毫秒,這是為什么啊?
求大佬們解答,謝謝!

1

1

2

2

3

3

4

4


回復

使用道具 舉報

ID:86926 發表于 2020-7-16 08:13 | 顯示全部樓層
i就是個變量啊,定時器1ms中斷一次,中斷一次i就累加一次,當i加到1000,就是1000ms,1000ms等于1秒,清零變量 i 的值,取反輸出LED的狀態,這樣就能實現你說的功能了
回復

使用道具 舉報

ID:475247 發表于 2020-7-16 09:31 | 顯示全部樓層
一個經驗告訴你,當你對一些代碼的意思不是很了解時,你可以改變數字看看變化現象,多試幾次!代碼的意思與目地你就知道是怎么回事了
回復

使用道具 舉報

ID:796670 發表于 2020-7-16 10:37 | 顯示全部樓層
還有誰? 發表于 2020-7-16 09:31
一個經驗告訴你,當你對一些代碼的意思不是很了解時,你可以改變數字看看變化現象,多試幾次!代碼的意思與 ...

謝謝指點
回復

使用道具 舉報

ID:796670 發表于 2020-7-16 10:38 | 顯示全部樓層
藍魄 發表于 2020-7-16 08:13
i就是個變量啊,定時器1ms中斷一次,中斷一次i就累加一次,當i加到1000,就是1000ms,1000ms等于1秒,清零 ...

謝謝!
回復

使用道具 舉報

ID:804115 發表于 2020-7-16 13:34 | 顯示全部樓層
1. 請問最后一張圖中的 i 是什么?為什么要判斷 i 等于1000?
答:i就是時間量,單位是毫秒,初始值設置的為0,定時器設定的1毫秒產生一次中斷,在中斷中進行了i++的操作,也就是說,i每過1毫秒就加1,所以 “判斷i等于1000” 就是要判斷i是否達到了1000毫秒,如果達到了,就讓燈改變狀態,同時,還要讓i變為初值,進行下一輪的計時。
2. 教程里說 i 起始是1毫秒,這是為什么啊?
答:教程寫錯了,i起始是0毫秒。
回復

使用道具 舉報

ID:451718 發表于 2020-7-16 16:17 | 顯示全部樓層
1.先要了解單片機的定時器功能。  void Timer0 Interupt 1()  函數,就是你的定時器中斷函數,單片機會每隔一個固定的時間,進來執行一次這個中斷函數。 固定時間就是1ms 。 為什么是1ms , 因為你 Timer0 Init()函數里面已經給定了初值,另外,每次進入中斷函數后,又給TH0 和  TL0重新賦值。 依次循環。  為什么TH0  和 TL0 賦值就可以循環? 請自行惡補 定時器工作原理。

2.知道了1ms定時器工作原理,  就可以明白,每隔1ms,i++; 加到1000以后,就重新賦值為0 (其實這里判斷條件改成 >=1000更合理,因為不知道你的單片機還會不會響應其它更高級別的中斷),括號里面的內容,不懂就不用看了, 以后慢慢會懂的。
回復

使用道具 舉報

ID:804329 發表于 2020-7-16 16:57 | 顯示全部樓層
定時器初始化計數器1ms進入一次中斷服務函數,進入一次中斷服務函數后讓i的值加一,即每1ms進入一次中斷,i值加一。因此若要1s改變一次燈狀態的話,就要進入1000次中斷服務函數(1s=1000ms)。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表