|
This program was produced by the
CodeWizardAVR V2.03.4 Standard
Automatic Program Generator
?Copyright 1998-2008 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com
Project :
Version :
Date : 2011-11-18
Author :
Company :
Comments:
Chip type : ATmega16
Program type : Application
Clock frequency : 16.000000 MHz
Memory model : Small
External RAM size : 0
Data Stack size : 256
*****************************************************/
#include <mega16.h>
flash unsigned char led_buffer[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
flash unsigned char position[6]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf};
unsigned char time[3];
unsigned char display_buffer[6];
//unsigned char point_on;
unsigned char timecout,count,keyflag,flag;
bit timeflag;
void time_to_buffer(void)
{
unsigned char i,j=0;
for(i=0;i<=3;i++)
{
display_buffer[j++]=time%10;
display_buffer[j++]=time/10;
}
}
void display(void)
{
PORTC=0XFF;
PORTA=led_buffer[display_buffer[count]];
if(count==2||count==4)PORTA|=0X80;
PORTC=position[count] ;
if(++count>=6)count=0;
}
// Timer 0 output compare interrupt service routine
interrupt [TIM0_COMP] void timer0_comp_isr(void)
{
display();
if(++timecout>=5)
{
timecout=0;
timeflag=1;
if(flag==1)
{
++time[0];
}
}
}
unsigned char key_scan(void)
{
static unsigned char key_state;
unsigned char key_return;
bit key_temp;
key_temp=PIND.1;
switch(key_state)
{
case 0:
if(!key_temp) key_state++;
break;
case 1:
if(!key_temp)
{
key_state++;
++keyflag;
key_return=1 ;
}
else key_state=0;
break;
case 2:
if(key_temp)key_state=0;
break;
}
return key_return;
}
// Declare your global variables here
void main(void)
{
DDRA=0xFF;
PORTC=0xFF;
DDRC=0xFF;
PORTD=0x01;
DDRD=0x00;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: 62.500 kHz
// Mode: CTC top=OCR0
// OC0 output: Disconnected
TCCR0=0x0C;
TCNT0=0x00;
OCR0=0x7c;
TIMSK=0x02;
time[2]=0;time[1]=0;time[0]=0;
time_to_buffer();
// Global enable interrupts
#asm("sei")
while (1)
{
if(timeflag)
{
timeflag=0;
if(key_scan())
{
switch(keyflag)
{
case 0:
;
break;
case 1:
flag=1;
break;
case 2:
flag=0;
break;
case 3:
keyflag=0;
time[2]=0;time[1]=0;time[0]=0;
break;
}
}
}
if(time[0]>=100)
{
time[0]=0;
if(++time[1]>=60)
{
time[1]=0;
++time[2];
}
}
time_to_buffer();
};
} |
阿莫论坛20周年了!感谢大家的支持与爱护!!
如果想吃一顿饺子,就得从冰箱里取出肉,剁馅儿,倒面粉、揉面、醒面,擀成皮儿,下锅……
一整个繁琐流程,就是为了出锅时那一嘴滚烫流油的热饺子。
如果这个过程,禁不住饿,零食下肚了,饺子出锅时也就不香了……《非诚勿扰3》
|