欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
為什么單片機程序中這個D1就是不能兩呢(外部中斷0控制led1)
[打印本頁]
作者:
indexcolor
時間:
2021-7-23 19:28
標題:
為什么單片機程序中這個D1就是不能兩呢(外部中斷0控制led1)
/****************************************************************
**********************
實驗現象:下載程序后,操作 K3 按鍵使 D1 狀態取反
接線說明: (具體接線圖可見開發攻略對應實驗的“實驗現象”章節)
1,單片機-->LED&交通燈模塊
P20-->D1
2,單片機-->獨立按鍵模塊
P32-->K3
注意事項:
*****************************************************************
**********************/
#include "reg52.h" //此文件中定義了單片機的一些特殊功能寄存器
typedef unsigned int u16; //對數據類型進行聲明定義
typedef unsigned char u8;
sbit k3=P3^2; //定義按鍵 K3
sbit led=P2^0; //定義 P20 口是 led
/****************************************************************
***************
* 函 數 名 : delay
* 函數功能 : 延時函數,i=1 時,大約延時 10us
*****************************************************************
**************/
void delay(u16 i)
{
while(i--);
}
/****************************************************************
***************
* 函 數 名 : Int1Init()
* 函數功能 : 設置外部中斷 1
* 輸 入 : 無
* 輸 出 : 無
*****************************************************************
**************/
void Int0Init()
{
//設置 INT0
IT0=1;//跳變沿出發方式(下降沿)
EX0=1;//打開 INT0 的中斷允許。
EA=1;//打開總中斷
}
/****************************************************************
***************
* 函 數 名 : main
* 函數功能 : 主函數
* 輸 入 : 無
* 輸 出 : 無
*****************************************************************
**************/
void main()
{
Int0Init(); // 設置外部中斷 0
while(1);
}
/****************************************************************
***************
* 函 數 名 : Int0() interrupt 0
* 函數功能 : 外部中斷 0 的中斷函數
* 輸 入 : 無
* 輸 出 : 無
*****************************************************************
**************/
void Int0() interrupt 0 //外部中斷 0 的中斷函數
{
delay(1000); //延時消抖
if(k3==0)
{
led=~led;
}
}
作者:
lkc8210
時間:
2021-7-23 21:52
因為led只能亮,不能兩
雖然出了警告,但也可以啊
代碼沒問題,那就是硬件問題
Led正負有沒有接錯?
ezgif.com-gif-maker (1).gif
(244.15 KB, 下載次數: 46)
下載附件
2021-7-23 21:51 上傳
作者:
yzwzfyz
時間:
2021-7-24 09:08
進入中斷時,K3必=0,否則是不會進入中斷的,所以 IF K3=0 沒有意義。
在中斷程序未退出之前,K3彈N次都是沒有用的,因為中斷進行中,無法再進入(當然按下也無用)。
但當你退出中斷時,會立即再進中斷(感覺上K3不聽話)。
所以正確的做法是:
中斷響應后:LED求反、延時、去除中斷標記(彈動必會產生中斷標記,去除它就不會立即再中斷),退出中斷服務程序。
當然K3在延時未結束之前會失效。這是你的程序可以改進的地方。
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1