#include <REGX52.H>
#include <stdio.h>
#define FOSC 11059200L //System frequency
#define BAUD 9600
sbit LED1 = P0^0;
sbit LED2 = P0^1;
sbit LED3 = P0^2;
sbit LED4 = P0^3;
sbit LED5 = P0^4;
sbit LED6 = P0^5;
sbit LED7 = P0^6;
sbit LED8 = P0^7;
sbit K1=P1^0;
sbit K2=P1^1;
sbit K3=P1^2;
void Delay500ms() //@11.0592MHz
{
unsigned char i, j, k;
i = 4;
j = 129;
k = 119;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
int m,n;
unsigned char group[9]={0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff,0x00};
unsigned char group_code[9 ]={ 0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x00 };
void house_race(){
for(m=0;m<9;m++){
P0=group_code[m]; //LED1?
Delay500ms();
P0 = 0x00;//LED1?
Delay500ms();
}
for(m=8;m>=0;m--){
P0 =group_code[m]; //LED1?
Delay500ms();
P0 = 0x00;//LED1?
Delay500ms();
}
}
void flowing(){
for(m=0;m<3;m++){
for(n=0;n<9;n++){
P0 = group[n]; //LED1?
Delay500ms();
}
}
}
void uart_init(void);
void Uart_send(unsigned char dat);
void Uart_send_str(unsigned char *p);
char putchar (char c)
{
SBUF = c; // 把字符c写入发送寄存器
while(!TI); // 等待发送数据完成
TI = 0; // 清除发送中断标志位
}
void Uart_send(unsigned char dat)
{
SBUF = dat;
while(!TI);
TI = 0;
}
void Uart_send_str(unsigned char *p)
{
while(*p!='\0')
{
Uart_send(*p);
p++;
}
}
void Uart_Isr() interrupt 4
{
if (RI == 1)
{
RI = 0; //Clear receive interrupt flag
}
}
void uart_init(void)
{
PCON &= 0x7F; //波特率不倍速
SCON = 0x50; //8-bit variable UART
TMOD = 0x20;//0010 0000 //Set Timer1 as 8-bit auto reload mode
TH1 = TL1 = -(FOSC/12/32/BAUD); //Set auto-reload vaule
TR1 = 1; //Timer1 start run
ES = 1; //Enable UART interrupt
EA = 1; //Open master interrupt switch
}
void main()
{
uart_init();
P0=0;
while(1)
{
if(K1==0)
{
while(!K1)
LED1=!LED1;
}
if(K2==0)
{
while(!K2)
flowing();
house_race();
}
if(K3==0)
{
while(!K3)
for(n=0;n<3;n++){
printf("胡斌! \r\n");
printf("32300410 \r\n");
Delay500ms();
}
}
}
}