18luck网站

18luck网站電子設計 | 18luck网站Rss 2.0 會員中心 會員注冊
搜索: 您現在的位置: 18luck网站 >> 18luck平台 >> 單片機 >> 正文

單片機C語言程序設計:INT0 及 INT1 中斷計數

作者:佚名    文章來源:本站原創    點擊數:    更新時間:2017-4-22

/*  名稱:INT0 及 INT1 中斷計數
說明:每次按下第 1 個(ge) 計數鍵時,
第 1 組計數值累加並顯示在右邊 3 隻數
碼管上, 每次按下第 2 個(ge) 計數鍵時,第
2 組計數值累加並顯示在左邊 3 隻數碼管上,後兩(liang) 個(ge) 按鍵分別清零。
*/
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit K3=P3^4; //2 個(ge) 清零鍵
sbit K4=P3^5;
//數碼管段碼與(yu) 位碼
uchar code DSY_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};
uchar code DSY_Scan_Bits[]={0x20,0x10,0x08,0x04,0x02,0x01};
//2 組計數的顯示緩衝(chong) ,前 3 位一組,後 3 位一組
uchar data Buffer_Counts[]={0,0,0,0,0,0};
uint Count_A,Count_B=0;
//延時
void DelayMS(uint x)
{
uchar t;
while(x--) for(t=0;t<120;t++);
}
//數據顯示
void Show_Counts()
{
uchar i;
Buffer_Counts[2]=Count_A/100;
Buffer_Counts[1]=Count_A%100/10;
Buffer_Counts[0]=Count_A%10;
{

if( Buffer_Counts[2]==0)
Buffer_Counts[2]=0x0a;
if( Buffer_Counts[1]==0)
}
Buffer_Counts[1]=0x0a;
Buffer_Counts[5]=Count_B/100;
Buffer_Counts[4]=Count_B%100/10;
Buffer_Counts[3]=Count_B%10;
if( Buffer_Counts[5]==0)
{
Buffer_Counts[5]=0x0a;
if( Buffer_Counts[4]==0)
Buffer_Counts[4]=0x0a;
}
for(i=0;i<6;i++)
{
P2=DSY_Scan_Bits[i];
P1=DSY_CODE[Buffer_Counts[i]];
DelayMS(1);
   }
}
//主程序
void main()
{
IE=0x85;
PX0=1;中斷優(you) 先
IT0=1;
IT1=1;
while(1)
{
if(K3==0) Count_A=0;
if(K4==0) Count_B=0;
Show_Counts();
}
}
//INT0 中斷函數
void EX_INT0() interrupt 0
{
Count_A++;
}
//INT1 中斷函數
void EX_INT1() interrupt 2
{
Count_B++;
}

單片機proteus模擬中斷 

Tags:單片機C語言,中斷計數,INT0, INT1  
責任編輯:admin
請文明參與討論,禁止漫罵攻擊,不要惡意評論、違禁詞語。 昵稱:
1分 2分 3分 4分 5分

還可以輸入 200 個字
[ 查看全部 ] 網友評論
關於我們 - 聯係我們 - 廣告服務 - 友情鏈接 - 網站地圖 - 版權聲明 - 在線幫助 - 文章列表
返回頂部
刷新頁麵
下到頁底
晶體管查詢