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

📄 mmm.lst

📁 用51控制对401的收发程序
💻 LST
字号:
C51 COMPILER V7.07   MMM                                                                   02/17/2009 12:22:04 PAGE 1   


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

stmt level    source

   1          #include <reg52.h>
   2          #include <absacc.h>
   3          #include "string.h"
   4          
   5          #include "intrins.h"
   6          
   7          //***********************串口初始化波特率定义*****原有********************
   8          #define OSC_FREQ                11059200L
   9          
  10          #define BAUD_19200              256 - (OSC_FREQ/192L)/19200L
  11          #define BAUD_14400              256 - (OSC_FREQ/192L)/14400L
  12          #define BAUD_9600               256 - (OSC_FREQ/192L)/9600L
  13          #define BAUD_4800               256 - (OSC_FREQ/192L)/4800L
  14          #define BAUD_2400               256 - (OSC_FREQ/192L)/2400L
  15          #define BAUD_1200               256 - (OSC_FREQ/192L)/1200L
  16          //*********************************************************
  17          union charint{
  18            unsigned char  chrX[2];
  19            unsigned int   intX;
  20            };
  21          union charint ad_temp;
  22          //************************程序用的变量********************
  23          unsigned char data RXtem[6], RXdata[6];//程序接收数据缓冲区
  24          unsigned char data RXNOM,RXSTAT;
  25          unsigned char data RXTimerOUT; //接收超时
  26          bit rxok;          // 接收完成标志
  27          
  28          
  29          sbit  CS=P2^4;
  30          sbit  PWR_UP=P2^5;
  31          sbit  TX_EN=P2^6; 
  32          sbit  Test_led=P1^4;
  33          sbit  wdog=P1^0;
  34          sbit  TX=P3^1;
  35          sbit  RX=P3^0;
  36          sbit  S_KEY=P2^3 ;
  37          /****************************************************************************/
  38          
  39          
  40          void Delay100ms(unsigned char x)
  41          {   
  42   1        unsigned char i,j;
  43   1        
  44   1        while(x-- != 0)
  45   1        {  wdog=! wdog;
  46   2              for (j = 0;j < 67; j++)for (i = 0;i < 88; i++){_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;
  47   3              _nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_(
             -) ;
  48   3              _nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_(
             -) ;
  49   3              _nop_() ;_nop_() ;_nop_() ;};
  50   2        }
  51   1      }
  52          /****************************************************************************/
  53          
C51 COMPILER V7.07   MMM                                                                   02/17/2009 12:22:04 PAGE 2   

  54          
  55          void Delay1ms(unsigned char idata  x)
  56          {   
  57   1        unsigned char i;
  58   1        
  59   1        while(x-- != 0)
  60   1        {wdog=! wdog;
  61   2          for (i = 0;i < 45; i++){_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;
  62   3              _nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_(
             -) ;
  63   3              _nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_(
             -) ;
  64   3              _nop_() ;_nop_() ;_nop_() ;};
  65   2        }
  66   1      }
  67          
  68          /****************************************************************************
  69          *                                                                           *
  70          * Function:     init_com                                                    *
  71          *                                                                           *
  72          * Input:        -                                                           *
  73          * Output:       -                                                           *
  74          *                                                                           *
  75          * Description:                                                              *
  76          ****************************************************************************/
  77          void init_com(void)
  78          {
  79   1        PCON = 0x80;                  // SMOD = 1; bps = Time1/16
  80   1        SCON = 0x50;                  // Mode 1, 1 star bit, 8 data bit, 1,stop bit UART, enable receive
  81   1        TMOD = 0x21;                  // Timer 1, mode 2, 8-bit auto reload,
  82   1                                                              // Timer 0, mode 1, 16-bit counter
  83   1        TH1 =BAUD_19200;              //BAUD_2400;
  84   1        TL1 = TH1;
  85   1        TR1 = 1;                      // Timer 1 run
  86   1       
  87   1        ES = 0;                                           // Enable serail interrupts
  88   1        EA=1;
  89   1        RXSTAT=0;
  90   1        RXNOM=0;
  91   1        rxok=0;
  92   1        RXTimerOUT=10;
  93   1      }
  94            /****************************************************************************
  95          *                                                                           *
  96          * Function:     START_T0                                                    *
  97          *                                                                           *
  98          * Input:        -                                                           *
  99          * Output:       -                                                           *
 100          *                                                                           *
 101          * Description:                                                              *
 102          *                                                                           *
 103          *                                                                           *
 104          ****************************************************************************/
 105          void START_T0(unsigned char x)
 106          {
 107   1        ET0 = 0 ;
 108   1        TR0 = 0;
 109   1        RXTimerOUT = x ;
 110   1        TL0 = 0;
 111   1        TH0 = 0;
 112   1        TR0 = 1;
 113   1        ET0 = 1 ;
C51 COMPILER V7.07   MMM                                                                   02/17/2009 12:22:04 PAGE 3   

 114   1      }                
 115          /****************************************************************************
 116          *                                                                           *
 117          * Function:     CALL_isr_T0                                                 *
 118          *                                                                           *
 119          * Input:        -                                                           *
 120          * Output:       -                                                           *
 121          *                                                                           *
 122          * Description:                                                              *
 123          *                                                                           *
 124          *                                                                           *
 125          ****************************************************************************/
 126          void CALL_isr_T0(void)
 127          {
 128   1        TR0 = 0;
 129   1        RXTimerOUT = 0; 
 130   1        TF0 = 1;
 131   1      
 132   1      }
 133          
 134          //********************串口中断处理程序**************************************************************
 135          void int4() interrupt 4 using 1
 136          {
 137   1         unsigned char c;
 138   1         if ( RI )                                        // Receive Command
 139   1        {
 140   2         // RXTimerOUT=10;
 141   2          RI = 0;
 142   2              c  = SBUF;
 143   2              switch(RXSTAT)
 144   2              {
 145   3                case 0:                          //接受帧头02
 146   3                       if(c==0x55){RXSTAT=1;START_T0(20);}
 147   3                               else
 148   3                    CALL_isr_T0();
 149   3                       break;
 150   3                case 1:                       //接收
 151   3                   if(c==0xaa)
 152   3                               {
 153   4                            rxok=1;
 154   4                                RXSTAT=0;
 155   4                                CALL_isr_T0();
 156   4                               }
 157   3                               else
 158   3                                 CALL_isr_T0();
 159   3                               RXSTAT=0;
 160   3                       break;
 161   3               
 162   3                default:
 163   3                   RXSTAT=0;
 164   3                           break;
 165   3              }
 166   2      
 167   2        }
 168   1       else
 169   1       {
 170   2             TI=0;
 171   2                 
 172   2        }
 173   1      }
 174          /*************************原有的函数需改变*************************************
 175          *                                                                           *
C51 COMPILER V7.07   MMM                                                                   02/17/2009 12:22:04 PAGE 4   

 176          * Function:     isr_timer0                                                  *
 177          *                                                                           *
 178          * Input:        -                                                           *
 179          * Output:       -                                                           *
 180          *                                                                           *
 181          * Description:                                                              *
 182          *                                                                           *
 183          *                                                                           *
 184          ****************************************************************************/
 185          void isr_timer0(void) interrupt 1 using 2
 186          {
 187   1        TR0=0;
 188   1         if(RXTimerOUT!=0)        //此if{}else{} 为新加入的判断超时功能
 189   1          { 
 190   2             RXTimerOUT--;
 191   2          }
 192   1          else
 193   1          {
 194   2            RXSTAT=0;
 195   2            RXNOM=0;
 196   2          }
 197   1      
 198   1      
 199   1        
 200   1        TH0=0X4c;
 201   1        TL0=0X95;
 202   1        TR0=1;   
 203   1      }
 204          //*************************************************************************
 205          unsigned char Send(unsigned char *p,unsigned char len)
 206          {
 207   1        unsigned char i,add=0;
 208   1        ES=0;
 209   1        RX=1;
 210   1        TX=1;
 211   1        TX_EN=1;
 212   1        Delay1ms(1);
 213   1        SBUF=0Xff;
 214   1        while(!TI);
 215   1        TI=0;
 216   1        SBUF=0X55;
 217   1        while(!TI);
 218   1        TI=0;
 219   1        
 220   1        SBUF=0Xff;
 221   1        while(!TI);
 222   1        TI=0;
 223   1        SBUF=len;
 224   1        while(!TI);
 225   1        TI=0;
 226   1        for(i=0;i<len;i++)
 227   1        {
 228   2          SBUF=p[i];
 229   2          while(!TI);
 230   2          TI=0;
 231   2              add=add+p[i];
 232   2        }
 233   1        SBUF=add;        //发送校验
 234   1        while(!TI);
 235   1        TI=0;
 236   1        RX=1;
 237   1        TX=1;
C51 COMPILER V7.07   MMM                                                                   02/17/2009 12:22:04 PAGE 5   

 238   1      
 239   1        TX_EN=0;
 240   1        Delay1ms(3);
 241   1        ES=1;
 242   1        EA=1;
 243   1        Delay1ms(5);
 244   1        
 245   1        if(rxok)
 246   1        { 
 247   2          ES=0;
 248   2              rxok=0;
 249   2        
 250   2          return 1;
 251   2              }
 252   1        else
 253   1        {
 254   2          ES=0;
 255   2        
 256   2          return 0;
 257   2              }
 258   1       
 259   1      }
 260          
 261          //**************************************************************************
 262          void main(void)
 263          {
 264   1          // unsigned int xx;
 265   1      
 266   1           unsigned char i,*sdata;
 267   1               unsigned long yyy=0;
 268   1              Test_led=!Test_led;
 269   1              Delay100ms(5);
 270   1              Test_led=!Test_led;
 271   1              wdog=! wdog;
 272   1          TX_EN=1;
 273   1              init_com();
 274   1              ES=0;
 275   1          i=0;
 276   1          PWR_UP=1;
 277   1          CS=1;
 278   1        while(1)
 279   1         {
 280   2           wdog=! wdog;
 281   2       //if(!S_KEY)
 282   2      {
 283   3       //Test_led=!Test_led;
 284   3      //       Delay1ms(10);
 285   3      //       Test_led=!Test_led;
 286   3      //Delay100ms(5);  
 287   3               sdata="1234567890";
 288   3        if( Send(sdata,10))
 289   3         {
 290   4           Test_led=!Test_led;
 291   4               Delay1ms(60);
 292   4               Test_led=!Test_led;    
 293   4         }
 294   3       
 295   3         else
 296   3           Delay1ms(20);
 297   3      }
 298   2         // Delay100ms(5);  
 299   2                      //      
C51 COMPILER V7.07   MMM                                                                   02/17/2009 12:22:04 PAGE 6   

 300   2         }
 301   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    479    ----
   CONSTANT SIZE    =     11    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     17       9
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      1    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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