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

📄 serial.lst

📁 是IC,CH451的处理程序,连接有LED灯.可用.
💻 LST
字号:
C51 COMPILER V7.08   SERIAL                                                                04/10/2007 14:09:20 PAGE 1   


C51 COMPILER V7.08, COMPILATION OF MODULE SERIAL
OBJECT MODULE PLACED IN serial.OBJ
COMPILER INVOKED BY: D:\Keil\C51\BIN\C51.EXE serial.C BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include "my51.h"
   2          
   3          extern void delay_s(unsigned char);
   4          
   5          bit timeout;
   6          unsigned char tcount;
   7          unsigned char bflw;
   8          
   9          void timer0_init()
  10          {
  11   1              timer0_mode_autoreload;
  12   1              TH0 = 0;
  13   1              TL0 = 0;
  14   1              timer0_stop;
  15   1      }
  16          
  17          void timer0() interrupt int_timer2 
  18          {
  19   1          TF0 = 0;
  20   1          TL0 = 0xf0;
  21   1          TH0 = 0x58;
  22   1          if (tcount < 150)
  23   1                      tcount++;
  24   1          else
  25   1                      timeout = 1;
  26   1      }
  27          
  28          
  29          
  30          void serial_int() interrupt int_serial
  31          {
  32   1              if (RI){
  33   2                      RI = 0;
  34   2                      bflw = SBUF;
  35   2              }
  36   1      }
  37          
  38          void serial_init()
  39          {
  40   1              serial_baud_9600;
  41   1              serial_uart_8;
  42   1              serial_receive_enable;
  43   1      }
  44          
  45          bit s_in(unsigned char xdata *pbuf)
  46          {
  47   1              timeout = 0;
  48   1              tcount = 0;
  49   1              timer0_run;
  50   1              while(1){
  51   2                      if (RI){
  52   3                              *pbuf = SBUF;
  53   3                  RI = 0;
  54   3                              break;
  55   3                      }
C51 COMPILER V7.08   SERIAL                                                                04/10/2007 14:09:20 PAGE 2   

  56   2                      else{
  57   3                              if (timeout)
  58   3                                      break;
  59   3                      }
  60   2              }
  61   1              timer0_stop;
  62   1              return timeout;
  63   1      }
  64          
  65          void s_out(unsigned char ndata)
  66          {
  67   1              TI = 0;
  68   1              timeout = 0;
  69   1              tcount = 0;
  70   1              timer0_run;
  71   1              SBUF = ndata;
  72   1              while(TI == 0){
  73   2                      if (timeout)
  74   2                              break;
  75   2              }
  76   1              timer0_stop;
  77   1      }
  78          
  79          
  80          
  81          //发送指令到PC
  82          void serial_data_to_main(unsigned char xdata *pcmd, unsigned char nlen)
  83          {
  84   1              unsigned char i;
  85   1              unsigned char xdata tmp;
  86   1              for (i = 0; i < nlen; i++, pcmd++){
  87   2                      s_out(*pcmd);
  88   2                      if (s_in(&tmp))
  89   2                              return;
  90   2                      if (tmp != *pcmd)
  91   2                              return;
  92   2              }
  93   1      }
  94          
  95          //返回:接收数据长度
  96          unsigned char serial_data_from_main(unsigned char xdata *pcmd)
  97          {
  98   1              unsigned char i, cmdid;
  99   1              unsigned char xdata tmp;
 100   1              while(1){       //接收数据头0xff,0x00
 101   2                      if (s_in(&tmp))
 102   2                              return 0xff;
 103   2                      if (tmp != 0xff)
 104   2                              continue;
 105   2      in_1:
 106   2                      s_out(tmp);
 107   2                      if (s_in(&tmp))
 108   2                              return 0xff;
 109   2                      if (tmp == 0xff)
 110   2                              goto in_1;
 111   2                      if (tmp != 0x00)
 112   2                              continue;
 113   2                      s_out(tmp);
 114   2                      break;
 115   2              }
 116   1              if (s_in(&tmp)) //接受命令ID
 117   1                      return 0xff;
C51 COMPILER V7.08   SERIAL                                                                04/10/2007 14:09:20 PAGE 3   

 118   1              s_out(tmp);
 119   1              cmdid = tmp;
 120   1              if (s_in(&tmp)) //接受数据长度
 121   1                      return 0xff;
 122   1              s_out(tmp);
 123   1              for (i = 0; i < tmp; i++){
 124   2                      if (s_in(pcmd))
 125   2                              return 0xff;
 126   2                      s_out(*pcmd);
 127   2                      pcmd++;
 128   2              }
 129   1              return cmdid;
 130   1      }
 131          
 132          


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