為什么這個也不可以實現(xiàn)你,同樣的問題
#include<reg51.h> //包含51單片機寄存器定義的頭文件
unsigned char keyval; //儲存按鍵值
#define uchar unsigned char
#define uint unsigned int
code tabup[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
code tabdown[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
uint x,y;
/*************************************************
函數(shù)功能:流水燈延時
**************************************************/
void led_delay(void)
{
unsigned char i,j;
for(i=0;i<250;i++)
for(j=0;j<250;j++);
}
/*************************************************
函數(shù)功能:軟件消抖延時
**************************************************/
void delay20ms(void)
{
unsigned char i,j;
for(i=0;i<100;i++)
for(j=0;j<60;j++);
}
/*************************************************
函數(shù)功能:正向流水點亮LED
**************************************************/
void forward(void)
{
for(x=0;x<8;x++)
{
P1=tabup[x];
led_delay();
}
}
/*************************************************
函數(shù)功能:反向流水點亮LED
**************************************************/
void backward(void)
{
for(y=0;y<8;y++)
{
P1=tabdown[y];
led_delay();
}
}
/*************************************************
函數(shù)功能:關閉所有LED
**************************************************/
void stop(void)
{
P1=0xff; //關閉8個LED
}
/*************************************************
函數(shù)功能:閃爍點亮LED
**************************************************/
void flash(void)
{
P1=0x00; //點亮8個LED
led_delay();
}
/*************************************************
函數(shù)功能:主函數(shù)
**************************************************/
void main(void) //主函數(shù)
{
SCON = 0x50; //設定串口工作方式
PCON = 0x00; //波特率不倍增
TMOD = 0x20; //定時器1工作于8位自動重載模式, 用于產生波特率
EA = 1;
ES = 1; //允許串口中斷
TL1 = 0xfd;
TH1 = 0xfd; //波特率9600
TR1 = 1;
while(1);
}
/*************************************************
函數(shù)功能:定時器T0的中斷服務子程序
**************************************************/
void serial() interrupt 4
{
ES = 0; //關閉串行中斷
RI = 0; //清除串行接受標志位
keyval = SBUF; //從串口緩沖區(qū)取得數(shù)據
switch(keyval)
{
case 1:forward();break;
case 2:backward();break;
case 3:stop();break;
case 4:flash();break;
}
ES = 1; //允許串口中斷
}
|