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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2133|回復: 2
打印 上一主題 下一主題
收起左側

為什么單片機程序中這個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;
}
}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:161164 發表于 2021-7-23 21:52 | 只看該作者
因為led只能亮,不能兩

雖然出了警告,但也可以啊
代碼沒問題,那就是硬件問題
Led正負有沒有接錯?



回復

使用道具 舉報

板凳
ID:123289 發表于 2021-7-24 09:08 | 只看該作者
進入中斷時,K3必=0,否則是不會進入中斷的,所以 IF K3=0 沒有意義。
在中斷程序未退出之前,K3彈N次都是沒有用的,因為中斷進行中,無法再進入(當然按下也無用)。
但當你退出中斷時,會立即再進中斷(感覺上K3不聽話)。
所以正確的做法是:
中斷響應后:LED求反、延時、去除中斷標記(彈動必會產生中斷標記,去除它就不會立即再中斷),退出中斷服務程序。
當然K3在延時未結束之前會失效。這是你的程序可以改進的地方。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

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