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

📄 zhenggeshi.lst

📁 数据包(帧格式)的PC机和单片机串口通信 C51程序+proteus仿真
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.08   ZHENGGESHI                                                            04/23/2008 10:04:52 PAGE 1   


C51 COMPILER V8.08, COMPILATION OF MODULE ZHENGGESHI
OBJECT MODULE PLACED IN ZHENGGESHI.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ZHENGGESHI.C ROM(SMALL) BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include<reg52.h>              
   2          #include<intrins.h>
   3          #include<stdio.h>
   4          #include<DIS_LEDNUM_595.c>
   5          
   6          
   7          
   8          #define F_ADDR P0                                
   9          sbit PButton = P3^2;                     
  10          
  11          #define uchar unsigned char      
  12          #define uint unsigned int       
  13          
  14          #define F_ST 0x02               
  15          #define F_END 0x03               
  16          
  17          #define F_Receive_OK 0x05       
  18          #define F_Receive_Error 0x06    
  19          #define F_Overtime 0x09         
  20          
  21          
  22          
  23          
  24          uchar UART_Receive;              
  25          bit ST_Flag;                                     
  26          bit ADDR_Flag;                                  
  27          bit LEN_Flag;                           
  28          bit Receive_OK_Flag;                    
  29          bit Receive_Error_Flag;         
  30          bit Receive_Overtime_Flag;      
  31          bit Button_Flag;                                
  32          bit Send_Flag;                              
  33          bit Send_Overtime_Flag;            
  34          uchar Temer_Num;                
  35          
  36          
  37          uchar F_LEN;                    
  38          uchar ASCII_Receive_Buf[20];     
  39          uchar ASCII_Send_Buf[20];      
  40          uchar HEX_Send_Buf[20];        
  41          uchar LEN_Data_Buf;                             
  42          uchar UART_Data_Buf;                     
  43          
  44          void Timer_init(void);                  
  45          void UART_init(void);                      
  46          void Delay_1ms(uint Nms);                
  47          void Send_Response(uchar Frame);   
  48          void Send_Array(void);             
  49          uchar ASCII_To_Hex(uchar bChar);
  50          uchar Hex_To_ASCII(uchar bHex);
  51          void Send_Hex_To_ASCII(void);     
  52          bit CheckSum(void);               
  53          void Get_CheckSum(void);          
  54          
  55          
C51 COMPILER V8.08   ZHENGGESHI                                                            04/23/2008 10:04:52 PAGE 2   

  56          
  57          
  58          
  59          void int0() interrupt 0
  60          {
  61   1        uchar i,j;
  62   1        EA=0;
  63   1        PButton=1;
  64   1        for(j=0;j<10;j++)                     
  65   1        {
  66   2          for(i=0;i<250;i++)
  67   2          {
  68   3            _nop_();
  69   3            _nop_();
  70   3            _nop_();
  71   3          }
  72   2        }
  73   1        if(!PButton)
  74   1        {
  75   2              Button_Flag=1;
  76   2        }
  77   1      
  78   1        EA=1;
  79   1      }
  80          
  81          
  82          
  83          void timer0(void) interrupt 1
  84          {
  85   1                                                  
  86   1        TH0=0x15;                                                      
  87   1        TL0=0xa0;
  88   1        if(ADDR_Flag)
  89   1        {                                                                      
  90   2              TR0=0;                                                  
  91   2          Receive_Overtime_Flag=1;             
  92   2          ST_Flag=0;                              
  93   2          ADDR_Flag=0;                               
  94   2          LEN_Flag=0;
  95   2        }
  96   1        if(Send_Flag)                                 
  97   1        {
  98   2              if(Temer_Num>10)                        
  99   2              {  
 100   3                Temer_Num=0;
 101   3                Send_Overtime_Flag=1;
 102   3              }
 103   2              else                                                    
 104   2              {                                                       
 105   3                Temer_Num++;                          
 106   3              }
 107   2        }
 108   1      
 109   1      }
 110          
 111          
 112          void UART_Isr() interrupt 4
 113          {
 114   1        ES=0;                                                      
 115   1        if(RI)
 116   1          { 
 117   2                RI=0;
C51 COMPILER V8.08   ZHENGGESHI                                                            04/23/2008 10:04:52 PAGE 3   

 118   2            UART_Data_Buf=SBUF;
 119   2                if(ST_Flag)                                   
 120   2                {
 121   3                      if(ADDR_Flag)                                   
 122   3                      {
 123   4                        if(LEN_Flag)                          
 124   4                        {                                                     
 125   5                          if(F_LEN)                           
 126   5                              {
 127   6                                F_LEN--;
 128   6                            ASCII_Receive_Buf[LEN_Data_Buf - F_LEN]=UART_Data_Buf;
 129   6                              }                                                       
 130   5                              else                                             
 131   5                              {
 132   6                                if(UART_Data_Buf==F_END)       
 133   6                                {
 134   7                                       Receive_OK_Flag=1;     
 135   7                                       TR0=0;                                  
 136   7                                       ST_Flag=0;                              
 137   7                                       ADDR_Flag=0;                    
 138   7                                       LEN_Flag=0;
 139   7                                }
 140   6                                else
 141   6                                {
 142   7                                       Receive_Error_Flag=1;  
 143   7                                       ST_Flag=0;                             
 144   7                                       ADDR_Flag=0;                   
 145   7                                       LEN_Flag=0;
 146   7                                       TR0=0;                                  
 147   7                                }
 148   6                              }  
 149   5                        }
 150   4                        else
 151   4                        { 
 152   5                          F_LEN=UART_Data_Buf;                        
 153   5                          ASCII_Receive_Buf[0]=F_LEN;         
 154   5                      LEN_Data_Buf=F_LEN;                             
 155   5                          LEN_Flag=1;                                          
 156   5                        }
 157   4                      }
 158   3                      else
 159   3                      {
 160   4                    if(UART_Data_Buf==F_ADDR) 
 161   4                        {
 162   5                              ADDR_Flag=1;
 163   5                          TH0=0x15;
 164   5                  TL0=0xa0;
 165   5                              TR0=1;                      
 166   5                        }
 167   4                        else
 168   4                          ST_Flag=0;                                  
 169   4                      }
 170   3      
 171   3      
 172   3                }
 173   2                else
 174   2                {
 175   3                      if(UART_Data_Buf==F_ST)
 176   3                        ST_Flag=1;                            
 177   3                }
 178   2      
 179   2      
C51 COMPILER V8.08   ZHENGGESHI                                                            04/23/2008 10:04:52 PAGE 4   

 180   2          }
 181   1        ES=1;
 182   1      }
 183          
 184          
 185          
 186          
 187          
 188          
 189          void UART_Send(uchar Send_Value)
 190          {  
 191   1        TI=0;
 192   1        SBUF=Send_Value;
 193   1        while(TI==1);
 194   1        TI=0;  
 195   1      }
 196          
 197          
 198          void main()
 199          {
 200   1        uchar i=0;
 201   1        F_ADDR=0x00;
 202   1        IT0=1;                         
 203   1        EX0=1;                         
 204   1        
 205   1        Timer_init();
 206   1        UART_init();
 207   1        EA=1;
 208   1      
 209   1        Dis_LedNum(1);
 210   1        Dis_LedNum(0);
 211   1      
 212   1      
 213   1        while(1)
 214   1        {
 215   2              if(Button_Flag)                              
 216   2              {
 217   3                Send_Flag=1;
 218   3            TH0=0x15;
 219   3            TL0=0xa0;
 220   3                TR0=1;                                         
 221   3                Temer_Num=0;                               
 222   3      
 223   3                                                                               
 224   3                HEX_Send_Buf[0]=0x01;         
 225   3                HEX_Send_Buf[1]=0x45;                  
 226   3                Send_Hex_To_ASCII();                   
 227   3                Send_Array();                         
 228   3      
 229   3      
 230   3                Button_Flag=0;                                  

⌨️ 快捷键说明

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