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

📄 mmm.lst

📁 PTR8000+主站部分的程序
💻 LST
字号:
C51 COMPILER V8.02   MMM                                                                   05/01/2006 15:43:37 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE MMM
OBJECT MODULE PLACED IN mmm.OBJ
COMPILER INVOKED BY: D:\Program Files\Keil\C51\BIN\C51.EXE mmm.c BROWSE DEBUG OBJECTEXTEND

line 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          /****************************************************************************/
  35          
  36          
  37          void Delay100ms(unsigned char x)
  38          {   
  39   1        unsigned char i,j;
  40   1        
  41   1        while(x-- != 0)
  42   1        {  wdog=! wdog;
  43   2              for (j = 0;j < 114; j++)for (i = 0;i < 88; i++){_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;
  44   3              _nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_(
             -) ;
  45   3              _nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_() ;_nop_(
             -) ;
  46   3              _nop_() ;_nop_() ;_nop_() ;};
  47   2        }
  48   1      }
  49          /****************************************************************************/
  50          
  51          
  52          void Delay1ms(unsigned char idata  x)
  53          {   
C51 COMPILER V8.02   MMM                                                                   05/01/2006 15:43:37 PAGE 2   

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

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

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

 238   2          return 1;
 239   2              }
 240   1        else
 241   1        {
 242   2          ES=0;
 243   2          TX_EN=1;
 244   2          Delay1ms(4);
 245   2          return 0;
 246   2              }
 247   1       
 248   1      }
 249          
 250          //**************************************************************************
 251          void main(void)
 252          {
 253   1          // unsigned int xx;
 254   1      
 255   1           unsigned char i,*sdata;
 256   1               unsigned long yyy=0;
 257   1              Test_led=!Test_led;
 258   1              Delay100ms(5);
 259   1              Test_led=!Test_led;
 260   1              wdog=! wdog;
 261   1          TX_EN=1;
 262   1              init_com();
 263   1              ES=0;
 264   1          i=0;
 265   1          PWR_UP=1;
 266   1          CS=1;
 267   1        while(1)
 268   1         {
 269   2           wdog=! wdog;
 270   2               sdata="12";
 271   2        if( Send(sdata,2))
 272   2         {
 273   3           Test_led=!Test_led;
 274   3               Delay1ms(60);
 275   3               Test_led=!Test_led;    
 276   3         }
 277   2         else
 278   2           Delay1ms(10);
 279   2         // Delay100ms(1);  
 280   2                      //      
 281   2         }
 282   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    472    ----
   CONSTANT SIZE    =      3    ----
   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 + -