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

📄 keil00.lst

📁 提供包括硬件、软件在内的高效、低成本的完整嵌入式开发平台及解决方案。典型产品为以386EX CPU为核心的嵌入式网络模块系列
💻 LST
📖 第 1 页 / 共 4 页
字号:
 793   2                      break;
 794   2                      else
 795   2              {
 796   3                              TX[2]=a;
 797   3                      TX[4]=b;
 798   3                      TX[5]=c;
 799   3                      Transmit();x++;}
C51 COMPILER V7.10   KEIL00                                                                09/13/2007 23:16:12 PAGE 14  

 800   2                              if(x>5)
 801   2                      {
 802   3                                      ErrorNO=0x2a;
 803   3                              break;
 804   3                              }
 805   2              }
 806   1              Command=0;
 807   1      }
 808          /***********************************/
 809          /*-------有无牌状态查询程序--------*/
 810          /***********************************/
 811          void  StateB(void)
 812          {
 813   1              unsigned  char  x,y;
 814   1              OPTOV=0;
 815   1              Delay50ms();
 816   1              BboxState();   /*查询B仓有无牌状态*/
 817   1              y=0;
 818   1              for(x=0;x<50;x++)     /*判断50次,确定牌盒内是否有牌*/
 819   1              {
 820   2                      if(!Back_OPTO||Count_OPTO)    /*牌盒内检测是否有牌*/
 821   2              y++;
 822   2              }
 823   1              if(y>40)      /*有牌次数超过40次为有牌,否则为无牌*/
 824   1                      TX[5]=1;
 825   1              else
 826   1                      TX[5]=0;
 827   1              TX[2]='M';
 828   1              TX[4]=0x23;    /*有无牌状态返回*/
 829   1              Transmit();
 830   1      }
 831          /******************************************/
 832          void  BboxState(void)
 833          {
 834   1              TX[2]='B';          /*B1仓有无牌查询*/
 835   1              TX[4]=0x07;
 836   1              Transmit();
 837   1              TXok();
 838   1              if(ReceivePack[5]==0)
 839   1                      Wupai1=0;
 840   1              else
 841   1                      Wupai1=1;
 842   1              if(ReceivePack[6]==0)
 843   1                      Wupai2=0;
 844   1              else
 845   1                      Wupai2=1;
 846   1              TX[2]='C';          /*B2仓有无牌查询*/
 847   1              TX[4]=0x07;
 848   1              Transmit();
 849   1              TXok();
 850   1              if(ReceivePack[5]==0)
 851   1                      Wupai3=0;
 852   1              else
 853   1                      Wupai3=1;
 854   1              if(ReceivePack[6]==0)
 855   1                      Wupai4=0;
 856   1              else
 857   1                      Wupai4=1;
 858   1              TX[6]=Wupaidata;   /*B仓有无牌状态*/
 859   1      }
 860          /***********************************/
 861          /*----------485发送程序------------*/
C51 COMPILER V7.10   KEIL00                                                                09/13/2007 23:16:12 PAGE 15  

 862          /***********************************/
 863          void  Transmit(void)
 864          {
 865   1              unsigned  char  x;
 866   1              R485cs=1;     //rs485_cs
 867   1              LED=0;
 868   1              _nop_();
 869   1              _nop_();
 870   1              _nop_();
 871   1              _nop_();
 872   1              EA=0;
 873   1              for(x=0;x<8;)
 874   1              {
 875   2                      SBUF=TX[x++];
 876   2                      while(!TI)
 877   2                      {_nop_();}
 878   2                      TI=0;
 879   2              }
 880   1              TI=0;
 881   1              RI=0;
 882   1              EA=1;
 883   1              LED=1;
 884   1              R485cs=0;
 885   1      }
 886          /***************************************/
 887          /*      rs232中断                      */
 888          /***************************************/
 889          void  Rs232int() interrupt 4 using 0
 890          {
 891   1              ES=0;
 892   1              if(!TI)
 893   1              {
 894   2                      Receive();
 895   2                      if(ReceivePack[2]=='A')
 896   2              {
 897   3                              if(ReceivePack[0]=='R'&&ReceivePack[1]=='B')
 898   3                      {
 899   4                                      if(ReceivePack[7]==0x0d||ReceivePack[9]==0x0d)
 900   4                              {
 901   5                                              LED=0;
 902   5                                      Command=ReceivePack[4];
 903   5                                      TX[2]='M';
 904   5                                      TX[4]=0x21;
 905   5                                      TX[5]=Command;
 906   5                                      Transmit();
 907   5                              }
 908   4                              ReceivePack[2]=0;
 909   4                      }
 910   3              }
 911   2                      TH0=0;           /* Delay 2us */
 912   2                      TL0=0;
 913   2              }
 914   1              ES=1;
 915   1              LED=1;
 916   1      }
 917          /*-------------------------------*/
 918          /*-------接收程序----------------*/
 919          /*-------------------------------*/
 920          void  Receive(void)
 921          {
 922   1              unsigned  char  TrReCount0;
 923   1              TrReCount0=0;
C51 COMPILER V7.10   KEIL00                                                                09/13/2007 23:16:12 PAGE 16  

 924   1              TR0=1;
 925   1              while(TrReCount0<11)
 926   1              {
 927   2                      if(RI)
 928   2                      {
 929   3                              ReceivePack[TrReCount0++]=SBUF;
 930   3                              TH0=0x0;
 931   3                              TL0=0x0;
 932   3                              RI=0;
 933   3                      }
 934   2                      else if(TF0)
 935   2                              break;
 936   2              }
 937   1              if(TrReCount0<7)
 938   1              {
 939   2                      ReceivePack[2]=0;
 940   2              }
 941   1              RI=0;
 942   1              TR0=0;
 943   1              TF0=0;
 944   1      }
 945          /**********************************/
 946          void  Delay50ms(void)
 947          {
 948   1              unsigned  char i,Count0;
 949   1              for(i=0;i<45;i++)
 950   1              {
 951   2                      for(Count0=0;Count0<0xff;Count0++)
 952   2                      {
 953   3                              _nop_(); 
 954   3                      }
 955   2              }
 956   1      }
 957          /**************************************************************/
 958          void Test1(void)
 959          {
 960   1              OPTOV=0;          /*开传感器电源*/
 961   1              Delay50ms();
 962   1              while(1)
 963   1              {
 964   2                      if(!Back_OPTO)    /*牌盒内有牌时传牌电机转动,LED亮*/
 965   2              {
 966   3                              LED=0;
 967   3                      Back_motor=0;
 968   3              }
 969   2                      else if(Count_OPTO)  /*计数器有牌时出牌电机转动,LED亮*/
 970   2              {
 971   3                              LED=0;
 972   3                      Front_motor=0;
 973   3              }
 974   2                      else                /*否则无动作*/
 975   2              {
 976   3                              LED=1;           //
 977   3                      Back_motor=1;    //
 978   3                      Front_motor=1;
 979   3              }
 980   2              }
 981   1      }
 982          /**************************************************************/
 983          void Test2(void)
 984          {
 985   1              unsigned  char  i;
C51 COMPILER V7.10   KEIL00                                                                09/13/2007 23:16:12 PAGE 17  

 986   1              i=0;
 987   1              OPTOV=0;      /*开传感器电源*/
 988   1              Delay50ms();
 989   1              while(!KEY)         /*按键3秒以上为转动90度,3秒以下为发牌3张*/
 990   1              {
 991   2                      Delay50ms();     //@
 992   2                      if(!KEY)         //@
 993   2              {
 994   3                              if(i<200)     //@
 995   3                      {
 996   4                                      i++;
 997   4                              }      //@
 998   3                      else  break;
 999   3              }             //@
1000   2                      else   break;    //@
1001   2              }                //@
1002   1              if(i>15)            //*转动测试:按键转90'*/
1003   1              {
1004   2                      BoxNO++;         //
1005   2                      if(BoxNO==5)     //
1006   2              {
1007   3                              BoxNO=1;
1008   3                      }     //
1009   2                      Turn();}         //
1010   1              if(i>1)
1011   1              {
1012   2                      if(i<15)           /*发牌测试:按键发3张*/
1013   2              {
1014   3                              Card_data=3;     //
1015   3                      OutCard();
1016   3                      }   //
1017   2              }
1018   1              OPTOV=1;  /*关传感器电源*/
1019   1      }
1020          /***********************************/
1021          /* 初始化                          */
1022          /***********************************/
1023          void  Init(void)
1024          {       
1025   1              IE0=0;
1026   1              TMOD=0x20;
1027   1              PCON=0x00;
1028   1              SCON=0x50;      /*SCON=0xf0;串口为方式3,单机通讯*/
1029   1              TH1=0x0fd;       /* 9.6k */
1030   1              TL1=0x0fd;
1031   1              TH0=0x0;        /* Delay-2ms */
1032   1              TL0=0x0;
1033   1              TH2=0x0;        /* Delay */
1034   1              TL2=0x0;
1035   1              TR0=0;          /* 关闭定时器0 */
1036   1              TR1=1;          /* 允许定时器1 */
1037   1              IT0=1;          /* 中断0边沿触发方式 */
1038   1              ES=1;
1039   1              EA=1;
1040   1              R485cs=0;
1041   1              P2=0xff;
1042   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   2119    ----
   CONSTANT SIZE    =   ----    ----
C51 COMPILER V7.10   KEIL00                                                                09/13/2007 23:16:12 PAGE 18  

   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     39      23
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      7       9
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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