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

📄 u2.lst

📁 基于51单片机的自定通信协议设计源代码加仿真
💻 LST
字号:
C51 COMPILER V8.05a   U2                                                                   03/11/2009 12:36:32 PAGE 1   


C51 COMPILER V8.05a, COMPILATION OF MODULE U2
OBJECT MODULE PLACED IN u2.OBJ
COMPILER INVOKED BY: D:\Program Files\Keil\C51\BIN\C51.EXE u2.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include <at89x51.h>
   2          sbit clk=P3^2;
   3          sbit dat=P3^4;
   4          unsigned char receive[4]={0,0,0,0},j=0;  //receive[3]为接收成功标志,1为成功
   5          void read_8bit(void)
   6          {
   7   1              unsigned char i=0;
   8   1              receive[3]=0;
   9   1              while(!clk);
  10   1              for(i=0;i<8;i++)
  11   1              {
  12   2                      receive[j]=receive[j]<<1;
  13   2                      if(dat) receive[j]=receive[j]|0x01;
  14   2                      if(i==7)
  15   2                      {
  16   3                              if(receive[0]==0x38)               //receive[0]定义数据类型
  17   3                              {
  18   4                                      j++;
  19   4                                      if(j==3)
  20   4                                      {
  21   5                                              receive[3]=1;
  22   5                                              receive[0]=0;
  23   5                                              j=0;
  24   5                                      }
  25   4                              }
  26   3                              else
  27   3                                      receive[3]=1;
  28   3                              break;
  29   3                      }
  30   2                      else
  31   2                      {       
  32   3                              while(clk);
  33   3                              while(!clk);
  34   3              
  35   3                      }                       
  36   2              }
  37   1      }
  38          void delay_50us(unsigned int t)
  39          {
  40   1               unsigned char j;
  41   1               for(;t>0;t--)
  42   1               for(j=19;j>0;j--);
  43   1      }
  44          void send_8bit(unsigned char temp)
  45          {
  46   1              unsigned char i=0;
  47   1              for(i=0;i<8;i++)
  48   1              {
  49   2                      if((temp&0x80)==0x80) dat=1;
  50   2                      else dat=0;
  51   2                      delay_50us(1);
  52   2                      clk=1;
  53   2                      delay_50us(1);
  54   2                      if(i==7)
  55   2                              clk=1;
C51 COMPILER V8.05a   U2                                                                   03/11/2009 12:36:32 PAGE 2   

  56   2                      else
  57   2                              clk=0;
  58   2                      temp=temp<<1;
  59   2              }
  60   1              dat=1;
  61   1              IE0=0;
  62   1              
  63   1      
  64   1      }
  65          void INT0_stop(void) interrupt IE0_VECTOR using 1
  66          {
  67   1              EA=0; 
  68   1              read_8bit();
  69   1              EA=1;
  70   1              while(!dat);
  71   1              
  72   1      
  73   1      }
  74          void send(unsigned char cmd,data1,data2)
  75          {
  76   1              EX0=0;                          //       关闭接收中断
  77   1              clk=0;                          //   开启发送,引起接收方中断
  78   1              send_8bit(cmd); //       开头第一个字节为0x38,则在其后发送两个数据字节
  79   1              delay_50us(1);          //       开头不是0x38,则当独立字节接收
  80   1              clk=0;
  81   1              send_8bit(data1);
  82   1              delay_50us(1);
  83   1              clk=0;
  84   1              send_8bit(data2);
  85   1              delay_50us(1);
  86   1              EX0=1;                          //   开启接收中断       
  87   1      }
  88          void send_one(unsigned char one)
  89          {
  90   1              EX0=0;                          //       关闭接收中断
  91   1              clk=0;                          //   开启发送,引起接收方中断
  92   1              send_8bit(one); //       开头第一个字节为0x38,则在其后发送两个数据字节
  93   1              delay_50us(1);          //       开头不是0x38,则当独立字节接收
  94   1              EX0=1;                          //   开启接收中断       
  95   1      }
  96          void main(void)
  97          {
  98   1              
  99   1              EA=1;
 100   1              IT0=1;
 101   1              EX0=1;
 102   1              //send();
 103   1              while(1)
 104   1              {
 105   2                      if(receive[3]==1) P1=receive[0];
 106   2              }
 107   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    219    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      5       2
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
C51 COMPILER V8.05a   U2                                                                   03/11/2009 12:36:32 PAGE 3   

END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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