学习C语言对学单片机和嵌入式有很大的帮助,坚持每天的学习,提高自己的社会的就业竞争力。
#include "reg51.h"
#include "intrins.h"
#define uchar unsigned char //数据类型宏定义
#define uint unsigned int
/*********************引脚定义********************/
#define out P2 //定义P2口名称out
#define KEY P3 //定义P3口名称KEY
sbit KEY1 = P3^0;//按键引脚定义
sbit KEY2 = P3^1;//按键引脚定义
sbit KEY3 = P3^2;//按键引脚定义
sbit KEY4 = P3^3;//按键引脚定义
//void delayms (uint); //延时函数声明
void delayms(unsigned int x)
{
unsigned int i,j;
for(i=0;i<x;i++)
for(j=0;j<125;j++);
}
/*********************主函数**********************/
void main(void)
{
//KEY=1;
KEY=0xff;//给一个初始状态
while(1)
{
uchar i,j;//定义
switch(KEY&0xff)//选择语句
{
case 0xfe://定义选择条件
while(2)
{
out=0x00;//P2口的输出
delayms(500); //延时
out=0xff;//P2口的输出
delayms(500); //延时
if(KEY!=0xfe)//跳出while循环的条件
out=0xff; //重新给P2口初始状态
break;
}
break;
case 0xfd: //定义选择条件
while(3)
{
out=0xfe; //初始化P2口
for(i=0;i<8;i++)//for循环
{
delayms(500); //延时
out=_crol_(out,1);//循环左移1位,点亮下一个LED
}
if(KEY!=0xfd)//跳出while循环的条件
out=0xff; //重新给P2口初始状态
break;
}
break;
case 0xfb: //定义选择条件
while(4)
{
out=0x7f; //初始化P2口
for(j=0;j<8;j++)//for循环
{
delayms(500); //延时
out=_cror_(out,1);//循环右移1位,点亮下一个LED
}
if(KEY!=0xfd)//跳出while循环的条件
out=0xff; //重新给P2口初始状态
break;
}
break;
case 0xf7://定义选择条件
while(5)
{
int a[]={0x7e,0xbd,0xdb,0xe7,0xdb,0xbd,}; //将P2输出状态定义为数组
for(i=0;i<6;i++)//for循环
{
out=a[i]; //P2口根据数组的定义输出灯光状态
delayms(500); //延时
}
if(KEY!=0xf7)//跳出while循环的条件
out=0xff;//重新给P2口初始状态
break;
}
break;
case 0xef://定义选择条件
while(6)
{
for(j=0;j<8;j++)//for循环
{
out=0x7f>>j;//每次循环右移1位
delayms(300); //延时
out=0xff;
delayms(300); //延时
}
if(KEY!=0xef)//跳出while循环的条件
out=0xff;//重新给P2口初始状态
break;
}
break;
case 0xdf://定义选择条件
while(7)
{
for(i=0;i<8;i++)//for循环
{
out=0xfe<<i; //每次循环左移1位
delayms(300); //延时
out=0xff;
delayms(300); //延时
}
if(KEY!=0xdf)//跳出while循环的条件
out=0xff;//重新给P2口初始状态
break;
}
break;
}
}
}
祝各位一起上岸