日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]//中斷的應(yīng)用二//★★★★★★★★★數(shù)字鐘★★★★★★★★★★★\\\\ //單征機(jī)型號:PIC16F877A //功能描述:數(shù)字鐘功能,初始顯示時間為12點(diǎn),且?guī)謩诱{(diào)整時間功能。 //端口定義:RA0~RA5數(shù)碼管位控制口、RD0~R

//中斷的應(yīng)用二

//★★★★★★★★★數(shù)字鐘★★★★★★★★★★★\
//單征機(jī)型號:PIC16F877A
//功能描述:數(shù)字鐘功能,初始顯示時間為12點(diǎn),且?guī)謩诱{(diào)整時間功能。
//端口定義:RA0~RA5數(shù)碼管位控制口、RD0~RD7數(shù)碼管段控制口、RB0秒增一、RB1分增一、RB2時增一。


#include
__CONFIG(0xf73A); //芯片配置字

const unsigned char dispcode[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//段選0~9
unsigned char dispbitcode[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //位選,數(shù)碼管1~8
unsigned char dispbuf[8]={0,0,16,0,0,16,0,0}; //時間數(shù)據(jù)寄存器
unsigned int tcnt; //百分之一秒計數(shù)器
unsigned char second; //秒計數(shù)器
unsigned char minite; //分計數(shù)器
unsigned char hour; //時計數(shù)器
unsigned char dispbitcnt; //顯示子程序中段與位顯示計數(shù)器
bit keyb0,keyb1,keyb2; //RB0,RB1,RB2按鍵作用標(biāo)志位

//========================================================================
//功能描述:延時子程序
//函數(shù)名稱:delay);
void delay()
{
int i;
for(i=80;i>0;i--);
}

//========================================================================
//功能描述:顯示子程序
//函數(shù)名稱:disp();
void disp()
{

PORTA=dispbitcode[dispbitcnt];
PORTD=dispcode[dispbuf[dispbitcnt]];
dispbitcnt++;
if(dispbitcnt==8)
{
dispbitcnt=0;
}
delay();
}

//========================================================================
//功能描述:端口初始化
//函數(shù)名稱:portinit();
void portinit()
{
TRISA=0x00; //PA口設(shè)為輸出
TRISB=0xff; //PB口設(shè)為輸入
TRISC=0x00; //PC口設(shè)為輸出
TRISD=0x00; //PC口設(shè)為輸出
PORTA=0x00; //PA口設(shè)為輸出為0
PORTB=0x00;
PORTC=0x00;
PORTD=0;
tcnt=0;
second=0;
minite=0;
hour=12;
dispbitcnt=0;
keyb0=0;
keyb1=0;
keyb2=0;
}

//=====================================================================
//功能描述:定時中斷服務(wù)
//函數(shù)名稱:TimeInt();
void interrupt TimeInt(void)
{
tcnt++;
if(tcnt==20)
{
tcnt=0;
second++;
if(second==60)
{
second=0;
minite++;
if(minite==60)
{
minite=0;
hour++;
if(hour==24)
{
hour=0;
}
}
}
}
dispbuf[0]=hour/10;
dispbuf[1]=hour%10;
dispbuf[2]=minite/10;
dispbuf[3]=minite%10;
dispbuf[4]=second/10;
dispbuf[5]=second%10;
dispbuf[6]=tcnt/10;
dispbuf[7]=tcnt%10;


TMR0 = 0x3d; //定時初值
T0IF = 0; //清除標(biāo)志
}


//========================================================================
//功能描述:中斷設(shè)置
//函數(shù)名稱:IdsInit();
void IdsInit(void)
{
OPTION = 0x87; //分頻因子
TMR0 = 0x3d; //定時初值
T0IE = 1; //開啟定時
GIE = 1; //準(zhǔn)許中斷
}

//========================================================================
//功能描述:手動調(diào)時子程序
//函數(shù)名稱:key();
void key()
{
if(RB0==0)
{
delay();
if(RB0==0)
{
if(keyb0==0)
{
keyb0=1;
second++;
if(second==60)
{second=0;}

}
}
}
else keyb0=0;
if(RB1==0)
{
delay();
if(RB1==0)
{
if(keyb1==0)
{
keyb1=1;
minite++;
if(minite==60)
{minite=0;}
}
}
}
else keyb1=0;
if(RB2==0)
{
delay();
if(RB2==0)
{
if(keyb2==0)
{
keyb2=1;
hour++;
if(hour==24)
{hour=0;}

}
}
}
else keyb2=0;
}

//========================================================================
//功能描述:主程序
//函數(shù)名稱:main();
main()
{
portinit(); //端口初始化
IdsInit(); //TMR0初始化
while(1)
{
disp();
key();
}
}

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉