c_main.lst

来自「433.92m无线模块的接收到有效数据后」· LST 代码 · 共 421 行 · 第 1/2 页

LST
421
字号
C51 COMPILER V7.02b   C_MAIN                                                               08/06/2007 21:11:12 PAGE 1   


C51 COMPILER V7.02b, COMPILATION OF MODULE C_MAIN
OBJECT MODULE PLACED IN c_main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.exe c_main.c DEBUG OBJECTEXTEND NOCOND PREPRINT(.\c_main.i)

stmt level    source

   1          /////////////////////////////////////////////////////
   2          /////////////////////////////////////////////////////
   3          #include <Reg935.h>
   4          #include <intrins.h>
   5          #include <cewen.h>
   6          #include <UART2.H>
   7          #include <W_R_E2RAM.h>
   8          ////////////////////////////////////////////////////
   9          unsigned char sendRQ=0;
  10          unsigned char ch=0;
  11          char text[]="response at 9600 baud";
  12          ////////////////////////////////////////////////////
  13          //////////////////////////////////////////////////////
  14          ////////////////////////////////////////////////////////////////////
  15          //---------------------------------------------------------------------------------------
  16          //delayms: 在使用内部RC震荡器时延时毫秒子程序
  17          //入口参数: i 延时MS数
  18          //出口参数: (无)
  19          //---------------------------------------------------------------------------------------
  20          void delayms(int i)
  21          {
  22   1        unsigned int k;
  23   1        while(i>0)
  24   1             {
  25   2              for(k=0;k<670;k++);
  26   2                 i--;
  27   2             }
  28   1      }
  29          //---------------------------------------------------------------------------------------
  30          //InitTimer: 初始化系统定时器
  31          //---------------------------------------------------------------------------------------
  32          void InitTimer(void)
  33          {
  34   1        AUXR1=0x10; //ENT0=1,允许T0溢出触发输出
  35   1        TMOD = 0x12; //TIMER0工作在MODE6,TIMER1工作在MODE1
  36   1        TAMOD = 0x01;
  37   1        //TH0=0x80; //赋初值
  38   1        TR0=0; //启动定时器0
  39   1        ET1=1;
  40   1        EA=1;
  41   1      }
  42          /////////////////////////////////////////////////////////////////////////////////////////
  43          void Init_Serial(void)
  44          {                       
  45   1               SSTAT=0x60;                                   // separate Rx / Tx interrupts
  46   1               PCON&=0x3f;                       /*UART 设置工作方式3,11 位数据*/
  47   1               if(WorkMode==0x01) SCON=0x50; 
  48   1           else               SCON=0xd0;     // select BRG as UART Baud Rate Gen
  49   1           BRGCON=0x00;                      /*装入波特率常数,0--1200bps   1--2400bps  2--4800bps*/
  50   1           if(botelv==1)     BRGR1_DATA=0x17;
  51   1           else if(botelv==2)BRGR1_DATA=0x0b;
  52   1           else if(botelv==3)BRGR1_DATA=0x05;
  53   1           else if(botelv==4)BRGR1_DATA=0x02;
  54   1           BRGR0_DATA=0xf0;
  55   1      //////////////////////////////////////////////////////////////////////
C51 COMPILER V7.02b   C_MAIN                                                               08/06/2007 21:11:12 PAGE 2   

  56   1           BRGR1=BRGR1_DATA;
  57   1           BRGR0=BRGR0_DATA;
  58   1           BRGCON=0x03;                      //enable BRG
  59   1           EST=0;
  60   1               ESR=1;
  61   1               ES = 1;        
  62   1           EA=1;
  63   1      }
  64          ////////////////////////////////////////////////////////////////////////////////////////
  65          void UART_ISR(void) interrupt 4
  66          {
  67   1              RI = 0;                                         // clear receive interrupt flag
  68   1              TI = 0;
  69   1              ser_dat[ch]=SBUF;                                   // copy input bufffer to ch
  70   1              ch++;
  71   1          if(sendRQ==0)   sendRQ=1;                       // set flag for polling in main loop     
  72   1      }
  73          ////////////////////////////////////////////////////////////////////////////////////////
  74          /********************************************************************
  75          串口发送一个字节
  76          功能:发送一个字节数据
  77          入口参数:发送数据
  78          出口参数:无
  79          ********************************************************************/
  80          void Send_Data(uchar Serial_data)
  81          {
  82   1        ACC=Serial_data;
  83   1        TB8=P;TI=0;
  84   1        SBUF=Serial_data;
  85   1        while(!TI);
  86   1        TI=0;        /*发送一个字节,并进行偶校验*/
  87   1      }
  88          ////////////////////////////////////////////////////////////////////////////////////////
  89          /*void sendtoPC(char* dat)
  90          {
  91                  int j=0;
  92                  if(WorkMode==1)
  93                {while(dat[j])                            // send string
  94                       {
  95                           TI=0;                                  // clear transmit interrupt flag
  96                           SBUF=dat[j];                   // start sending one byte
  97                           while (!TI);                   // wait until sent
  98                           j++;
  99                      }
 100                }
 101              else 
 102               { while(dat[j])                            // send string
 103                 {Send_Data(dat[j]); j++;}
 104                     
 105              }
 106          
 107          }*/
 108          ////////////////////////////////////////////////////////////////////////////////////////
 109          void sendtoPCa(void)
 110          {       int j=0;
 111   1              if(WorkMode==1)
 112   1            {while(ch--)                              // send string
 113   2                   {
 114   3                       TI=0;                                  // clear transmit interrupt flag
 115   3                       SBUF=ser_dat[j];                       // start sending one byte
 116   3                       while (!TI);                   // wait until sent
 117   3                       j++;
C51 COMPILER V7.02b   C_MAIN                                                               08/06/2007 21:11:12 PAGE 3   

 118   3                  }
 119   2            }
 120   1          else 
 121   1           { while(ch--)                              // send string
 122   2             {Send_Data(ser_dat[j]);j++; }
 123   2                 
 124   2          }
 125   1      }
 126          /////////////////////////////////////////////////////////////////////////////////////////
 127          //初始化CPU——IO口
 128          ////////////////////////////////////////////////////////////////////////////////////////
 129          void Init_cpuio(void)
 130          {  P0M1=0x5e; //01011110                //P0.4~p0.1设置为仅为输入状态AD_io//
 131   1         P0M2=0x80; //10000000        //p0.0-key1,p.05-key2//p0.6-RX,p0.7-TX 无线接收发射//
 132   1         /////////////////////////////////////////////////////////////////////////////////////
 133   1         P1M1=0x3e; //00111111                //P10-RXD,P11-TXD
 134   1         P1M2=0xff; //11111111        //P16-LED_RED,LED-GREE
 135   1         /////////////////////////////////////////////////////////////////////////////////////
 136   1         P2M1=0x6c; //01101100                //RFC-P20,SD3-P21,
 137   1         P2M2=0xff; //11111111        //SD2-P26,SD1-P27
 138   1         /////////////////////////////////////////////////////////////////////////////////////
 139   1         KF=1;
 140   1         RFC=1;                       //无线接收状态控制位0为发送,1为接收状态
 141   1         uart2txd=0;                  //无线发射端
 142   1         CTRL485=1;                   //1为接收;0为发送485接收状态
 143   1         LED_red=1;                   //
 144   1         LED_green=1;                 // 
 145   1         ES = 1;      
 146   1         EA=1;
 147   1      }
 148          ////////////////////////////////////////////////////////////////////////////////////////
 149          //--------------------------------------------------------------------------------------
 150          //功能:RTC初始化
 151          //--------------------------------------------------------------------------------------
 152          void RTC_Init()
 153           {
 154   1        Time_S=0;
 155   1        Time_M=0;                     //Time_M,Time_S初始化为0
 156   1        IEN0|=0xC0; //使能RTC中断,使能EA中断
 157   1        WDCON=0xE0; //关闭看门狗中断
 158   1        RTCH=0xE0;
 159   1        RTCL=0xFF;  //7.3728MHz下,1s中断1次时,RTC的定时值
 160   1        RTCCON=0x63; //开启RTC模块
 161   1       }
 162          /*------------------------------------------------------------------------------------*/
 163          //-------------------------------------------------------------------------------------
 164          //功能:模拟时钟变化,
 165          //Time_S为秒,Time_M为分
 166          //--------------------------------------------------------------------------------------
 167          void Inc_time()
 168          {
 169   1        Time_S++;
 170   1        if(Time_S>59)
 171   1        {
 172   2         Time_S=0;
 173   2         Time_M++;
 174   2         if(Time_M>59)
 175   2           {
 176   3            Time_M=0;
 177   3            Time_x++;
 178   3            if(Time_x>23) Time_x=0;
 179   3            }
C51 COMPILER V7.02b   C_MAIN                                                               08/06/2007 21:11:12 PAGE 4   

 180   2         }
 181   1      }
 182          /////////////////////////////////////////////////////////////////////////////////////////
 183          //-----------------------------------------------------------------------------
 184          //功能:RTC中断服务程序
 185          //-----------------------------------------------------------------------------
 186           void RTC_ISR() interrupt 10
 187           {
 188   1         EA=0;
 189   1         RTCCON&=0x63; //清除RTC中断标志位
 190   1         Inc_time();
 191   1         EA=1;
 192   1      }
 193          //////////////////////////////////////////////////////////////////////////////////////////
 194          //////////////////////////////////////////////////////////////////////////////////////////
 195          uchar Int_System(void)
 196          { uchar count,num=0,i;

⌨️ 快捷键说明

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