資源簡介
INT0中斷計數,并在數碼管顯示所計數,按下按鍵后對所計的數進行清零操作
代碼片段和文件信息
/*****外部中斷0?定時器0?實現1秒led自動加1;按下按鍵后清零*****/
#include
#include
?
sbit?AA=P2^2;??
sbit?BB=P2^3;
sbit?CC=P2^4;?
sbit?clear_key=P3^6;
#define?uchar?unsigned?char
#define?uint??unsigned?int
unsigned?int?ledout[8]time_count=0time=0led_count=0;
unsigned?char?code?CODE[]=
?{
? ~0xC0~0xF9~0xA4~0xB0~0x99~0x92~0x82~0xF8~0x80~0x90
? //0x3f0x060x5b0x4f0x660x6d0x7d0x7f0x6f0x00
?};
void?Delay(unsigned?int?ms) ??//延遲20Ms
{
????char?ij;
????for(i=ms;?i?>?0;?i--)
????????for(j?=?110;?j?>?0;?j--);
}
void?Display()
{
unsigned?int?i; ?
ledout[0]=CODE[led_count%10000/1000];
ledout[1]=CODE[led_count%1000/100];
ledout[2]=CODE[led_count%100/10];
ledout[3]=CODE[led_count%10];
for(i=0;i<8;i++)
{
P0=ledout[i];
switch(i)
{
case?0:AA=0;BB=0;CC=0;break;
case?1:AA=1;BB=0;CC=0;break;
case?2:AA=0;BB=1;CC=0;break;
case?3:AA=1;BB=1;CC=0;break;
case?4:AA=0;BB=0;CC=1;break;
case?5:AA=1;BB=0;CC=1;break;
case?6:AA=0;BB=1;CC=1;break;
case?7:AA=1;BB=1;CC=1;break;
}?
Delay(5);
}
}
/************************************************
****函數名:Creat_Tmr0_Second
****函數描述:創建?T0?定時器秒函數??
****參數:?對應?多少秒
****返回值:?成功到時?返回1??否則返回0
*************************************************/ ?
unsigned?char?Creat_Tmr0_Second(unsigned?int?second){
if(time_count>=second){
time_count=0;
return?1;
}
return?0;
} ??
void?main()
{
IT0=1; ?//邊沿觸發方式
// IT0=0;??????//電平觸發方式
SCON=0X50;?
TMOD?=?0x20;
TH0=(65536-10000)/256;? //50MS?觸發一次中斷
TL0=(65535-10000)%256;
TR0=1;
EX0?=?1;???//開啟外部中斷0
ET0?=?1;???//開啟定時器0
EA?=?1; ??//總中斷開關?
??
Delay(1);
while(1)
{
if(Creat_Tmr0_Second(1)==1
- 上一篇:labview二進制字符串轉十進制
- 下一篇:數碼管顯示DHT11
評論
共有 條評論