![]() |
發布時間: 2020-5-28 20:40
正文摘要:#include<reg52.h> #include<intrins.h> #define uchar unsigned char #define uint unsigned int sbit flag=P3^2;//外部中斷信號產生腳 sbit key=P3^0;//控制flag產生下降沿 sbit led=P2 ... |
lyxing 發表于 2020-5-29 22:55 我知道那兩個腳 我網上查的也可以通過別的i/o口來控制P3^2 P3^3的高低電位 觸發不就是有下降沿么 別的可以控制他的高低電位 咋就不可以等效那兩個腳呢 |
雪峰1259 發表于 2020-5-29 21:43 外部中斷INT0與INT1,在 P3.2 P3.3口上,按P3.0不能產生外中斷。 |
wulin 發表于 2020-5-29 16:11 額 我是想通過P3^0按鍵來產生這個中斷 |
雪峰1259 發表于 2020-5-29 13:16 程序都給你改好了你還玩不轉,無語了。 |
273431377 發表于 2020-5-29 00:33 應該加個while 不過這和名字沒啥關系吧 |
wulin 發表于 2020-5-29 06:05 加過while后 還是不行 我先通過按P3^0按鍵發現沒用 然后我又直接按P3^2想產生跳變沿 還是沒反應 懵逼了 ![]() |
csmyldl 發表于 2020-5-29 00:43 想通過按鍵來控制中斷 |
wulin 發表于 2020-5-29 06:05 贊同樓上 |
樓主犯了兩個錯誤。1.程序結構錯誤:main函數初始化后必須限制在主循環while(1)中運行,哪怕沒有如何任務也得在while(1)中死循環。2.外部中斷理解錯誤:所謂外部中斷必須是單片機外部信號作用于IN0(IN1),由軟件置flag=1; flag=0;不會觸發IN0中斷。
|
問題未描述清楚,flag與KEY在程序中定義引腳P32和P30,不知為何要這么定義 |
在main()函數結尾加個while(1); 把中斷函數名改成void exint0() interrupt 0 試一下。 |