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

📄 main.lst

📁 485多机通信+lcd液晶显示
💻 LST
字号:
C51 COMPILER V7.50   MAIN                                                                  05/04/2009 16:50:02 PAGE 1   


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

line level    source

   1          /*************************************************************************************************
   2          * 文 件 名:485c.c
   3          * 功    能:485从机通信模块
   4          * 硬件条件: 1.CPU型号:ATMEL2051
   5          *            2.晶振:11.0592
   6          * 作    者:zwb
   7          * 日    期:2009年04月27号
   8          *************************************************************************************************/
   9          //-----------------------函数声明,变量定义--------------------------------------------------------
  10          #include <reg51.h>
  11          //#include <INTRINS.H>
  12          #include <lcd1602.h>
  13          #include <string.h>
  14          #define  unchar  unsigned char
  15          #define COUNT 10           // 定义发送缓冲区大小 
  16          unchar send_buffer[COUNT]={0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4a}; //定义发送缓冲区
  17          unchar COM_dzdata[2]={0x41,0x42};//定义从机地址和命令
  18          unchar receive_buffer[2];//定义接受缓冲区
  19          unchar  Dis_horse[3];
  20          unchar point=0;            //定义接收数据个数指示变量
  21          unchar FIFO;             //定义从机通信缓冲区1字节
  22          bit      flag,lab=0;
  23          sbit    L0 = P3^5;
  24          sbit    L1 = P3^7;
  25          //========================================================================================
  26          //函数名称:delay()
  27          //输入函数:无
  28          //输出函数:无
  29          //函数功能:延时子函数
  30          //=======================================================================================
  31          void delay(void)
  32          {
  33   1              unchar i=124;
  34   1              while(i--);
  35   1      }
  36          
  37          //--------------------------------------------------------------------------------------------------
  38          // 函数名称: UART_init()串口初始化函数
  39          // 函数功能: 在系统时钟为11.059MHZ时,设定串口波特率为9600bit/s
  40          //            串口接收中断允许,发送中断禁止
  41          //--------------------------------------------------------------------------------------------------
  42          void UART_init()
  43          {
  44   1                           //初始化串行口和波特率发生器 
  45   1              SCON =0xf0;          //选择串口工作方式3,打开接收允许
  46   1              TMOD =0x20;          //定时器1工作在方式2
  47   1              PCON = 0x80;         //波特率加倍
  48   1              TH1 =0xf4;           //实现波特率4800(系统时钟11.0592MHZ)
  49   1              TL1 =0xf4;
  50   1              TR1 =1;              //启动定时器T1
  51   1              ET1 =1; 
  52   1          EA = 1;
  53   1      }
  54          
  55          
C51 COMPILER V7.50   MAIN                                                                  05/04/2009 16:50:02 PAGE 2   

  56          //--------------------------------------------------------------------------------------------------
  57          // 函数名称: COM_send()串口发送函数
  58          // 函数功能: 把数据缓冲区的十位数据发送出去
  59          //--------------------------------------------------------------------------------------------------
  60          void COM_send(void)
  61          {       
  62   1              if(flag==1)//从机发送数据判断位
  63   1      
  64   1                      {
  65   2                      for(point=0;point<10;point++)      //连续发送十位数据
  66   2                  {
  67   3                                  SBUF=send_buffer[point];
  68   3                                      while(TI==0);
  69   3                              TI=0;
  70   3                              }       
  71   2                      flag=0;//发送完数据后从机重新处于多机通信状态(即只能接收地址)
  72   2                      lab=0;
  73   2                      SM2=1;
  74   2                      L1=1;
  75   2                      }
  76   1      }
  77          
  78          //==================================================================================
  79          //函数名称:Send_display()
  80          //输入变量:
  81          //输出变量:
  82          //函数功能:发送从机自加数列值给主机
  83          //===================================================================================
  84          void  Send_display(void)
  85          {
  86   1              for(point=0;point<3;point++)
  87   1              {
  88   2               SBUF=Dis_horse[point];
  89   2               while(TI==0);
  90   2               TI=0;
  91   2              }
  92   1      }
  93          //===================================================================
  94          //函数名称:Receive_COM ()
  95          //输入变量:无
  96          //输出变量:Receive_COM 接受主机发来的地址和命令,
  97          //函数功能:核对是否为本机地址和命令,并置SM2=0;允许从机接受数据
  98          //===================================================================
  99          void Receive_COM(void)
 100          {
 101   1              if((RI==1)&&(lab==0))
 102   1              {   
 103   2              RI=0;
 104   2              FIFO=SBUF;
 105   2              receive_buffer[0]=FIFO;
 106   2              lab=1;
 107   2      //      if(strcmp(receive_buffer,COM_dzdata)==0)//核对主机发来的地址是否为从机地址
 108   2      if(FIFO==0x41)
 109   2                      {
 110   3                              SM2=0;//是从机地址则允许从机接受数据  
 111   3                              lab=1;                  
 112   3                      }
 113   2              }
 114   1      if(SM2==0)
 115   1      {       
 116   2              L0=1;   
 117   2              if(RI==1)
C51 COMPILER V7.50   MAIN                                                                  05/04/2009 16:50:02 PAGE 3   

 118   2              {
 119   3                      FIFO=SBUF;
 120   3                      receive_buffer[1]=FIFO;
 121   3                      flag=1;
 122   3                      LCD_set_position(0x08);    //显示接受到得主机命令
 123   3                  LCD_prints(receive_buffer); 
 124   3              
 125   3          }   
 126   2              delay();
 127   2              COM_send();//正确则调用发送程序 
 128   2      }
 129   1      
 130   1              
 131   1      
 132   1      }
 133          
 134          void  delay_1s(void)
 135          {
 136   1              unchar j;
 137   1              for(j=0;j<255;j++)
 138   1              {delay();}
 139   1      
 140   1      }
 141          //--------------------------------------------------------------------------------------------------
 142          // 函数名称: 主函数
 143          // 函数功能: 调度个子函数,完成通信过程
 144          //--------------------------------------------------------------------------------------------------
 145           void main(void)
 146          {       
 147   1              unsigned int    i=0;
 148   1              L0=0;
 149   1              L1=0;
 150   1              flag=0;
 151   1              lab=0;
 152   1          UART_init();//初始化串口
 153   1              LCD_initial();
 154   1              DispStrPosi("RFID:",0,0);
 155   1              
 156   1       do
 157   1       {  
 158   2              Receive_COM();//接受命令和地址
 159   2      
 160   2                      Dis_horse[0]= i/100%10 + '0';
 161   2                      Dis_horse[1]= i/10%10 + '0';
 162   2                      Dis_horse[2] = i%10 + '0';
 163   2                      delay_1s();
 164   2                      i++;
 165   2                      if(i==999)
 166   2                      {i=0;}
 167   2                      Send_display();
 168   2                      LCD_set_yposition(0x06);
 169   2                      LCD_prints(Dis_horse);
 170   2                      
 171   2       }while(1);
 172   1      }
 173          
 174          
 175          
 176          
 177          
 178          
 179           
C51 COMPILER V7.50   MAIN                                                                  05/04/2009 16:50:02 PAGE 4   



MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    546    ----
   CONSTANT SIZE    =     12    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     19      12
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      2    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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