新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 用MSP430的32768Hz晶振寫的時鐘

用MSP430的32768Hz晶振寫的時鐘

作者: 時間:2016-12-02 來源:網(wǎng)絡 收藏


}

本文引用地址:http://butianyuan.cn/article/201612/324675.htm

void Clock(void)
{
miao++;
if(miao==60)
{
miao=0;
fen++;
if(fen==60)
{
fen=0;
shi++;
if(shi==24)
{
shi=0;
}
write_sfm(2,shi);
}
write_sfm(5,fen);
}
write_sfm(8,miao);

}

void keyscan()
{

if(keyin!=0x0f)
{
delay(5); //延時消抖
if(keyin != 0x0f) //再次檢測按鍵狀態(tài)
{
temp=keyin;
while(keyin != 0x0f); //等待按鍵被放開
if(temp==0x0e)
{
keynum++;
switch(keynum)
{
case 1:
_DINT();
// CCTL0 &=~ CCIE; //兩種停止時鐘的方法效果一樣
write_com(0x80+0x40+9);
write_com(0x0f);//光標開始閃
break;
case 2:
write_com(0x80+0x40+6);break;
case 3:
write_com(0x80+0x40+3);break;
case 4:
keynum=0;
write_com(0x0c);//開顯示,光標不顯示
_EINT();
// CCTL0|=CCIE; //使用相應打開時鐘的方法
break;
}
}
if(temp==0x0d)
{
// while(keyin != 0x0d); //等待按鍵被放開
switch(keynum)
{
case 1:
miao++;
if(miao==60)miao=0;
write_sfm(8,miao);
write_com(0x80+0x40+9);
break;
case 2:
fen++;
if(fen==60)fen=0;
write_sfm(5,fen);
write_com(0x80+0x40+6);
break;
case 3:
shi++;
if(shi==24)shi=0;
write_sfm(2,shi);
write_com(0x80+0x40+3);
break;
}
}

if(temp==0x0b)
{
// while(keyin != 0x0d); //等待按鍵被放開
switch(keynum)
{
case 1:
miao--;
if(miao==-1)miao=59;
write_sfm(8,miao);
write_com(0x80+0x40+9);
break;
case 2:
fen--;
if(fen==-1)fen=59;
write_sfm(5,fen);
write_com(0x80+0x40+6);
break;
case 3:
shi--;
if(shi==-1)shi=23;
write_sfm(2,shi);
write_com(0x80+0x40+3);
break;
}
}

}
}
}

int main( void )
{ P6DIR|=BIT3;
P6OUT|=BIT3;
//上兩句是打開1602的背光電源

WDTCTL = WDTPW + WDTHOLD;

lcd_init();
delay(500);

write_com(0x80+0x40+4);
write_data(:);
write_com(0x80+0x40+7);
write_data(:);
write_sfm(2,shi);
write_sfm(5,fen);
write_sfm(8,miao);


CCR0 = 32768 - 1;//設置定時器A的中斷時間為1S
TACTL = TASSEL_1 + MC_1; //計數(shù)時鐘ACLK, 增計數(shù)模式
CCTL0 |= CCIE; //使能CCR0比較中斷
_EINT();//打開全局中斷


P1DIR = 0xf0; //設置P1.0~P.3為輸入狀態(tài)
// P1DIR = BIT7; //設置P1.0~P.3為輸入狀態(tài),P1.7為輸出
// P1OUT = 0;
//以上兩句是在沒有獨立按鍵情況下把P1_7拉低成為地線

while(1)
{
keyscan();
//本程序如果加低功耗模式會使按鍵功能失效
}
}

/*******************************************
函數(shù)名稱:TimerA_ISR
功 能:定時器A的中斷服務函數(shù)
********************************************/
#pragmavector=TIMERA0_VECTOR
__interrupt void TimerA_ISR(void)
{
Clock();
}
//到此時鐘加按鍵完成


上一頁 1 2 下一頁

關鍵詞: MSP430晶振時

評論


技術專區(qū)

關閉