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

📄 ioserial.lst

📁 pdh控制程序
💻 LST
字号:
C51 COMPILER V7.20   IOSERIAL                                                              02/20/2006 10:14:05 PAGE 1   


C51 COMPILER V7.20, COMPILATION OF MODULE IOSERIAL
OBJECT MODULE PLACED IN .\output\ioserial.obj
COMPILER INVOKED BY: D:\keil c51 v7.09\C51\BIN\C51.EXE ioserial.c BROWSE DEBUG OBJECTEXTEND PRINT(.\list\ioserial.lst) O
                    -BJECT(.\output\ioserial.obj)

line level    source

   1          #ifndef _IO_SERIAL_C_
   2          #define _IO_SERIAL_C_
   3          
   4          #include "ioserial.h"
   5          #include "serial.h"
   6          
   7          EMULATE_UART data giocomm;
   8          static bit rcvBit;
   9          
  10          #define TIME_HALF_BAUDTO_9600_TH2 0xff
  11          #define TIME_HALF_BAUDTO_9600_TL2 0xa0
  12          
  13          void Extern_Interrupt(void) interrupt EXTERN0_INTERRUPT_VECTOR
  14          {
  15   1      /*      EMULATE_START_HALF_TIMER;*/
  16   1              TH2 = TIME_HALF_BAUDTO_9600_TH2;
  17   1              TL2 = TIME_HALF_BAUDTO_9600_TL2;
  18   1      
  19   1              /*start timer*/
  20   1              EMULATE_START_BAUD;
  21   1      
  22   1              /*stop extern interrupt,only startbit enable interrupt.*/
  23   1              EMULATE_STOP_EXT;
  24   1      }
  25          
  26          void Time1_Interrupt(void) interrupt TIME1_INTERRUPT_VECTOR using 1
  27          {
  28   1              EMULATE_CLEAR_PEND;
  29   1      
  30   1              /*receive emulate UART*/
  31   1              if( giocomm.status == EMULATE_RECEIVE )
  32   1              {
  33   2                      rcvBit = RECV; 
  34   2      
  35   2                      /*start bit*/
  36   2                      if( giocomm.bitCount == 0 )
  37   2                      {
  38   3                              giocomm.bitCount ++;
  39   3                              giocomm.bitTemp = 0;
  40   3                              return;
  41   3                      }
  42   2      
  43   2                      /*receive 8bits data*/
  44   2                      else if( giocomm.bitCount < 9 )
  45   2                      {
  46   3                              giocomm.bitCount ++;    
  47   3      
  48   3                              if( rcvBit )
  49   3                                      giocomm.bitTemp =  (giocomm.bitTemp>>1) | 0x80;
  50   3                              else
  51   3                                      giocomm.bitTemp >>= 1;
  52   3      
  53   3                              return;
  54   3                      }
C51 COMPILER V7.20   IOSERIAL                                                              02/20/2006 10:14:05 PAGE 2   

  55   2      
  56   2                      /*receive the ten bits*/
  57   2                      else if( giocomm.bitCount == 9 )
  58   2                      {
  59   3                              giocomm.bitCount ++;    
  60   3                              return;
  61   3                      }
  62   2      
  63   2                      /*stop bit*/
  64   2                      else if( giocomm.bitCount == 10 )
  65   2                      {
  66   3                              /*stop timer and receive bit*/
  67   3                              EMULATE_STOP_BAUD;
  68   3      
  69   3                              /*use interrupt, check start bit.*/
  70   3                              EMULATE_START_EXT;
  71   3      
  72   3                              giocomm.bitCount = 0;
  73   3                              giocomm.byteTemp = giocomm.bitTemp;
  74   3                              if( rcvBit )
  75   3                              {
  76   4                                      gIoSerial.ReceiceBuffer[gIoSerial.Iocounter ++] = giocomm.byteTemp;
  77   4                                      gIoSerial.ReveiveOverTime = RECEIVE_TIME_START;
  78   4      
  79   4      //                              emulateReceiveIsr( giocomm.byteTemp );
  80   4                                      return;
  81   4                              }
  82   3                              else
  83   3                              {
  84   4                                      emulateStartReceive();
  85   4                                      return;
  86   4                              }
  87   3                      }
  88   2                      return;
  89   2              }
  90   1      
  91   1              /*send emulate UART */
  92   1              if( giocomm.status == EMULATE_TRANSMIT )
  93   1              {
  94   2                      if( giocomm.bitValid == 1 )
  95   2                      {
  96   3                              /*send the start bit,start bit is 1*/
  97   3                              if( giocomm.bitCount == 0 )
  98   3                              {
  99   4                                      sendbit( LOW );
 100   4                                      giocomm.bitCount ++;
 101   4                              }
 102   3      
 103   3                              /*send the eight bit data*/
 104   3                              else if( giocomm.bitCount < 9 )
 105   3                              {
 106   4                                      sendbit( giocomm.bitTemp );
 107   4                                      giocomm.bitTemp >>= 1;
 108   4                                      giocomm.bitCount ++;
 109   4                              }
 110   3      
 111   3                              /*send the ten bit,is a verify but no use*/
 112   3                              else if(giocomm.bitCount == 9)
 113   3                              {
 114   4                                      giocomm.bitCount ++;
 115   4                                      sendbit( LOW );
 116   4                              }
C51 COMPILER V7.20   IOSERIAL                                                              02/20/2006 10:14:05 PAGE 3   

 117   3      
 118   3                              /*send the stop bit*/
 119   3                              else if(giocomm.bitCount == 10)
 120   3                              {
 121   4                                      giocomm.bitCount ++;
 122   4                                      giocomm.bitValid = 0;
 123   4                                      sendbit( HIGH );
 124   4                                      emulateTransmitIsr();
 125   4                              }
 126   3                      }
 127   2                      return;
 128   2              }
 129   1      }
 130          
 131          void setEmulateTransmitByte(BYTE value)
 132          {
 133   1          giocomm.bitCount = 0;
 134   1          giocomm.bitValid = 1;
 135   1          giocomm.bitTemp = value;
 136   1          return;
 137   1      }
 138          
 139          
 140          void emulateStopReceive(void)
 141          {
 142   1              DISABLE_INTERRUPT;
 143   1      
 144   1              EMULATE_STOP_EXT;
 145   1              EMULATE_STOP_BAUD;
 146   1      
 147   1              ENABLE_INTERRUPT;
 148   1      }
 149          
 150          
 151          
 152          void emulateStartSend(void)
 153          {
 154   1              DISABLE_INTERRUPT;
 155   1      
 156   1              giocomm.status = EMULATE_TRANSMIT;
 157   1      
 158   1              giocomm.bitValid = 0;
 159   1              emulateTransmitIsr();  /*get bit temp*/
 160   1      
 161   1              EMULATE_STOP_EXT;    /*disable extern interrupt*/
 162   1              EMULATE_START_BAUD;
 163   1      
 164   1              ENABLE_INTERRUPT;
 165   1      }
 166          
 167          void initIocomm( void )
 168          {
 169   1              IP = 0;       /*clear all priority*/
 170   1              EXT_IP = 1;
 171   1              EXT_IE = 1;
 172   1              EXT_EDGE = 1;   /*down edge interrupt*/
 173   1      
 174   1              TIMER_IP = 1;    /*timer in high priority*/
 175   1              TIMER_IE = 1;    /*enable timer interrupt*/
 176   1      
 177   1              T2CON = 0;
 178   1      //      T2MOD = 0;
C51 COMPILER V7.20   IOSERIAL                                                              02/20/2006 10:14:05 PAGE 4   

 179   1              RCAP2H = EMULATE_TIMER/256;
 180   1              RCAP2L = EMULATE_TIMER%256;
 181   1      
 182   1              emulateStartReceive();
 183   1      }
 184          
 185          
 186          #endif


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    278    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      5    ----
   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 + -