📄 xieyingdong.c
字号:
#include <avr/io.h>
#include<avr/delay.h>
#include<avr/interrupt.h>
#include<avr/signal.h>
#define uchar unsigned char
#define uint unsigned int
uchar time[4];
uchar dis_buff[6];
uchar time_counter;
uint point_on;
uchar flag;
uchar table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
uchar position[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf};
void delay(uint ms)
{
uint i,j;
for(i=0;i<ms;i++)
_delay_loop_2(4*250);
}
void display()
{
uchar i;
for(i=0;i<=5;i++)
{
PORTA|=_BV(PA3);
PORTB=table[dis_buff[i]];
if(point_on&&(i==1||i==3))
PORTB=0X80;
PORTA&=~_BV(PA3);
PORTA&=~_BV(PA3);
PORTA|=_BV(PA4);
PORTB=position[i];
PORTA&=~_BV(PA4);
delay(1);
PORTA|=_BV(PA4);
PORTB=0XFF;
PORTA&=~_BV(PA4);
}
}
void time_to_disbuff()
{
uchar i ,j=0;
for(i=3;i>0;i--)
{
dis_buff[j++]=time[i]/10;
dis_buff[j++]=time[i]%10;
}
}
ISR(TIMER0_OVF_vect)
{
TCNT0=0;
flag++;
}
void main()
{
DDRA|=_BV(PA3);
DDRA|=_BV(PA4);
DDRB=0XFF;
PORTB=0XFF;
TCCR0=0X05;
TCNT0=0;
TIMSK=0X01;
sei();
time[3]=23;
time[2]=56;
time[1]=55;
time_to_disbuff();
while(1)
{
display();
point_on=~point_on;
if(flag==30)
{
flag=0;
if(++time[1]>=60)
{
time[1]=0;
if(++time[2]>=60)
{
time[2]=0;
if(++time[3]>=24)
{
time[3]=0;
}
}
}
time_to_disbuff();
}
delay(1);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -