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

📄 keil00.lst

📁 提供包括硬件、软件在内的高效、低成本的完整嵌入式开发平台及解决方案。典型产品为以386EX CPU为核心的嵌入式网络模块系列
💻 LST
📖 第 1 页 / 共 4 页
字号:
C51 COMPILER V7.10   KEIL00                                                                09/13/2007 23:16:12 PAGE 1   


C51 COMPILER V7.10, COMPILATION OF MODULE KEIL00
OBJECT MODULE PLACED IN keil00.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE keil00.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /*********************************************************
   2           2007.4.03
   3          **********************************************************
   4          A3986步进驱动控制板硬件定义
   5          P00~~~P07--------方位I1~~~I8           P11---出牌计数
   6          P10---有无牌检测    P12---LED灯        P14---出牌电机
   7          P13---传动电机      P32---RS485cs      P33---传感器电源控制
   8          P34---按键          P36---A3986_Vref   P35---A3986时钟输入
   9          P37---转动方向      P23---A3986_EN     P23---A3986_EN
  10          P21---A3986_SR(衰减有效)    P24.P25---A3986_PFD1.PFD2(衰减选择)
  11          P22---A3986_RST             P24.P25---A3986_MS1.MS2(细分选择)
  12          ***************************************************************
  13          计数传感器有牌为H.无牌为L----有牌检测传感器有牌为L.无牌为H
  14          ***************************************************************
  15          通信协议:前导码RB+接收编号+发送编号+命令+参数1+参数2+结束码0D
  16          编号:A---A仓板     B---B1板     C---B2板     M---主板
  17          命令号:0x01---发牌           0x20---接收出错
  18                 0x02---过渡轮转       0x21---收到命令
  19                 0x03---过渡轮停       0x22---执行完毕
  20                 0x04---清牌           0x23---状态返回
  21                 0x07---状态查询       0x24---少牌报警
  22                                       0x25---卡牌报警
  23          *********************************************************/
  24          #include <stdio.h>
  25          #include <AT89x52.h>
  26          #include <absacc.h>
  27          #include <intrins.h>
  28          
  29          #define   Back_OPTO     P1_0    /*左有无牌 */
  30          #define   Count_OPTO    P1_1    /*出牌计数*/
  31          #define   LED           P1_2
  32          #define   Back_motor    P1_3    /*传动电机2*/
  33          #define   Front_motor   P1_4    /*出牌电机2*/
  34          #define   TEST          P1_5
  35          #define   R485cs        P3_2
  36          #define   OPTOV         P3_3    /*传感器电源控制端*/
  37          #define   KEY           P3_4
  38          #define   Step          P3_5    /*脉冲*/
  39          #define   ConVref       P3_6    /*功率控制*/
  40          #define   DIR           P3_7    /*方向控制*/
  41          #define   A3986_SR      P2_1    //A3986
  42          #define   A3986_RST     P2_2    //A3986
  43          #define   A3986_EN      P2_3    //A3986
  44          #define   A3986_PFD1    P2_4    //A3986
  45          #define   A3986_PFD2    P2_5    //A3986
  46          #define   A3986_MS1     P2_6    //A3986
  47          #define   A3986_MS2     P2_7    //A3986
  48          #define   azimuth       P0     /*方位*/
  49          
  50          void     Init(void);      /*初始化*/
  51          void     Rs232int(void);   /*串口中断*/
  52          void     Receive(void);    /*串口接收*/
  53          void     Transmit(void);   /*串口发射*/
  54          void     Delay50ms(void);  /*延时50ms*/
  55          void     OutCard(void);    /*发牌子程序*/
C51 COMPILER V7.10   KEIL00                                                                09/13/2007 23:16:12 PAGE 2   

  56          void     StateB(void);     /*B状态查询*/
  57          void     BboxState(void);  /*Bbox状态查询*/
  58          void     Test1(void);      /*测试程序*/
  59          void     Test2(void);      /*测试程序*/
  60          void     Turn(void);       /*转动程序*/
  61          void     Riffle1(void);    /*A洗牌程序*/
  62          void     Out1(void);       /*A出牌程序*/
  63          void     ShaoCar(void);    /*少牌处理*/
  64          void     TXok(void);       /*任务发出及反馈处理*/
  65          void     ClrCard(void);    /*清牌程序*/
  66          void     OUTremnantCard(void);  /*发底牌子程序*/
  67          
  68          /************************************************************************
  69            TX[8]---发送数组               ReceivePack[8]---接收数组
  70            BoxNO----当前接牌盒编号变量    Azidata----出牌口方位变量
  71            Box1data----牌盒1内牌数变量    Box2data---牌盒2内牌数变量
  72            Box3data----牌盒3内牌数变量    Box4data---牌盒4内牌数变量
  73            Card_data----每次发牌数变量    Count0-----临时变量
  74            AllCard,Mandata,SingleCard,RemnantCard---总牌数,人数,每人牌数,底牌数
  75            State----工作状态变量(0-闲、1-忙、2-任务完成、3-错误1、4-错误2、5-错误3)
  76          *************************************************************************/
  77          unsigned  char  TX[8]={'R','B',0x0,'A',0x0,0x0,0x0,0x0D};
  78          unsigned  char  ReceivePack[10];
  79          unsigned  char  Card_data,BoxNO,Box1data,Box2data,Box3data,Box4data,CarBak;
  80          unsigned  char  AllCard,Mandata,SingleCard,RemnantCard,RemnantBox,firstOUT;
  81          unsigned  char  Place,Command,ErrorNO,State,Count0,Count1,Count2; //Busy,
  82          
  83          bit  ShaoCardBit,RxdOKBit,OutBit,BboxErr,PanErr,OUTmodeBit,ClrBit;
  84          /*ShaoCardBit:少牌标志  RxdOKbit:接收OK*/
  85          /*SingleCard,Place--位置变量*/
  86          unsigned  char  bdata  Wupaidata;
  87          sbit      Wupai1=Wupaidata^0;
  88          sbit      Wupai2=Wupaidata^1;
  89          sbit      Wupai3=Wupaidata^2;
  90          sbit      Wupai4=Wupaidata^3;
  91          
  92          void main(void)
  93          {
  94   1              _nop_();
  95   1              _nop_();
  96   1              _nop_();
  97   1              _nop_();
  98   1              _nop_();
  99   1              _nop_();
 100   1              _nop_();
 101   1              _nop_();
 102   1              _nop_();
 103   1              LED=0;         //*正常进入程序,亮LED灯0.2'*/
 104   1              Delay50ms();
 105   1              Delay50ms();
 106   1              LED=1;
 107   1              ConVref=0;    /*步进电机小功率*/
 108   1      
 109   1              Init();       /*初始化*/
 110   1      
 111   1              while(!A3986_SR)
 112   1              {
 113   2                      Test1();
 114   2              }      /*TEST测试有效,进入测试程序*/
 115   1      
 116   1              DIR=0;           /*顺时针转动定位*/
 117   1              A3986_EN=0;
C51 COMPILER V7.10   KEIL00                                                                09/13/2007 23:16:12 PAGE 3   

 118   1              Delay50ms();
 119   1              ConVref=1;       /*步进电机大功率*/
 120   1              while(azimuth==0xff)
 121   1              {
 122   2                      for(Count0=0;Count0<255;Count0++)
 123   2              {
 124   3                              _nop_(); 
 125   3                              _nop_();
 126   3                      }
 127   2                      Step=!Step;
 128   2              }
 129   1              ConVref=0;        /*小功率*/
 130   1              switch(azimuth)
 131   1              {
 132   2                      case 0x7f:   Place=1; break;    /*当前接牌盒位置判断*/
 133   2                      case 0xef:   Place=2; break;    /*Place--位置变量*/
 134   2                      case 0xbf:   Place=3; break;    //
 135   2                      case 0xdf:   Place=4; break;    //
 136   2                      default:     break;
 137   2              }
 138   1              if(!KEY)
 139   1              {
 140   2                      while(1)     /*测试有效进入测试程序*/
 141   2              {
 142   3                              Test2();
 143   3                      }
 144   2              }
 145   1              ClrBit=0;
 146   1              State=0;
 147   1              ErrorNO=0;
 148   1              TR2=1;
 149   1              while(1)
 150   1              {
 151   2                      if(ErrorNO)
 152   2              {
 153   3                              TX[2]='M';
 154   3                      TX[4]=0x55;
 155   3                      TX[5]=ErrorNO;
 156   3                      Transmit();
 157   3                      ErrorNO=0;
 158   3                      Command=0;
 159   3              }
 160   2      //if(Command==0x11||Command==0x12||Command==0x13||Command==0x14||Command==0x04||Command==0x07)
 161   2                      if(ClrBit)
 162   2              Command=0x04;
 163   2                      if(Command)
 164   2              {       //TX[2]='M';
 165   3                      //TX[4]=0x21;
 166   3                      //TX[5]=Command;
 167   3                      //Transmit();
 168   3                      switch(Command)
 169   3                      {
 170   4                                      case 0x11:      Command=0;
 171   4                                              AllCard=ReceivePack[5];    /*0x11--设置游戏参数*/
 172   4                                              Mandata=ReceivePack[6];
 173   4                                              SingleCard=ReceivePack[7];
 174   4                                              RemnantCard=ReceivePack[8];
 175   4                                              break;
 176   4                              case 0x12:      State=Command;     /*0x12--洗牌*/
 177   4                                              Riffle1();         /*A类游戏洗牌*/
 178   4                                              break;
 179   4                              case 0x13:      State=Command;            /*0x13--发牌*/
C51 COMPILER V7.10   KEIL00                                                                09/13/2007 23:16:12 PAGE 4   

 180   4                                              firstOUT=ReceivePack[6];  /*第一个出牌口(出牌盒)选择*/
 181   4                                              Out1();                   /*A类出牌*/
 182   4                                              break;
 183   4                              case 0x14:      State=Command;            /*0x13--发底牌*/
 184   4                                              Count0=ReceivePack[5];    /*0x13--底牌出口*/
 185   4                                              OUTremnantCard();
 186   4                                              break;
 187   4                              case 0x04:      State=Command;      /*0x13--清牌*/
 188   4                                              ClrBit=0;
 189   4                                              ClrCard();
 190   4                                              break;
 191   4                              case 0x07:      State=Command;      /*0x13--有无牌检测*/
 192   4                                              StateB();
 193   4                                              break;
 194   4                                                      default: Command=0;
 195   4                                                              break;
 196   4                      }
 197   3                      if(!ClrBit&&State)
 198   3                      {
 199   4                                      if(ErrorNO)
 200   4                              {
 201   5                                              TX[2]='M';    /*返回错误类型*/
 202   5                                      TX[4]=0x22;   //TX[4]=0x55;
 203   5                                      TX[5]=State;  //TX[5]=0x13;
 204   5                                      Transmit();
 205   5                              }
 206   4                              else             /*执行完成后返回*/
 207   4                              {
 208   5                                              TX[2]='M';
 209   5                                      TX[4]=0x22;
 210   5                                      TX[5]=State;
 211   5                                      Transmit();
 212   5                              }
 213   4                              State=0;
 214   4                              Command=0;
 215   4                      }
 216   3              }
 217   2              }
 218   1      }
 219          /***********************************
 220          *-------发底牌程序--------------*
 221          ***********************************/
 222          void   OUTremnantCard(void)
 223          {
 224   1              unsigned  char  x;
 225   1      
 226   1              BoxNO=Count0+2;   /*底牌出口确定*/
 227   1              if(BoxNO>4)
 228   1                      BoxNO=BoxNO-4;
 229   1              if(0<BoxNO&&BoxNO<5)
 230   1              {
 231   2                      Turn();
 232   2              }
 233   1              if(PanErr)
 234   1                      goto  OUTremnantexit;   /*转盘错误退出*/
 235   1              TX[4]=1;                  /*无错B仓发牌*/
 236   1              switch(RemnantBox)
 237   1              {
 238   2                      case 1:  TX[2]='B'; TX[5]=RemnantCard;TX[6]=0; break;
 239   2                      case 2:  TX[2]='B'; TX[5]=0;TX[6]=RemnantCard; break;
 240   2                      case 3:  TX[2]='C'; TX[5]=RemnantCard;TX[6]=0; break;
 241   2                      case 4:  TX[2]='C'; TX[5]=0;TX[6]=RemnantCard; break;
C51 COMPILER V7.10   KEIL00                                                                09/13/2007 23:16:12 PAGE 5   

 242   2                      default:    break;
 243   2              }
 244   1              Transmit();
 245   1              TXok();
 246   1              if(ErrorNO)
 247   1                      goto  OUTremnantexit;
 248   1              Command=0;
 249   1              x=0;
 250   1              while(Command==0)         /*等待B仓返回信息*/
 251   1              {
 252   2                      Delay50ms();
 253   2                      if(x>50)
 254   2              {       
 255   3                              break;
 256   3                      }
 257   2                      x++;
 258   2              }

⌨️ 快捷键说明

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