|
本帖最后由 qwettyuio 于 2021-4-28 10:28 編輯
#include<reg51.h> //包含51單片機(jī)寄存器定義的頭文件
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ù)功能:流水燈延時(shí)
**************************************************/
void led_delay(void)
{
unsigned char i,j;
for(i=0;i<250;i++)
for(j=0;j<250;j++);
}
/*************************************************
函數(shù)功能:軟件消抖延時(shí)
**************************************************/
void delay20ms(void)
{
unsigned char i,j;
for(i=0;i<100;i++)
for(j=0;j<60;j++);
}
/*************************************************
函數(shù)功能:正向流水點(diǎn)亮LED
**************************************************/
void forward(void)
{
for(x=0;x<8;x++)
{
P1=tabup[x];
led_delay();
}
}
/*************************************************
函數(shù)功能:反向流水點(diǎn)亮LED
**************************************************/
void backward(void)
{
for(y=0;y<8;y++)
{
P1=tabdown[y];
led_delay();
}
}
/*************************************************
函數(shù)功能:關(guān)閉所有LED
**************************************************/
void stop(void)
{
P1=0xff; //關(guān)閉8個(gè)LED
}
/*************************************************
函數(shù)功能:閃爍點(diǎn)亮LED
**************************************************/
void flash(void)
{
P1=0x00; //點(diǎn)亮8個(gè)LED
led_delay();
}
void main(void) //主函數(shù)
{
SCON = 0x50; //設(shè)定串口工作方式
PCON = 0x00; //波特率不倍增
TMOD = 0x20; //定時(shí)器1工作于8位自動重載模式, 用于產(chǎn)生波特率
EA = 1;
ES = 1; //允許串口中斷
TL1 = 0xfd;
TH1 = 0xfd; //波特率9600
TR1 = 1;
while(1);
}
/*************************************************
函數(shù)功能:定時(shí)器T0的中斷服務(wù)子程序
**************************************************/
void serial() interrupt 4
{
ES = 0; //關(guān)閉串行中斷
RI = 0; //清除串行接受標(biāo)志位
keyval = SBUF; //從串口緩沖區(qū)取得數(shù)據(jù)
switch(keyval)
{
case 1:forward();break;
case 2:backward();break;
case 3:stop();break;
case 4:flash();break;
}
ES = 1; //允許串口中斷
}
|
-
|