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

📄 uart.lst

📁 STC12c5a60s2双串口通信
💻 LST
字号:
C51 COMPILER V8.02   UART                                                                  01/05/2011 19:25:34 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE UART
OBJECT MODULE PLACED IN Uart.OBJ
COMPILER INVOKED BY: e:\Keil\C51\BIN\C51.EXE Uart.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include  "STC12C5A60S2.H"
   2          #include  "Uart.h"
   3          //========================================
   4          #define   RELOAD       0xFA
   5          #define   RELOAD_TWO   0xfa
   6          #define   BRTx12_enable() AUXR |= 0x04   //BRT 独立波特率发生器的溢出率快 12 倍
   7          #define   BRT_start()     AUXR |= 0x10   //启动独立波特率发生器 BRT 计数。
   8          //=========================================
   9          bit  Uart_One_Flag = 0 ;
  10          bit  Uart_Two_Flag = 0 ;
  11          U8   c =  0   ;
  12          U8   d =  0   ;
  13          extern U8 xdata tab[35]  ;
  14          extern U8 xdata tab2[35] ;
  15          //=========================================
  16          //=======baud 115200=======================
  17          void Uart_One_Init(){ 
  18   1              TMOD =  0x20   ;
  19   1              SCON =  0x50   ;
  20   1      //      PCON =  PCON | 0x80 ;    //SMOD=1;
  21   1              TH1  =  RELOAD ;
  22   1              TL1  =  RELOAD ;
  23   1              TR1=    1      ;
  24   1              EA   =  1      ;
  25   1              ES   =  1      ;                
  26   1              AUXR|=0X40;                             //T1*12;
  27   1      }                                                                
  28          //========================================
  29          void Uart_One_Send(U8 k){
  30   1              ES  =  0    ;
  31   1              TI  =  0    ;
  32   1              if(k=='\n'){
  33   2              SBUF='\r';
  34   2          while(TI!=1);
  35   2          TI  =  0  ;
  36   2              SBUF= '\n' ;
  37   2          while(TI!=1);
  38   2          TI  =  0 ;
  39   2              //----------
  40   2              }else{     
  41   2          SBUF=k;
  42   2          while(TI!=1);
  43   2          TI  =  0 ;
  44   2               }      
  45   1              ES  =  1    ;
  46   1      }
  47          //=========================================
  48          //=========baud 9600=======================
  49          void Uart_Two_Init(){
  50   1              S2CON=  0x50   ;
  51   1              BRT  =  RELOAD_TWO ;
  52   1              AUXR =  AUXR | 0X10   ;          
  53   1      //      BRTx12_enable();
  54   1              AUXR1=  AUXR1| 0x10   ;  //S2_P4
  55   1              IE2  =  1      ;
C51 COMPILER V8.02   UART                                                                  01/05/2011 19:25:34 PAGE 2   

  56   1              EA   =  1      ;
  57   1      }
  58          
  59          //=========================================
  60          void Uart_Two_Send(U8 k){
  61   1              ES  =  0    ;
  62   1              if(k=='\n'){
  63   2              S2BUF='\r';
  64   2          while((S2CON&0x02)!=0x02);
  65   2              S2CON &= ~0x02;
  66   2              //----------
  67   2              S2BUF   =  '\n' ;
  68   2          while((S2CON&0x02)!=0x02);
  69   2          S2CON &= ~0x02;
  70   2        }else{  
  71   2          S2BUF   =   k ;
  72   2          while((S2CON&0x02)!=0x02);
  73   2          S2CON &= ~0x02;
  74   2              ES  =  1    ;
  75   2              }
  76   1      }
  77          //=============================================
  78          void UART_One_Printf(U8 *p){
  79   1         while(* p!='\0') Uart_One_Send(*p++);
  80   1      }
  81          //============================================
  82          void UART_Two_Printf(U8 *p){
  83   1         while(* p!='\0') Uart_Two_Send(*p++);
  84   1      }
  85          //===========================================
  86          void Uart_One_Receive() interrupt 4{
  87   1              U8  k =  0   ;
  88   1              if(RI==1){
  89   2              RI   =  0   ;
  90   2              k    =  SBUF;
  91   2              if(k=='\b'){
  92   3                       if(c>0){
  93   4                         c=c-1;
  94   4                         //Uart_One_Send('\b');
  95   4                         //Uart_One_Send(' ');
  96   4                         //Uart_One_Send('\b');
  97   4                       }
  98   3                 }else if(k=='\r'){
  99   3                         tab[c]='\0';
 100   3                         Uart_One_Send('\n');
 101   3                         Uart_One_Flag=1;
 102   3                         
 103   3                 }else if(k=='\n'){
 104   3      
 105   3                 }else{
 106   3                         tab[c++]=k;
 107   3                         Uart_One_Send(k);
 108   3              }
 109   2      }
 110   1      }
 111          //========================================
 112          void Uart_Two_Receive() interrupt 8{
 113   1              U8 a ;
 114   1              U8   k =  0   ;
 115   1              a  =     S2CON ;
 116   1              a  =  a & 0x01;
 117   1              if(a==1){
C51 COMPILER V8.02   UART                                                                  01/05/2011 19:25:34 PAGE 3   

 118   2              k  = S2BUF   ;
 119   2              S2CON = S2CON & 0xfe;
 120   2              if(k=='\b'){
 121   3                       if(d>0){
 122   4                         d=d-1;
 123   4                         Uart_Two_Send('\b');
 124   4                         Uart_Two_Send(' ');
 125   4                         Uart_Two_Send('\b');
 126   4                       }
 127   3                 }else if(k=='\r'){
 128   3                         tab2[d]='\0';
 129   3                         Uart_Two_Send('\n');
 130   3                         Uart_Two_Flag=1;
 131   3                         
 132   3                 }else if(k=='\n'){
 133   3      
 134   3                 }else{
 135   3                         tab2[d++]=k;
 136   3                         Uart_Two_Send(k);
 137   3              }
 138   2      }
 139   1      }


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