if(f[8]==time+100) PORTD&=0xfe; if(f[9]==time+100) PORTD&=0xfd; if(f[10]==time+100) PORTD&=0xfb; if(f[11]==time+100) PORTD&=0xf7; }
if(time==400) {PORTB&=0x00;PORTD&=0xf0;} }
uchar getkey(void) {
uchar key;
if((PINA&0x1f)!=0x1f) { _delay_us(50); if((PINA&0x1f)!=0x1f) { key=(PINA&0x1f);
while((PINA&0x1f)!=0x1f); return key; }
}
return 0; }
int main( void ) {
uchar flag,flag1; flag=0;
21
uint run=0; sys_init();
_delay_ms(1000);
sei(); //开总中断 gait1(); for(;;) {
flag1=(PIND&0xc0); if(flag!=flag1&&run>5000) {
if(flag1==0xc0) {
flag=flag1; cli();
_delay_ms(10); gait1(); sei(); }
if(flag1==0x00) {
flag=flag1; cli();
_delay_ms(10); gait2(); sei(); }
if(flag1==0x40)
22
{
flag=flag1; cli();
_delay_ms(10); gait4(); sei(); }
if(flag1==0x80) {
flag=flag1; cli();
_delay_ms(10); gait3(); sei(); } run=0; } run++; }; }
//===========1602.h================//
#ifndef USE_1602LCD_H_ #define USE_1602LCD_H_ #include #include
#define Com_Port PORTA //指令口 #define Print_Port PORTC //数据口 #define RS_set Com_Port|=(1<<7) #define RS_clr Com_Port&=~(1<<7)
23
#define RW_set Com_Port|=(1<<6) #define RW_clr Com_Port&=~(1<<6) #define E_set Com_Port|=(1<<5) #define E_clr Com_Port&=~(1<<5) extern void Lcd_init(void);
extern void Show_char(uchar x,uchar y,uchar c); extern void Show_str(uchar x,uchar y,uchar *s);
extern void Show_num(uchar x,uchar y,uchar num,uchar j); #endif
//===========1602.c================//
#include <1602LCD.h> void Write_com(uchar com) { RS_clr; RW_clr; E_set;
Print_Port=com; _delay_us(50); E_clr; }
void Write_data(uchar data) { RS_set; RW_clr; E_set;
Print_Port=data; _delay_us(50); E_clr; }
void Show_char(uchar x,uchar y,uchar c)
24
{
if (y == 0) {
Write_com(0x80 + x); } else {
Write_com(0xC0 + x); } Write_data(c); }
void Show_num(uchar x,uchar y,uchar num,uchar j) { j--;
if(!num) {Show_char(x,y,48);j--;x--;} do {
if(num)
{Show_char(x,y,num+48);}
else { if(!num) Show_char(x,y,27); else Show_char(x,y,num+48);
}
num/=10; x--; }
while(j--); }
void Show_str(uchar x,uchar y,uchar *s) {
if (y == 0)
25