?? m16_t2_rtc.c
字號:
#include <iom16v.h>
#define uchar unsigned char
#define uint unsigned int
//segment code//
uchar Table[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar Data[4]={1,2,3,4};//定義初始時間00:00
uchar CNT;
void DelayMs(uchar i)
{
uchar j;
for(;i!=0;i--)
{
for(j=250;j!=0;j--);
}
}
void Display(uchar *p)
{
uchar i,sel=0x01;
for(i=0;i<4;i++)
{
PORTB=sel;
PORTA=0xff-Table[p[i]];
DelayMs(1);
sel=sel<<1;
}
}
void Init_IO(void)
{
DDRA=0xff;
PORTA=0xff;
DDRB=0xff;
PORTB=0xff;
DDRC=0xff;
PORTC=0xff;
}
void Add_Second(uchar *p)
{
p[3]++;
if(p[3]==10){p[3]=0;p[2]++;}
if(p[2]==6){p[2]=0;p[1]++;}
if(p[1]==10){p[1]=0;p[0]++;}
if(p[0]==6){p[0]=0;}
}
void main(void)
{
uchar i;
Init_IO();
PORTA=0xff;
PORTB=0x00;
DelayMs(10);
PORTB=0xff;
ASSR=0x08;//異步時鐘使能
TCCR2=0x07;//32.768KHZ的晶振1024分頻作為T/C2的時鐘源
TIMSK=0x40;//T/C2中斷溢出使能
SREG=SREG|0x80;//全局中斷使能
while(1)
{
Display(Data);
if(CNT==32)
{
CNT=0;
Add_Second(Data);
}
}
}
#pragma interrupt_handler Timer2:5
void Timer2(void)
{CNT=CNT+1;}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -