⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 51

📁 51单片机大量源码
💻
字号:
C51 COMPILER V8.09   EX73                                                                  07/12/2010 13:38:42 PAGE 1   


C51 COMPILER V8.09, COMPILATION OF MODULE EX73
OBJECT MODULE PLACED IN ex73.OBJ
COMPILER INVOKED BY: D:\Keil\C51\BIN\C51.EXE ex73.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          //独立式键盘控制的4级变速流水灯
   2          #include<reg52.h>        //  包含51单片机寄存器定义的头文件
   3          unsigned char speed;    //储存流水灯的流动速度
   4          sbit S1=P3^2;          //位定义S1为P3.2
   5          sbit S2=P3^3;          //位定义S2为P3.3
   6          sbit S3=P3^4;          //位定义S3为P3.4
   7          sbit S4=P3^5;          //位定义S4为P3.5
   8          /**************************************************************
   9          函数功能:延时20ms的子程序
  10          **************************************************************/
  11          void delay20ms(void)    //3*i*j+2*i=3*100*60+2*100=20000μs=20ms;
  12          {
  13   1        unsigned char i,j;
  14   1        for(i=0;i<100;i++)
  15   1         for(j=0;j<60;j++)
  16   1                 ;
  17   1      }
  18          /**************************************************************
  19          函数功能:延时可调子程序
  20          入口参数:x
  21          **************************************************************/
  22          void delay(unsigned char x)
  23             {
  24   1                unsigned char k;
  25   1                for(k=0;k<x;k++)
  26   1                       delay20ms();
  27   1              }
  28          /**************************************************************
  29          函数功能:主函数
  30          **************************************************************/
  31          void main(void)
  32          {
  33   1         TMOD=0x02;     //使用定时器T0的模式2
  34   1              EA=1;          //开总中断
  35   1              ET0=1;         //定时器T0中断允许
  36   1              TR0=1;         //定时器T0开始运行
  37   1              TH0=256-200;   //定时器T0赋初值,每200微妙来1次中断请求
  38   1              TL0=256-200;
  39   1        speed=3;        //默认流水灯流水点亮延时20ms×3=60ms
  40   1         while(1)
  41   1                {
  42   2                          P1=0xfe;         //第一个灯亮
  43   2                          delay(speed);    //调用延时可调子程序
  44   2                          P1=0xfd;         //第二个灯亮
  45   2                          delay(speed);
  46   2                          P1=0xfb;          //第三个灯亮
  47   2                         delay(speed);
  48   2                         P1=0xf7;          //第四个灯亮
  49   2                         delay(speed);
  50   2                        P1=0xef;          //第五个灯亮
  51   2                    delay(speed);
  52   2                              P1=0xdf;          //第六个灯亮
  53   2                         delay(speed);
  54   2                              P1=0xbf;          //第七个灯亮
  55   2                      delay(speed);
C51 COMPILER V8.09   EX73                                                                  07/12/2010 13:38:42 PAGE 2   

  56   2                              P1=0x7f;          //第八个灯亮
  57   2                     delay(speed);    
  58   2                      P1=0xff;
  59   2            }
  60   1         }
  61          /**************************************************************
  62          函数功能:定时器T0的中断服务子程序,进行键盘扫描
  63          **************************************************************/
  64          void intersev(void) interrupt 1 using 1
  65          {
  66   1        TR0=0;            //关闭定时器T0/
  67   1        P3=0xff;           //将P1口的均置高电平"1"
  68   1        if((P3&0x3C)!=0x3C)    //如果有键按下
  69   1          {
  70   2                 delay20ms();       //延时20ms,软件消抖
  71   2                  if((P3&0x3c)!=0x3c)  //确实有键按下
  72   2                        {
  73   3                           if(S1==0)       //如果是按键S1按下
  74   3                                    speed=5;   //流水灯流水点亮延时20ms×5=100ms
  75   3                                if(S2==0)      //如果是按键S2按下
  76   3                                    speed=10;   //流水灯流水点亮延时20ms×10=200ms
  77   3                                if(S3==0)      //如果是按键S3按下
  78   3                                    speed=25;  //流水灯流水点亮延时20ms×25=500ms
  79   3                                if(S4==0)      //如果是按键S4按下
  80   3                                    speed=50;  //流水灯流水点亮延时20ms×50=1000ms
  81   3                         }    
  82   2               }      
  83   1              TR0=1;               //启动定时器T0
  84   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    178    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      1    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -