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

📄 1503cs.lst

📁 完整的TCS控制系统原程序.包含系统检测
💻 LST
📖 第 1 页 / 共 5 页
字号:
  53   1        unsigned char temp ;
  54   1        unsigned char txch2,txcl2;
  55   1        unsigned int sj1,sj2;                  
  56   1         txch2 = TH0;
  57   1         txcl2 = TL0;
  58   1         temp = tjs;
  59   1         if(cxwbz){
  60   2                       if( temp < 2 ){
  61   3                               
  62   3                       sj1 = txch1<<8 ;
  63   3                       sj1 += txcl1;
  64   3                       
  65   3                       sj2 = txch2<<8 ;
  66   3                       sj2+= txcl2; 
  67   3                       
  68   3                       if( sj2 >= sj1 )  sj2 = sj2 - sj1;
  69   3                        
  70   3                       else { sj2 = sj1 - sj2 ; temp--; } 
  71   3                       
  72   3                       xczh = ( temp << 12 )|sj2;
  73   3                       
  74   3                       }
  75   2                       else  xczh = 0 ;
  76   2                     cxwbz = 0 ;       //时间差计算 
  77   2                   }
  78   1         } 
  79          
  80          void cysj( unsigned char yzz ){
  81   1      unsigned  char  temp , sjgs ,*dpp ;
  82   1      unsigned  int   temp1 ;  
  83   1      if( yzz == 0XBA ){
  84   2                       dpp = jcsjbuf ; 
  85   2                         if( t1ms >= 7  ){
  86   3                                  
  87   3                                  temp1  = ad_cy[0] << 8 ; 
  88   3                                  temp1  += ad_cy[1] ;
C51 COMPILER V7.50   1503CS                                                                12/31/2005 10:44:49 PAGE 19  

  89   3                                  temp1  /= 10 ;
  90   3                                  ad_cy[0] = (char)temp1 ;
  91   3                                  
  92   3                                  temp1  = ad_cy[2] << 8 ; 
  93   3                                  temp1  += ad_cy[3] ;
  94   3                                  temp1 /= 10 ;
  95   3                                  ad_cy[1] = (char)temp1 ;
  96   3                                  
  97   3                                  temp1  = ad_cy[4] << 8 ; 
  98   3                                  temp1  += ad_cy[5] ;
  99   3                                  temp1 /= 10 ;
 100   3                                  ad_cy[2] = (char)temp1 ;
 101   3                                  
 102   3                              temp = (t1ms - 7)*3 + 36 ; 
 103   3                              
 104   3                              for ( sjgs = 0 ; sjgs < 3 ; sjgs++ ) 
 105   3                                   *(dpp + temp + sjgs ) = ad_cy[ sjgs ] ;  
 106   3                               }
 107   2                        else {        
 108   3                                 temp = (t1ms - 1) * 6 ; 
 109   3                             for ( sjgs = 0 ; sjgs < 6 ; sjgs++ ) 
 110   3                                   *(dpp + temp + sjgs) = ad_cy[ sjgs ] ;  
 111   3                  }
 112   2               }
 113   1      } 
 114           
 115          void timer0int (void) interrupt 1  using 1   //0.5MS
 116           { EA = 0 ;
 117   1         TR0=0 ; 
 118   1         t50  ++ ; 
 119   1         tcy  ++ ;  
 120   1         hys  ++ ;
 121   1         t1ms ++ ; 
 122   1         tjs  ++ ;
 123   1         txjs ++ ; 
 124   1         TH0=0xFB; //1ms     //100EH 50MS    880EH 50MS       4C0EH        50MS         ;2^16-T(MS)*CRY(MHZ)*10^3/12
 125   1         TL0=0x33;  
 126   1         TR0 = 1 ;  
 127   1         if( ((csbxbz == 1 )&& ( ( csbz == 6 ) || ( sdkzbz == 1 ) ))){ //测试波形 时测相位差
 128   2         if ( ( t1ms > 0 ) && ( t1ms < 19 ) ) 
 129   2               {
 130   3                      if( t1ms >= 18 )  csbxbz = 0 ;  
 131   3                      rd2543_8() ;
 132   3                      cysj( 0XBA ) ; 
 133   3                      } 
 134   2            }
 135   1          EA = 1 ;             
 136   1       } 
 137           
 138          //串口校验字节数 5个 fe eb 55  aa  ADD 
 139           void serial_1(void)interrupt 7   //串口自检
 140          {  
 141   1              NOP ;  
 142   1       /* 
 143   1       if(RI_1)
 144   1         {    
 145   1          RI_1=0;
 146   1          }
 147   1           if(TI_1)
 148   1          { 
 149   1           TI_1=0;
 150   1          }
C51 COMPILER V7.50   1503CS                                                                12/31/2005 10:44:49 PAGE 20  

 151   1        */   
 152   1      }
 153          /*
 154          unsigned char TXPD(void){
 155                  unsigned char temp ; 
 156              SBUF1 = 0xaa ; 
 157              RI_1 = 0 ;
 158              txjs = 0 ;
 159              while(!TI_1);
 160              TI_1=0; 
 161              while( !RI_1 & txjs < 5 ){ cdog(); };
 162               if(!RI_1)  return 0 ; 
 163                   RI_1 = 0 ; 
 164               temp = SBUF1 ; 
 165               if( temp != 0xaa )return 0 ;    
 166               SBUF1 = 0x55; 
 167               RI_1 = 0 ; 
 168               txjs = 0 ;
 169               while(!TI_1);
 170               TI_1=0;  
 171               while( !RI_1&&txjs < 5 ){ cdog(); };
 172               if(!RI_1)  return 0 ; 
 173               temp = SBUF1 ;
 174               if( temp != 0x55 )return 0 ; 
 175               return 0xff ;  
 176          } 
 177          */
 178          
 179          /*延时*/
 180          void delay(unsigned char temp)
 181               {unsigned char i;
 182   1                  for(i=0;i<temp;i++);
 183   1            } 
 184           
 185          //清看门狗
 186          void cdog(void)
 187              { if(t50>100)
 188   1                  {
 189   2                         WDI=!WDI; 
 190   2                         GZD = !GZD ; 
 191   2                   t50=0;
 192   2                  }
 193   1           }
 194          void clrdog(void){ 
 195   1           WDI = !WDI ;
 196   1           GZD = !GZD ;  
 197   1           NOP ; NOP ; NOP ; NOP ; NOP ;
 198   1           WDI = !WDI ;
 199   1           }      
 200               
 201          void port_int(void){
 202   1            p2=0xff;
 203   1            p1=0xfe;
 204   1                  p0=0x00; 
 205   1                  p3=0xff; 
 206   1      }
 207          //通信初始化 
 208          /*;--------------------------------------------------------------------------------------------------I
 209          ;Fbit=(XXXXXX)/(32*12*(256-th1))                                  I
 210          ;XXXXXX=7.3728MHz ;XXXXXX=11.0592MHz ;XXXXXX=14.7456MHz    ;XXXXXX=22.1184MHz          I
 211          ;TH1=?   SMOD=0   ;TH1=?   SMOD=0    ;TH1=?   SMOD=0       ;TH1=?   SMOD=0             I
 212          ;TH1=FF  1=.2KHz  ;TH1=xx            ;TH1=FF  38.4KHz      ;TH1=XX  38.4KHz            I
C51 COMPILER V7.50   1503CS                                                                12/31/2005 10:44:49 PAGE 21  

 213          ;TH1=FE   9.6KHz  ;TH1=FD   9.6KHz   ;TH1=FE  19.2KHz      ;TH1=FD  19.2KHz            I
 214          ;TH1=FC   4.8KHz  ;TH1=FA   4.8KHz   ;TH1=FC   9.6KHz      ;TH1=FA   9.6KHz            I
 215          ;TH1=F8   2.4KHz  ;TH1=F4   2.4KHz   ;TH1=F8   4.8KHz      ;TH1=F4   4.8KHz            I
 216          ;TH1=F0   1.2KHz  ;TH1=E8   1.2KHz   ;TH1=F0   2.4KHz      ;TH1=E8   2.4KHz            I
 217          ;TH1=E0   0.6KHz  ;TH1=D0   0.6KHz   ;TH1=E0   1.2KHz      ;TH1=D0   1.2KHz            I
 218          ;TH1=C0   0.3KHz  ;TH1=A0   0.3KHz   ;TH1=C0   0.6KHz      ;TH1=A0   0.6KH~            I
 219          ;TH1=80    150Hz  ;TH1=40    150Hz   ;TH1=80   300 Hz      ;TH1=40   300 Hz            I
 220          ;                 ;TH1=FD(S=1) 9.6K  ;TH1=00   150 Hz      ;
 221          ;---------------------------------------------------------------------------------------I
 222          ;Fbit=(XXXXXX)/(32*(65536-T2)                                                           I
 223          ;XXXXXX=7.3728MHz      ;XXXXXX=11.0592MHz    ;XXXXXX=14.7456MHz    ;XXXXXX=22.1184MHz   I
 224          ;RCAP2       SMOD=0    ;RCAP2       SMOD=0   ;RCAP2       SMOD=0   ;RCAP2       SMOD=0  I
 225          ;RCAP2=FFFDH  76.8KHz  ;RCAP2=XXXXXXXXXXXXXX ;RCAP2=FFFDH 153.6KHz ;RCAP2=XXXXH 153.6KHzI
 226          ;RCAP2=FFFAH  38.4KHz  ;RCAP2=FFF7H  38.4KHz ;RCAP2=FFFAH  76.8KHz ;RCAP2=FFF7H  76.8KHzI
 227          ;RCAP2=FFF4H  19.2KHz  ;RCAP2=FFEEH  19.2KHz ;RCAP2=FFF4H  38.4KHz ;RCAP2=FFEEH  38.4KHzI
 228          ;RCAP2=FFE8H   9.6KHz  ;RCAP2=FFDCH   9.6KHz ;RCAP2=FFE8H  19.2KHz ;RCAP2=FFDCH  19.2KHzI
 229          ;RCAP2=FFD0H   4.8KHz  ;RCAP2=FFB8H   4.8KHz ;RCAP2=FFD0H   9.6KHz ;RCAP2=FFB8H   9.6KHzI
 230          ;RCAP2=FFA0H   2.4KHz  ;RCAP2=FF70H   2.4KHz ;RCAP2=FFA0H   4.8KHz ;RCAP2=FF70H   4.8KHzI
 231          ;RCAP2=FF40H   1.2KHz  ;RCAP2=FEE0H   1.2KHz ;RCAP2=FF40H   2.4KHz ;RCAP2=FEE0H   2.4KHzI
 232          ;RCAP2=FE80H   0.6KHz  ;RCAP2=FDC0H   0.6KHz ;RCAP2=FE80H   1.2KHz ;RCAP2=FDC0H   1.2KHzI
 233          ;RCAP2=FD00H   0.3KHz  ;RCAP2=FB80H   0.3KHz ;RCAP2=FD00H   0.6KHz ;RCAP2=FB80H   0.6KHzI
 234          ;RCAP2=FA00H   150 Hz  ;RCAP2=F700H   150 Hz ;RCAP2=FA00H   0.3 Hz ;RCAP2=F700H   0.3 HzI
 235          ;                                            ;RCAP2=F400H    150Hz ;RCAP2=EE00H    150HzI
 236          ;RCAP2=FFB6H 3113.5Hz  ;RCAP2=FF91H 3113.5Hz ;RCAP2=EFA3H    110Hz ;RCAP2=EE00H    150HzI
 237          ;---------------------------------------------------------------------------------------I
 238           // TH0=0xe7; //50ms     //100EH 50MS    880EH 50MS     4C0EH        50MS         ;2^16-T(MS)*CRY(MHZ)*10^3/12
 239           // TL0=0xff;       //14.7456MHZ    7.3728MHz    11.0592MHZ
 240           */
 241          void Tx_int(void){   
 242   1               
 243   1          TCON = B00000101;//TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 
 244   1          TMOD = B00100001; //GATE1 C/T1 M11 M10  GATE0 C/T0 M01 M00 
 245   1          TH0=0xFB; //1ms     //100EH 50MS    880EH 50MS      4C0EH        50MS         ;2^16-T(MS)*CRY(MHZ)*10^3/12
 246   1          TL0=0x33; 
 247   1                SCON1=0x50;    //串口1
 248   1                T2CON=0x34;    //T2 串口0
 249   1                RCAP2H=0xFF;   //4800
 250   1          RCAP2L=0x40; 
 251   1          
 252   1          //RCAP2H=0xFF;   //9600
 253   1          //RCAP2L=0xD0; 
 254   1          
 255   1          PCON =0 ;      // SMOD 0 0 0 GF1 GF0 PD IDL  
 256   1                SCON=0x50;     //SM0 SM1 SM2 REN TB8 RB8 TI RI  方式1 可收   串口0 
 257   1          TH1 =0xF0;     //2400 FD FE  
 258   1                TR0=1;               //定时器0
 259   1              TR1=1;         //串口0
 260   1          TR2=1;         //串口1
 261   1              }  
 262                  
 263          void init_devices(void){
 264   1      EA = 0; 
 265   1      externram_enable; 
 266   1      port_int(); 
 267   1      Tx_int(); 
 268   1      IE=B00010111;/*EA ES1 ET2 ES0 ET1 EX1 ET0 EX0*/ 
 269   1      IP=B00000101;//assign com2 <s0in>s0out  //mode com2 9600,0,8,1 
 270   1      EA=1;
 271   1      } 
 272          //VAL为发送的命令
 273          //接收数据送AD_buf  150us
 274          /*--------------------------------------*/  
C51 COMPILER V7.50   1503CS                                                                12/31/2005 10:44:49 PAGE 22  

 275          void  r_2543( unsigned char val )//
 276          {
 277   1        unsigned char i , fdata , sdata ,sdata1 ; 
 278   1        AD_CS = 0  ;  
 279   1        fdata = val ;  
 280   1        for ( i = 8 ; i > 0 ; i -- )
 281   1        { 
 282   2           sdata = sdata << 1 ;
 283   2        if( AD_DOUT ){ sdata++ ; }   
 284   2        if( fdata & 0x80 ) AD_DIN = 1;
 285   2             else  AD_DIN = 0 ;  
 286   2          fdata = fdata << 1 ;      
 287   2          AD_CLK = 1 ;  //上升沿打入数据 
 288   2          AD_CLK = 0 ;  //下降沿读入数据(首次为假动作) 
 289   2        }  
 290   1        for ( i = 4 ; i > 0; i --)
 291   1        { 
 292   2          sdata1 = sdata1 << 1 ;
 293   2          if( AD_DOUT ){ sdata1++ ; } 
 294   2          AD_CLK = 1 ; //XCK = 1;//上升沿打入数据 
 295   2          AD_CLK = 0 ; //XCK  = 0;//下降沿读入数据(首次为假动作)  
 296   2        } 
 297   1           AD_CS = 1 ; 
 298   1           ad_buf[0] = (   sdata >> 4 ) & 0x0f; 
 299   1           ad_buf[1] = ( ( sdata << 4 ) & 0xf0 ) | ( sdata1 & 0x0f ) ; 
 300   1      }  
 301          
 302          //AD_N 数据采集   采7次 
 303          void rd2543( void ) {  
 304   1      unsigned char temp ;    
 305   1       if( tcy >= 2 ){  //考虑电平建立时间 5-15ms     
 306   2                   tcy = 0 ; 
 307   2                   r_2543( AD_N << 4 ) ;  
 308   2             if(AD_S != 0) { 
 309   3                 temp = AD_S - 1 ;       //写第二路数据 ,读第一路数据 
 310   3                 ad_cy[temp*2]   = ad_buf[0] ; 
 311   3                 ad_cy[temp*2+1] = ad_buf[1] ;        
 312   3                } 
 313   2         AD_S++ ;     
 314   2        switch ( AD_S ){ 
 315   3                case 1:CC = 0 ; BB = 0 ; AA = 1 ;  break ;//1 
 316   3                case 2:CC = 0 ; BB = 1 ; AA = 0 ;  break ;//2  
 317   3                case 3:CC = 0 ; BB = 1 ; AA = 1 ;  break ;//3
 318   3              case 4:CC = 1 ; BB = 0 ; AA = 0 ;  break ;//4  
 319   3              case 5:CC = 1 ; BB = 0 ; AA = 1 ;  break ;//5   
 320   3              case 6:CC = 1 ; BB = 1 ; 

⌨️ 快捷键说明

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