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

📄 inandout.lst

📁 前两天一个朋友要我写一个51例程
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.01   INANDOUT                                                              09/27/2008 14:40:16 PAGE 1   


C51 COMPILER V8.01, COMPILATION OF MODULE INANDOUT
OBJECT MODULE PLACED IN INANDOUT.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE INANDOUT.C ROM(SMALL) BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /*按钮的输入说明:
   2                  1.按钮只能是自复位按钮,即按下接通,松开后即断开
   3                  2.按钮编号24个,1-3为特殊功能按钮,1代表总开关,
   4                          总开关功能: 一只作为关闭所有输出的回路使用,具体的使用过程是,
   5                                       主开关按下时如果当前有工作的回路,则保存该当前的工作状态,并将电源关闭
   6                                                   如果当前没有任何工作的回路,则按照上次的保存打开工作的回路.
   7          
   8          
   9                           2代表调光第一路,3代表调光第二路,其他按钮均可以设定
  10          
  11          通过通讯设置按钮与开关的对应模式
  12          除前3个按钮不可以设置外,其他的按钮都可以设置: 具体设置方法如下
  13          1.      每个按钮都可以设定3个对应的输出继电器.即一个按钮可以对应3个输出.
  14          2.  输出的的方法有多种,由以下组和的数字表示,组和结构如下所示顺序
  15              
  16                  按钮编号(4-24)   按钮所控制的输出个数(1-3)
  17                  输出编号1(1-23)  输出模式  附加参数1,附加参数2,附加参数3
  18                  输出编号2(1-23)  输出模式  附加参数1,附加参数2,附加参数3       (如果按钮所控制的输出个数>=2,则具备该项)
  19                  输出编号3(1-23)  输出模式  附加参数1,附加参数2,附加参数3       (如果按钮所控制的输出个数=3,则具备该项)
  20          功能: 
  21          1. 除上述的描述外,另外具备掉电存储的功能,即停电前存储当前的状态,来电后,按照停电前的状态接通外部回路
  22                该功能只针对即时打开的开关和调光的开关起作用,其他的特别是延时操作的开关不起作用.
  23          2. 支持通信配置以上参数的功能,暂时不支持开关操作的通信命令,
  24          3. 以上与通信相关的条款,由通信规约负责解析.
  25          */
  26          #include <inandout.h>
  27          
  28          #include <hardconfig.h>
  29          
  30          #define MaxButton       24
  31          #define MaxTest         10
  32          sbit            OEN             =       P2^7;   
  33          sbit            AL1             =       P2^5 ;
  34          sbit            AL2             =       P2^6 ;
  35          sbit            RL17    =       P2^4 ;
  36          sbit            RL18    =       P2^3 ;
  37          sbit            RL19    =       P2^2 ;
  38          sbit            RL20    =       P2^1 ;
  39          sbit            RL21    =       P2^0 ;
  40          sbit            RL22    =       P1^5 ;
  41          sbit            RL23    =       P1^6 ;
  42          
  43          sbit            CS0             =       P3^7;   
  44          sbit            CS1             =       P3^6 ;
  45          sbit            CS2             =       P3^5 ;
  46          
  47          sbit            ZMADJ1= P1^0;
  48          sbit            ZMADJ2= P1^1 ;
  49          
  50          
  51          uchar   bdata   IN1,IN2,IN3;
  52          uchar   bdata   OUTREG1=0,OUTREG2=0;
  53          uchar   ButtonCt[MaxButton+1];
  54          sbit    RL1             =  OUTREG1^0;
  55          sbit    RL2             =  OUTREG1^1;
C51 COMPILER V8.01   INANDOUT                                                              09/27/2008 14:40:16 PAGE 2   

  56          sbit    RL3             =  OUTREG1^2;
  57          sbit    RL4             =  OUTREG1^3;
  58          sbit    RL5             =  OUTREG1^4;
  59          sbit    RL6             =  OUTREG1^5;
  60          sbit    RL7             =  OUTREG1^6;
  61          sbit    RL8             =  OUTREG1^7;
  62          sbit    RL9             =  OUTREG2^0;
  63          sbit    RL10    =  OUTREG2^1;
  64          sbit    RL11    =  OUTREG2^2;
  65          sbit    RL12    =  OUTREG2^3;
  66          sbit    RL13    =  OUTREG2^4;
  67          sbit    RL14    =  OUTREG2^5;
  68          sbit    RL15    =  OUTREG2^6;
  69          sbit    RL16    =  OUTREG2^7;
  70          
  71          sbit    Bt1             =       IN1^0; 
  72          sbit    Bt2             =       IN1^1;
  73          sbit    Bt3             =       IN1^2;
  74          sbit    Bt4             =       IN1^3;
  75          sbit    Bt5             =       IN1^4;
  76          sbit    Bt6             =       IN1^5;
  77          sbit    Bt7             =       IN1^6;
  78          sbit    Bt8             =       IN1^7;
  79          sbit    Bt9             =       IN2^0; 
  80          sbit    Bt10    =       IN2^1;
  81          sbit    Bt11    =       IN2^2;
  82          sbit    Bt12    =       IN2^3;
  83          sbit    Bt13    =       IN2^4;
  84          sbit    Bt14    =       IN2^5;
  85          sbit    Bt15    =       IN2^6;
  86          sbit    Bt16    =       IN2^7;
  87          sbit    Bt17    =       IN3^0; 
  88          sbit    Bt18    =       IN3^1;
  89          sbit    Bt19    =       IN3^2;
  90          sbit    Bt20    =       IN3^3;
  91          sbit    Bt21    =       IN3^4;
  92          sbit    Bt22    =       IN3^5;
  93          sbit    Bt23    =       IN3^6;
  94          sbit    Bt24    =       IN3^7;
  95          #define DateBus P0
  96          //初始化输出IO  ,全部初始化为低电平(低电平即继电器不工作)
  97          void    GPIO_OUT_Config()
  98          {
  99   1              AL1             =       0;
 100   1              AL2             =       0;
 101   1              DateBus =       0;
 102   1              OEN             =       0;
 103   1              AL1             =       1;
 104   1              AL1             =       0;
 105   1              AL2             =       1;
 106   1              AL2             =       0;
 107   1              RL17    =       0;
 108   1              RL18    =       0;
 109   1              RL19    =       0;
 110   1              RL20    =       0;
 111   1              RL21    =       0;
 112   1              RL22    =       0;
 113   1              RL23    =       0;
 114   1              Disable_InputChip();    
 115   1      }
 116          void    ButtonDataConfig()
 117          {
C51 COMPILER V8.01   INANDOUT                                                              09/27/2008 14:40:16 PAGE 3   

 118   1              uchar   iloop;
 119   1              for(iloop       =       0;iloop < MaxButton;iloop++)  
 120   1              {
 121   2                      ButtonCt[iloop] =       0;      
 122   2              }
 123   1      }
 124          /*输出继电器,参数Number代表第几路,OnOff=0关,=1开*/
 125          void    RelayOut(unsigned       char    Number,bit      OnOff)
 126          {
 127   1              DisableInterrupt();
 128   1              switch(Number)
 129   1              {
 130   2                      case    1:
 131   2                              RL1             =       OnOff;
 132   2                              DateBus =       OUTREG1;
 133   2                              AL1=1;
 134   2                              AL1=0;
 135   2                              break;
 136   2                      case    2:
 137   2                              RL2             =       OnOff;
 138   2                              DateBus =       OUTREG1;
 139   2                              AL1=1;
 140   2                              AL1=0;
 141   2                              break;
 142   2                      case    3:
 143   2                              RL3             =       OnOff;
 144   2                              DateBus =       OUTREG1;
 145   2                              AL1=1;
 146   2                              AL1=0;
 147   2                              break;
 148   2                      case    4:
 149   2                              RL4             =       OnOff;
 150   2                              DateBus =       OUTREG1;
 151   2                              AL1=1;
 152   2                              AL1=0;
 153   2                              break;
 154   2                      case    5:
 155   2                              RL5=OnOff;
 156   2                              DateBus=OUTREG1;
 157   2                              AL1=1;
 158   2                              AL1=0;
 159   2                              break;
 160   2                      case    6:
 161   2                              RL6=OnOff;
 162   2                              DateBus=OUTREG1;
 163   2                              AL1=1;
 164   2                              AL1=0;
 165   2                              break;
 166   2                      case    7:
 167   2                              RL7=OnOff;
 168   2                              DateBus=OUTREG1;
 169   2                              AL1=1;
 170   2                              AL1=0;
 171   2                              break;
 172   2                      case    8:
 173   2                              RL8=OnOff;
 174   2                              DateBus=OUTREG1;
 175   2                              AL1=1;
 176   2                              AL1=0;
 177   2                              break;
 178   2                      case    9:
 179   2                              RL9=OnOff;
C51 COMPILER V8.01   INANDOUT                                                              09/27/2008 14:40:16 PAGE 4   

 180   2                              DateBus=OUTREG2;
 181   2                              AL2=1;
 182   2                              AL2=0;
 183   2                              break;
 184   2                      case    10:
 185   2                              RL10=OnOff;
 186   2                              DateBus=OUTREG2;
 187   2                              AL2=1;
 188   2                              AL2=0;
 189   2                              break;
 190   2                      case    11:
 191   2                              RL11=OnOff;
 192   2                              DateBus=OUTREG2;
 193   2                              AL2=1;
 194   2                              AL2=0;
 195   2                              break;
 196   2                      case    12:
 197   2                              RL12=OnOff;
 198   2                              DateBus=OUTREG2;
 199   2                              AL2=1;
 200   2                              AL2=0;
 201   2                              break;
 202   2                      case    13:
 203   2                              RL13=OnOff;
 204   2                              DateBus=OUTREG2;
 205   2                              AL2=1;
 206   2                              AL2=0;
 207   2                              break;
 208   2                      case    14:
 209   2                              RL14=OnOff;
 210   2                              DateBus=OUTREG2;
 211   2                              AL2=1;
 212   2                              AL2=0;
 213   2                              break;
 214   2                      case    15:
 215   2                              RL15=OnOff;
 216   2                              DateBus=OUTREG2;
 217   2                              AL2=1;
 218   2                              AL2=0;
 219   2                              break;
 220   2                      case    16:
 221   2                              RL16=OnOff;
 222   2                              DateBus=OUTREG2;
 223   2                              AL2=1;
 224   2                              AL2=0;
 225   2                              break;
 226   2                      case    17:
 227   2                              RL17=OnOff;
 228   2                              break;
 229   2                      case    18:
 230   2                              RL18=OnOff;
 231   2                              break;
 232   2                      case    19:
 233   2                              RL19=OnOff;
 234   2                              break;
 235   2                      case    20:
 236   2                              RL20=OnOff;
 237   2                              break;
 238   2                      case    21:
 239   2                              RL21=OnOff;
 240   2                              break;
 241   2                      case    22:
C51 COMPILER V8.01   INANDOUT                                                              09/27/2008 14:40:16 PAGE 5   

 242   2                              RL22=OnOff;
 243   2                              break;
 244   2                      case    23:
 245   2                              RL23=OnOff;
 246   2                              break;
 247   2                      default:
 248   2                              break;
 249   2              }
 250   1              EnableInterrupt();
 251   1      }
 252           /*按钮检测程序*/
 253          void    task_ruputT1(void) interrupt 3 using 1
 254          {
 255   1         DateBus=0xFF;
 256   1         Sel_InputChip_One();
 257   1         IN1= DateBus;
 258   1         Sel_InputChip_Two(); 
 259   1         IN2= DateBus;
 260   1         Sel_InputChip_Three();       
 261   1         IN3= DateBus;
 262   1         Disable_InputChip();
 263   1         /**/
 264   1         if((!Bt1)&&(ButtonCt[1]<MaxTest))
 265   1         {
 266   2                      ButtonCt[1]++;
 267   2         }
 268   1         else if((!Bt4)&&(ButtonCt[4]<MaxTest))
 269   1         {
 270   2                      ButtonCt[4]++;
 271   2         }
 272   1         else if((!Bt5)&&(ButtonCt[5]<MaxTest))
 273   1         {
 274   2                      ButtonCt[5]++;
 275   2         }
 276   1         else if((!Bt6)&&(ButtonCt[6]<MaxTest))
 277   1         {
 278   2                      ButtonCt[6]++;
 279   2         }
 280   1         else if((!Bt7)&&(ButtonCt[7]<MaxTest))
 281   1         {
 282   2                      ButtonCt[7]++;
 283   2         }
 284   1         else if((!Bt8)&&(ButtonCt[8]<MaxTest))
 285   1         {

⌨️ 快捷键说明

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