C语言之路

学习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;     
        }
    }
}

祝各位一起上岸

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值