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

📄 deng.lst

📁 这是我前一段开发CAN总线通讯时编写的CAN测试程序
💻 LST
字号:
C51 COMPILER V7.06   DENG                                                                  01/08/2008 17:07:30 PAGE 1   


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

stmt level    source

   1           #include<reg52.h>
   2          
   3          
   4          sfr                        CKCON=0xb6;             //定义时钟控制寄存器
   5          sfr                        IPH=0xb7;           //中断器优先级高位
   6          sbit SHANGDIAN_ID1= P1^3;//
   7          sbit STATE_ID2= P1^4;//
   8          sbit STATE_ID3= P1^5;//
   9          sbit STATE_ID4= P1^6;//
  10          
  11          unsigned char TIME_counter=0;
  12          unsigned char TIME_counter1=0;
  13          unsigned char TIME_counter2=0;
  14          
  15          unsigned char pointer=0;       //串口接受首地址
  16          unsigned char xdata Rev_COM_data[12];             //串口通讯接受存储单元
  17          
  18          bit Com_Begin_bz=0;   //串口数据开始接受
  19          
  20          
  21          /*串口发送子程序*/
  22          void Comout(unsigned char OutData)
  23          {  //EA=0;
  24   1         SBUF = OutData; //输出字符
  25   1         while(!TI); //空语句判断字符是否发完
  26   1         TI = 0; //清TI
  27   1         //EA=1;
  28   1      }
  29          
  30           main( )
  31             {
  32   1          CKCON=0x04;
  33   1              IP=1;
  34   1              IPH=1;
  35   1              TMOD=0x21;        //   定时器T0为方式1,T1为方式2
  36   1              TH0=0x00;
  37   1              TL0=0x00;         //定时器0设置,暂时先开开,可能用不上
  38   1              TR0=1;
  39   1              ET0=1;
  40   1              TH1=0x00;
  41   1              TL1=0x00;         //定时器1设置,暂时先开开,可能用不上
  42   1              TR1=1;
  43   1              ET1=1;
  44   1              RCLK=1;
  45   1              TCLK=1;        //定时器2用作波特率发生器   T2CON中的值
  46   1              RCAP2H=0xff;
  47   1              RCAP2L=0xB8;   //初步设定波特率为9600
  48   1              RCAP2L=0xDC;   //初步设定波特率为19200
  49   1      
  50   1              //RCAP2H=0x77;
  51   1              //RCAP2L=0x77;   //初步设定波特率为9600
  52   1              SCON=0x50;     //串口方式为模式1,无校验,定时器2产生波特率 
  53   1              TR2=1;        //开定时器2
  54   1              //ET2=1;                  //使能定时器2
  55   1              IT0=1;       //         负边缘触发
C51 COMPILER V7.06   DENG                                                                  01/08/2008 17:07:30 PAGE 2   

  56   1              EX0=1;         //外部中断使能 
  57   1              ES=1;          //使能串口  
  58   1              EA=1;
  59   1              
  60   1              while (1)
  61   1              {
  62   2                        if(pointer>=1&&(Rev_COM_data[0]==0xB5)&&(Rev_COM_data[1]==0xA5))
  63   2                            {
  64   3                                  
  65   3                                  pointer=0;
  66   3                                  Com_Begin_bz=0;
  67   3                                 //if(TIME_counter2>=100)
  68   3                                  //{
  69   3                                      //  TIME_counter2=0;
  70   3                                        Comout(0xB5);                           //是正常通讯信号,回数据
  71   3                                        Comout(0xA5);
  72   3                                        Rev_COM_data[0]=0;
  73   3                                        Rev_COM_data[1]=0;
  74   3                              //      } 
  75   3                                 }
  76   2      
  77   2      
  78   2               } 
  79   1            
  80   1          }
  81          
  82                  void Timer0() interrupt 1 using 1
  83          {
  84   1          TH0 = 0X99;
  85   1          
  86   1        TL0 = 0x99;
  87   1          TIME_counter++;
  88   1              if(TIME_counter>=254)
  89   1              {
  90   2                 TIME_counter=0;
  91   2                 STATE_ID3=!STATE_ID3;
  92   2               }
  93   1      }
  94          void Timer1() interrupt 3 using 2
  95            {
  96   1        TH1 = 0X00;
  97   1          
  98   1        TL1 = 0x00;
  99   1          TIME_counter1++;
 100   1              TIME_counter2++;
 101   1              if(TIME_counter1>=254)
 102   1              {
 103   2                 TIME_counter1=0;
 104   2                 STATE_ID4=!STATE_ID4;
 105   2               }
 106   1        
 107   1          }
 108          
 109          //void Timer2( ) interrupt 5 using 1
 110          //       {
 111          //          RCAP2H=0x00;
 112          //         RCAP2L=0x00;   //初步设定波特率为9600
 113          //         STATE_ID4=!STATE_ID4;
 114          //         TF2=0;
 115          //          }
 116          
 117          
C51 COMPILER V7.06   DENG                                                                  01/08/2008 17:07:30 PAGE 3   

 118          void CAN(void) interrupt 0      using 0
 119          {
 120   1       SHANGDIAN_ID1=!SHANGDIAN_ID1; 
 121   1         
 122   1      }
 123          
 124          
 125          /*串口中断接收程序此程序中需要处理即对过来的数据进行软件滤波及信息分析*/
 126            void ComInINT(void) interrupt 4 using 3
 127          {        
 128   1             if(RI)
 129   1              {unsigned char astring;
 130   2                RI = 0; //RI清零
 131   2                       // ES=0;
 132   2                 astring= SBUF;
 133   2                         STATE_ID2=!STATE_ID2;
 134   2                         if(astring==0xb5)
 135   2                           {Rev_COM_data[pointer++]=astring;
 136   3                                Com_Begin_bz=1;
 137   3      //                        txsjjs=10;              //根据定时周期长短来定义初值
 138   3                                }
 139   2                              else
 140   2                                {     if(Com_Begin_bz==1)
 141   3                                    { 
 142   4                                         Rev_COM_data[pointer++]=astring;
 143   4                                         }
 144   3                                 } 
 145   2                        if(pointer>=12)
 146   2                          {pointer=0;
 147   3                               Com_Begin_bz=0;
 148   3                               }
 149   2                      // ES=1;                                 
 150   2              }
 151   1      }
 152          
 153          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    256    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =     12    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      4       1
   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 + -