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

📄 isr.lst

📁 a gps program
💻 LST
字号:
C51 COMPILER V7.09   ISR                                                                   11/19/2006 16:03:09 PAGE 1   


C51 COMPILER V7.09, COMPILATION OF MODULE ISR
OBJECT MODULE PLACED IN isr.OBJ
COMPILER INVOKED BY: D:\Keil\C51\BIN\C51.EXE isr.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          
   2          #include "includes.h"
   3          #include "uart.h"
   4          
   5          sbit MPH1 = P1^2;
   6          sbit MPM1 = P1^3;
   7          
   8          uchar idata SendBuf[64];
   9          uchar idata SendCoun, SendLen;
  10          
  11          uchar data Clock0, Clock1;
  12          
  13          void CPUInit(void)
  14          {
  15   1          // 定时器1作为串行口的波特率发生器
  16   1          // 定时器0分成两个独立的计数器
  17   1          TMOD = 0x27;
  18   1              //TMOD = 0x21;
  19   1          TH0 = 0x00;
  20   1          ET1 = 1;            // 使能TH0中断
  21   1          TR1 = 1;            // 启动计数器
  22   1          TL0 = 0x00;         
  23   1          ET0 = 1;
  24   1          TR0 = 0;
  25   1          TH1 = 0xfd; 
  26   1          TL1 = 0xfd;
  27   1          //T2CON = 0x00;
  28   1          RCLK = 1;
  29   1              //TCLK = 1;
  30   1          RCAP2H = (65536 - OSC / 32 / BAUD_RXD) / 256;
  31   1          RCAP2L = (65536 - OSC / 32 / BAUD_RXD) % 256;
  32   1          TR2 = 1;
  33   1          //PCON = 0x80;
  34   1          SM0 = 0; SM1 = 1;   // 串行通信方式1
  35   1          IT0 = 1; IT1 = 1;   // 外部中断下降沿触发
  36   1          PX1 = 1;            // 外部中断1高优先级
  37   1          EX0 = 1; EX1 = 1;
  38   1          ES = 1; REN = 1;
  39   1          EA = 1;
  40   1      }
  41          
  42          // 
  43          // 测量周波
  44          //
  45          void ext_int0(void) interrupt 0 using 3
  46          {
  47   1          if (!FlagAC) {
  48   2              TR0 = !TR0;
  49   2              if (TR0 == 0) {
  50   3                  ACData[ACCoun] = Timer_20;
  51   3                  Timer_20 = 0;
  52   3                  ACCoun++;
  53   3                  if (ACCoun >= 5)
  54   3                      FlagAC=1;
  55   3              }
C51 COMPILER V7.09   ISR                                                                   11/19/2006 16:03:09 PAGE 2   

  56   2          }
  57   1      }
  58          
  59          void timer0(void) interrupt 1 using 3
  60          {
  61   1          TL0 = 255;
  62   1              Timer_20++;
  63   1              MS20++;
  64   1              if (MS20 >= 0) {
  65   2                  SecAC += 1;
  66   2                      MS20 = 0;
  67   2              }
  68   1      }
  69          
  70          void ext_int1(void) interrupt 2 using 2
  71          { 
  72   1      }
  73          
  74          //
  75          // 定时器1的中断被TH0借用
  76          // 计数周期为主频的1/12
  77          //
  78          void timer1(void) interrupt 3 using 2
  79          { 
  80   1          Clock0++;
  81   1          Clock1++;
  82   1      }
  83          
  84          /*串行接收子函数 中断方式*/
  85          void uart0(void) interrupt 4 using 1
  86          {
  87   1          uchar temp;
  88   1          if (TI == 1) {
  89   2              TI = 0;
  90   2              SendCoun++;
  91   2              if (SendCoun < SendLen)
  92   2                  SBUF = SendBuf[SendCoun];
  93   2          }
  94   1          if (RI == 1) {
  95   2              temp = SBUF;
  96   2              RI = 0;
  97   2              if (FlagStart == 0 && FlagStop == 0) {
  98   3                  switch(GetCoun) {
  99   4                      case 0:
 100   4                          if (temp == '$')    //$GPRMC 数据包的头,用来判断是否
 101   4                              GetCoun++;     //是你要收的数据
 102   4                          else
 103   4                              GetCoun = 0;
 104   4                          break;
 105   4                      case 1:
 106   4                          if (temp == 'G')
 107   4                              GetCoun++;
 108   4                          else
 109   4                              GetCoun = 0;
 110   4                          break;
 111   4                      case 2:
 112   4                          if (temp == 'P') {
 113   5                              FlagType = 0;
 114   5                              GetCoun++;
 115   5                          }
 116   4                          else if (temp == 'G') {
 117   5                              FlagType = 1;
C51 COMPILER V7.09   ISR                                                                   11/19/2006 16:03:09 PAGE 3   

 118   5                              GetCoun++;
 119   5                          }
 120   4                          else
 121   4                              GetCoun = 0;
 122   4                          break;
 123   4                      case 3:
 124   4                          if (FlagType == 0) {
 125   5                              if (temp == 'R')
 126   5                                  GetCoun++;
 127   5                              else
 128   5                                  GetCoun = 0;
 129   5                          }
 130   4                          else {
 131   5                              if (temp == 'G')
 132   5                                  GetCoun++;
 133   5                              else
 134   5                                  GetCoun = 0;
 135   5                          }
 136   4                          break;
 137   4                      case 4:
 138   4                          if (FlagType == 0) {
 139   5                              if (temp == 'M')
 140   5                                  GetCoun++;
 141   5                              else
 142   5                                  GetCoun = 0;
 143   5                          }
 144   4                          else {
 145   5                              if (temp == 'A')
 146   5                                  GetCoun++;
 147   5                              else
 148   5                                  GetCoun = 0;
 149   5                          }
 150   4                          break;
 151   4                      case 5:
 152   4                          if (FlagType == 0) {
 153   5                              if (temp == 'C') {
 154   6                                  GetCoun++;
 155   6                                  FlagStart = 1;
 156   6                              }
 157   5                              else
 158   5                                  GetCoun = 0;
 159   5                          }
 160   4                          else {
 161   5                              if (temp == 'A') {
 162   6                                  GetCoun++;
 163   6                                  FlagStart = 1;
 164   6                              }
 165   5                              else
 166   5                                  GetCoun = 0;
 167   5                          }
 168   4                          break;
 169   4                      default:
 170   4                          break;
 171   4                  }
 172   3              }
 173   2              else if (FlagStart == 1 && FlagStop == 0) {
 174   3                  if (FlagType == 0) {
 175   4                      if (GetCoun >= 7 && GetCoun <= 12) {  //时间:时分秒
 176   5                          Time[GetCoun - 7] = temp;
 177   5                          GetCoun++;
 178   5                      }
 179   4                      else if (GetCoun == 14) {  //是否同步,‘A’同步,‘V’
C51 COMPILER V7.09   ISR                                                                   11/19/2006 16:03:09 PAGE 4   

 180   5                          if (temp == 'A')
 181   5                              FlagSYN=1;
 182   5                          else
 183   5                              FlagSYN=0;
 184   5                          GetCoun++;
 185   5                      }
 186   4                      else if (GetCoun >= 16 && GetCoun <= 24) { //纬度
 187   5                          Latitude[GetCoun - 16] = temp;
 188   5                          GetCoun++;
 189   5                      }
 190   4                      else if (GetCoun >= 28 && GetCoun <= 37) { //经度
 191   5                          Longitude[GetCoun - 28] = temp;
 192   5                          GetCoun++;
 193   5                      }
 194   4                      else if (GetCoun >= 53 && GetCoun <= 58) { //日期:日月年
 195   5                          Date[GetCoun - 53] = temp;
 196   5                          GetCoun++;
 197   5                      }
 198   4                      else if(GetCoun > 58) {
 199   5                          FlagStop = 1;
 200   5                          GetCoun = 0;
 201   5                      }
 202   4                      else {
 203   5                          GetCoun++;
 204   5                      }
 205   4                  }
 206   3                  else {
 207   4                      if (GetCoun >= 12 && GetCoun <= GetCoun <= 13) {
 208   5                          Planet[GetCoun - 12] = temp;
 209   5                          GetCoun++;
 210   5                      }
 211   4                      else if (GetCoun > 13) {
 212   5                          FlagStop = 1;
 213   5                          GetCoun = 0;
 214   5                      }
 215   4                      else {
 216   5                          GetCoun++;
 217   5                      }
 218   4                  }
 219   3              }
 220   2          }
 221   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    563    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      2    ----
   IDATA SIZE       =     66    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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