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

📄 newc.lst

📁 该程序实现的是可控流水灯 /* 接P3.2 的键为开始键
💻 LST
字号:
C51 COMPILER V7.20   NEWC                                                                  02/13/2009 14:54:13 PAGE 1   


C51 COMPILER V7.20, COMPILATION OF MODULE NEWC
OBJECT MODULE PLACED IN NewC.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE NewC.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /*************************************************/
   2          /*名称:可控流水灯
   3          /*描述:该程序实现的是可控流水灯
   4          /*              接P3.2 的键为开始键,按此键则灯开始流动(由下而上)
   5          /*              接P3.3 的键为停止键,按此键则停止流动,所有灯暗
   6          /*              接P3.4 的键为向上键,按此键则灯由上向下流动
   7          /*              接P3.5 的键为向下键,按此键则灯由下向上流动
   8          /*作成日期:2009/2/3
   9          /*作者:臧成威
  10          /*************************************************/
  11          
  12          #include <reg51.h>
  13          //#include <intrins.h>
  14          
  15          bit upDown = 1;                                                 //定义upDown为流向,1为由下至上,0为由上至下
  16          bit onOff = 0;                                                  //定义onOff为开关,0为关闭,1为开启
  17          unsigned char i = 0;                                    //定义i为计数器,用来累加计数
  18          
  19          void keyProcess (void);
  20          void action (void);
  21          
  22          /*************************************************/
  23          /*名称:main
  24          /*描述:C语言的主函数,该程序的入口
  25          /*参数:void
  26          /*返回值:void
  27          /*作成日期:2009/2/3
  28          /*作者:臧成威
  29          /*************************************************/
  30          
  31          void main (void)
  32          {
  33   1              TMOD = 0x01;                                            //设定定时器T0工作在方式1
  34   1              TH0 = 0xd8;                                                     //初始化定时器初值,使其产生10ms的中断(认为晶振为12MHZ所产生)
  35   1              TL0 = 0xf0;
  36   1              IE = 0x82;                                                      //允许CPU中断,并打开定时器T0中断
  37   1              TR0 = 1;                                                        //定时器开始定时
  38   1              while( 1 );                                                     //等待中断产生
  39   1      }
  40          
  41          
  42          /*************************************************/
  43          /*名称:T0_ISR  
  44          /*描述:定时器T0中断响应函数
  45          /*参数:void
  46          /*返回值:void
  47          /*作成日期:2009/2/3
  48          /*作者:臧成威
  49          /*************************************************/
  50          
  51          void delay ( unsigned char i )
  52          {
  53   1              while (i--);
  54   1              return ;
  55   1      }
C51 COMPILER V7.20   NEWC                                                                  02/13/2009 14:54:13 PAGE 2   

  56          
  57          void T0_ISR (void) interrupt 1 using 1
  58          {
  59   1              TH0 = 0xd8;                                                     //重装初值
  60   1              TL0 = 0xf0;
  61   1              keyProcess();                                           //运行键盘扫描函数
  62   1              action();                                                       //运行走马灯函数
  63   1      }
  64          
  65          
  66          /*************************************************/
  67          /*名称:keyProcess
  68          /*描述:键盘处理函数
  69          /*参数:void
  70          /*返回值:void
  71          /*作成日期:2009/2/3
  72          /*作者:臧成威
  73          /*************************************************/
  74          
  75          void keyProcess (void)
  76          {
  77   1              unsigned char key;                                      //定义key为按下键值
  78   1              key = P3;                                                       //读取P3口
  79   1              if ( key == 0xff ) return ;                     //如果没有键按下,退出函数
  80   1      //      _nop_();                                                        //延时消抖
  81   1      //      _nop_();
  82   1      //      _nop_();
  83   1              delay(100);
  84   1              if ( key != P3 ) return ;
  85   1              switch ( key )                                          //根据键值处理
  86   1              {
  87   2              case 0xfb :     if ( onOff == 0 )       P1 = 0x7f;
  88   2                                      onOff = 1;
  89   2                                      break;
  90   2              case 0xf7 :     onOff = 0;
  91   2                                      break;
  92   2              case 0xef : upDown = 1;
  93   2                                      break;
  94   2              case 0xdf :     upDown = 0;
  95   2                                      break;
  96   2          default       :     break;
  97   2              }
  98   1      }
  99          
 100          
 101          /*************************************************/
 102          /*名称:action
 103          /*描述:LED显示函数,根据onOff与upDown来亮灭LED
 104          /*参数:void
 105          /*返回值:void
 106          /*作成日期:2009/2/3
 107          /*作者:臧成威
 108          /*************************************************/
 109          
 110          void action (void)
 111          {
 112   1              if ( onOff == 0 )                                       //如果开关onOff为关,则将P1口重置退出函数
 113   1              {
 114   2                      P1 = 0xff;
 115   2                      return;
 116   2              }
 117   1              if ( i == 250 )                                         //计数器记满250次,灯流动,否则计数器i自加
C51 COMPILER V7.20   NEWC                                                                  02/13/2009 14:54:13 PAGE 3   

 118   1              {
 119   2                      i = 0;
 120   2                      if ( upDown == 1 ) 
 121   2                              {
 122   3                                      P1 = P1>>1|0x80;
 123   3                                      if ( P1 == 0xff ) P1 = 0x7f;
 124   3                              }
 125   2                      else
 126   2                              {
 127   3                                      P1 = P1<<1|0x01;
 128   3                                      if ( P1 == 0xff ) P1 = 0xfe;
 129   3                              }
 130   2              }
 131   1              else
 132   1                      i++;
 133   1              return;
 134   1      }


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


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

⌨️ 快捷键说明

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