📄 avr_ds.c
字号:
#include <mega16.h>
#include <1335.h>
#include <ads7843.h>
#include <delay.h>
#include <pic.txt>
#include <stdlib.h>
#define peng PINA.4
#define fengming PORTA.5
flash unsigned char SOUNDLONG[]=
{
14,5,18,18,18,36,
14,5,18,18,18,36,
14,5,18,18,18,18,18,
14,5,18,18,18,36,
0, //
18,18,18,18,18,
18,18,18,18,18,
18,18,18,18,18,
0 //
};
flash unsigned char SOUNDTONE[]=
{
141,141,127,141,106,113,
141,141,127,141,95,106,
141,141,71,84,106,113,127,
79,79,84,106,95,106,
0, //
141,127,113,106,95,
84,79,71,79,84,
95,106,113,127,141,
0 //
};
int randx,randy;
long int i,j,delay;
int hit;
int flag;
unsigned char checkinterrupt( Uchar x, Uchar y)
{
delay_ms(5);
if (peng==0)
{
Yaddress=TouchReadAddress(0xdc);
Xaddress=TouchReadAddress(0x9c);
Xaddress=Xaddress*14/10-15;
Yaddress=Yaddress*24/21-21;
if(Xaddress>=320) Xaddress=319;
if(Yaddress>=240) Yaddress=239;
if(Xaddress<0) Xaddress=0;
if(Yaddress<0) Yaddress=0;
if (Xaddress>=x*80&&Xaddress<=(x+1)*80&&Yaddress>=80*y&&Yaddress<=80*(y+1))
{
fengming=0;
delay_ms(1);
fengming=1;
delay_ms(1);
fengming=0;
return 1;
}
}
else
return 0;
}
void Music(unsigned char number)
{
unsigned int k,n;
unsigned int SoundLong,SoundTone;
unsigned int ii=0,jj=0,m;
for(k=0;k<number-1;k++)
{
while(SOUNDLONG[ii] !=0){ii++;}
ii++;
if(ii>=43) ii=0;
}
for(k=0;k<number-1;k++)
{
while(SOUNDTONE[jj] !=0){jj++;}
jj++;
if(jj>=43) jj=0;
}
do
{
if (ii>=43) ii=0;
if (jj>=43) jj=0;
SoundLong=SOUNDLONG[ii];
SoundTone=SOUNDTONE[jj];
ii++;
jj++;
for(n=0;n<SoundLong;n++)
{
for(k=0;k<18;k++)
{
PORTA.5=0;
for(m=0;m<SoundTone/2;m++)
;
PORTA.5=1;
for(m=0;m<SoundTone/2;m++)
;
}
}
delay_us(300);
}while((SOUNDLONG[ii] !=0) || (SOUNDTONE[jj] !=0));
PORTA.5=0;
}
void main(void)
{
PORTA=0x10;
DDRA=0x2d;
PORTC=0x00;
DDRC=0xff;
PORTD=0x00;
DDRD=0xff;
// External Interrupt(s) initialization
// INT0: On
// INT0 Mode: Falling Edge
// INT1: Off
// INT2: Off
GICR|=0x40;
MCUCR=0x02;
MCUCSR=0x00;
GIFR=0x40;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: 8000.000 kHz
// Mode: Normal top=FFh
// OC0 output: Disconnected
TCCR0=0x01;
TCNT0=0x00;
OCR0=0x00;
// Global enable interrupts
#asm("sei")
LcmInition();
disp_clear(0x00);
sed1335_Dispon(0b01010100);
delay=100000;
fengming=0;
while (1)
{
flag=0;
disp_word( 1, 1, pic , 0);//显示开始图像
disp_word( 2, 1, pic , 1);
while((checkinterrupt(1,1))) //点击开始
{
disp_clear(0x00);
while(1)
{
hit=0;
for(j=0;j<10;j++)
{
srand(TCNT0); //产生随机数
randx=rand()%4;
srand(TCNT0); //产生随机数
randy=rand()%3;
disp_word( randx, randy, pic , 1);
for(i=0;i<delay;i++)
{
if (peng==0)
if(checkinterrupt(randx,randy))
{
hit++;
//disp_clear(0x00);
disp_word(randx,randy,pic,2);
delay_ms(100);
disp_clear(0x00);
break;
}
}
disp_clear(0x00);
}
if(hit>8)
{
disp_word( 1, 1, pic , 3);delay-=20000;
Music(2);
while(!(checkinterrupt(1,1)));
disp_clear(0x00);
}
else {disp_word( 1, 1, pic , 4);Music(1);while(!(checkinterrupt(1,1)));disp_clear(0x00);flag=1;delay=100000;break;}
}
if(flag) break;
}
};
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -