C51入门1,跑马灯和LED实验

刚开始接触的是C51,自己以前写的程序,在自己的实验板上实现的,现在整理一下留做纪念哈!!!

实验一:一个LED灯闪烁

//一个LED灯闪烁实验
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
//头文件
#include <reg52.h>
//端口设置
sbit P10=P1^0;

char code dx516[3] _at_ 0x003b;
//主函数
void main(void)
{   uint i;
    P10=0;
    while(1)
  {
  P10=~P10;    //取反
  for (i=0;i<20000;i++);//延时 
   }
}

实验二:跑马灯实验

//跑马灯实验
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long

#include <reg52.h>
//端口设置
sbit P10=P1^0;
sbit P11=P1^1;
sbit P12=P1^2;
sbit P13=P1^3;
char code dx516[3] _at_ 0x003b;
//主函数
void main(void)
{   uint i; 
    while(1)
  {
  P13=1;P10=0;    //相邻端口取反
  for (i=0;i<40000;i++); //延时
  P10=1;P11=0;
  for (i=0;i<40000;i++);
  P11=1;P12=0;
  for (i=0;i<40000;i++);
  P12=1;P13=0;
  for (i=0;i<40000;i++);
   }
}

实验三:一个按键控制一个LED的亮和灭

//一个按键控制LED
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long

#include <reg52.h>
//端口设置
sbit P10=P1^0;
sbit K1=P3^2;
sbit K2=P3^5;
char code dx516[3] _at_ 0x003b;
//主函数
void main(void)
{   
    while(1)
  {
    if (!K1) //按一下
  {
  P10=0;  //
  }
   if (!K2)  //再按一下
  {
  P10=1;  //
  }
   }
}

带有去抖动的程序:

//去抖动的按键控制LED灯实验
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long

#include <reg52.h>
//端口设置
sbit P10=P1^0; //LED灯

sbit K1=P3^2; //按键
char code dx516[3] _at_ 0x003b;
//主函数
void main(void)
{  
   bit light;
   uint i;
   while(1)
  {
   if (!K1)     //确认按键按下
   {
  for (i=0;i<1000;i++);  //延时
   light=~light;   //灯取反
   while(!K1);    //去抖动的作用
   for (i=0;i<1000;i++);
  }
  P10=light;
  }
 }

 

posted on 2013-03-16 16:48  AI_JJ  阅读(537)  评论(0)    收藏  举报

导航