?? avrcomm.c
字號:
#include <iom8v.h>
void init(void);
void dis_record(int);
void putchar( unsigned char c);
unsigned char getchar(void);
void uart_init(void);
void receive(void);
void speak(int);
char seven_seg[10]={0X3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07,0X7F
,0X6F};
unsigned char ge1,shi1,bai1;
int gamescore,gamerecord;
void main(void)
{
init();
while(1)
{
dis_record(gamerecord);
receive();
putchar(0x0F);
speak(gamescore);
if(gamescore>=gamerecord)
gamerecord=gamescore;
}
}
void init(void)
{
ge1=0;
shi1=0;
bai1=0;
gamescore=0;
gamerecord=456;
uart_init();
}
void speak(int game_score)
{
;
}
void receive(void)
{
unsigned int i ,j;
unsigned char temp;
temp=getchar();////////////////////////////////
ge1=temp;
for(i=0;i<=1000;i++)
{
for(j=0;j<=100;j++)
;
}
temp=getchar();////////////////////////////////
shi1=temp;
for(i=0;i<=1000;i++)
{
for(j=0;j<=100;j++)
;
}
temp=getchar();////////////////////////////////
bai1=temp;
for(i=0;i<=1000;i++)
{
for(j=0;j<=100;j++)
;
}
gamescore=100*bai1+10*shi1+ge1;
}
///////////////////////////////////////////////////////////////////////////////////////
void uart_init(void)
{
/* 設(shè)置波特率*/
UBRR = 51;
UCSRB = (1<<RXEN)|(1<<TXEN);
/* 設(shè)置幀格式: 8 個數(shù)據(jù)位, 1個停止位*/
UCSRC = (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);
}
//////////////////////////////////////////////////////////////////////////////////////
void putchar( unsigned char c)
{
while(!(UCSRA&(1<<UDRE)));
UDR=c;
}
//////////////////////////////////////////////////////////////////////////////////
unsigned char getchar(void)
{
while(!(UCSRA&(1<<RXC)));
return UDR;
}
//////////////////////////////////////////////////////////////////////////////////
void dis_record(int game_record)
{
char ge,shi,bai;
ge=game_record%10;
shi=game_record%100;
shi=game_record/10;
bai=game_record/100;
DDRC=0x3F;
PORTC&=0XF7;//CLR-C3=0
PORTC|=0X08;//CLR-C3=1
PORTC&=0XEF;//G-C4=0
PORTC&=0XDF;//CLK-C5=0 //寫入百位的bit7
if(seven_seg[bai]&0x80)
PORTC|=0X04;//I1=1
else
PORTC&=0XFB;//I1=0
if(seven_seg[shi]&0x80)
PORTC|=0X02;//I2=1
else
PORTC&=0XFD;//I2=0
if(seven_seg[ge]&0x80)
PORTC|=0X01;//I3=1
else
PORTC&=0XFE;//I3=0
PORTC|=0X20;//CLK-C5=1 第0次脈沖
PORTC&=0XDF;//CLK-C5=0 第1次脈沖 //寫入百位的bit6
if(seven_seg[bai]&0x40)
PORTC|=0X04;//I1=1
else
PORTC&=0XFB;//I1=0
if(seven_seg[shi]&0x40)
PORTC|=0X02;//I2=1
else
PORTC&=0XFD;//I2=0
if(seven_seg[ge]&0x40)
PORTC|=0X01;//I3=1
else
PORTC&=0XFE;//I3=0
PORTC|=0X20;//CLK-C5=1
PORTC&=0XDF;//CLK-C5=0 第2次脈沖 //寫入百位的bit5
if(seven_seg[bai]&0x20)
PORTC|=0X04;//I1=1
else
PORTC&=0XFB;//I1=0
if(seven_seg[shi]&0x20)
PORTC|=0X02;//I2=1
else
PORTC&=0XFD;//I2=0
if(seven_seg[ge]&0x20)
PORTC|=0X01;//I3=1
else
PORTC&=0XFE;//I3=0
PORTC|=0X20;//CLK-C5=1
PORTC&=0XDF;//CLK-C5=0 第3次脈沖 //寫入百位的bit4
if(seven_seg[bai]&0x10)
PORTC|=0X04;//I1=1
else
PORTC&=0XFB;//I1=0
if(seven_seg[shi]&0x10)
PORTC|=0X02;//I2=1
else
PORTC&=0XFD;//I2=0
if(seven_seg[ge]&0x10)
PORTC|=0X01;//I3=1
else
PORTC&=0XFE;//I3=0
PORTC|=0X20;//CLK-C5=1
PORTC&=0XDF;//CLK-C5=0 第4次脈沖 //寫入百位的bit3
if(seven_seg[bai]&0x08)
PORTC|=0X04;//I1=1
else
PORTC&=0XFB;//I1=0
if(seven_seg[shi]&0x08)
PORTC|=0X02;//I2=1
else
PORTC&=0XFD;//I2=0
if(seven_seg[ge]&0x08)
PORTC|=0X01;//I3=1
else
PORTC&=0XFE;//I3=0
PORTC|=0X20;//CLK-C5=1
PORTC&=0XDF;//CLK-C5=0 第5次脈沖 //寫入百位的bit2
if(seven_seg[bai]&0x04)
PORTC|=0X04;//I1=1
else
PORTC&=0XFB;//I1=0
if(seven_seg[shi]&0x04)
PORTC|=0X02;//I2=1
else
PORTC&=0XFD;//I2=0
if(seven_seg[ge]&0x04)
PORTC|=0X01;//I3=1
else
PORTC&=0XFE;//I3=0
PORTC|=0X20;//CLK-C5=1
PORTC&=0XDF;//CLK-C5=0 第6次脈沖 //寫入百位的bit1
if(seven_seg[bai]&0x02)
PORTC|=0X04;//I1=1
else
PORTC&=0XFB;//I1=0
if(seven_seg[shi]&0x02)
PORTC|=0X02;//I2=1
else
PORTC&=0XFD;//I2=0
if(seven_seg[ge]&0x02)
PORTC|=0X01;//I3=1
else
PORTC&=0XFE;//I3=0
PORTC|=0X20;//CLK-C5=1
PORTC&=0XDF;//CLK-C5=0 第7次脈沖 //寫入百位的bit0
if(seven_seg[bai]&0x01)
PORTC|=0X04;//I1=1
else
PORTC&=0XFB;//I1=0
if(seven_seg[shi]&0x01)
PORTC|=0X02;//I2=1
else
PORTC&=0XFD;//I2=0
if(seven_seg[ge]&0x01)
PORTC|=0X01;//I3=1
else
PORTC&=0XFE;//I3=0
PORTC|=0X20;//CLK-C5=1
PORTC&=0XDF;//CLK-C5=0
PORTC|=0X20;//CLK-C5=1
PORTC&=0XEF;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -