最近因為XX原因,需要用到PIC單片機。其中,電平變換中斷有兩個坑,需要記錄下來。
- 某些老版本的單片機,中斷函數(shù)中需要先讀取端口的值,才能清除中斷標(biāo)志位。吐血~~~~;
- 用proteus仿真時,中斷函數(shù)中要手動清除IOCIF標(biāo)志位,不然,會一直進入中斷函數(shù),無法自拔。
注意,第二點,PIC不應(yīng)該背鍋。因為人家芯片手冊上是這樣寫的:
image.png
但是,請相信我,在proteus上,這個是無效的。你如果沒有在中斷函數(shù)中加上一句
IOCIF = 0;
你會陷入中斷中,不能自已。
還有一點心得體會,像PIC16系列只有一個中斷向量地址并且沒有中斷優(yōu)先級的單片機,進入中斷后,最好要關(guān)閉中斷。在中斷處理完成時,再打開中斷。因為,其它中斷會打斷當(dāng)前的中斷。這個貌似在芯片手冊中沒有提到,但是請你要注意。
GIE = 0;
·········
·········
·········
GIE = 1;
