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

📄 uart1.lst

📁 C8051F020双串口使用程序
💻 LST
字号:
C51 COMPILER V7.10   UART1                                                                 02/27/2009 10:50:57 PAGE 1   


C51 COMPILER V7.10, COMPILATION OF MODULE UART1
OBJECT MODULE PLACED IN UART1.OBJ
COMPILER INVOKED BY: D:\silicon labs\IDEfiles\C51\BIN\C51.exe UART1.C DB OE

line level    source

   1          //-----------------------------------------------------------------------------
   2          // WUART0.c
   3          //-----------------------------------------------------------------------------
   4          //
   5          // 作者: LILU
   6          // DATE: 2008年12月22号
   7          //
   8          // Target: C8051F02x
   9          // Tool chain: KEIL C51
  10          //
  11          // 描述:
  12          //    
  13          //
  14          //-----------------------------------------------------------------------------
  15          // 包含文件
  16          //-----------------------------------------------------------------------------
  17          
  18          #include <c8051f020.h>              // SFR声明
  19          #include <intrins.h>
  20          
  21          //-----------------------------------------------------------------------------
  22          // C8051F02X的16位SFR定义
  23          //-----------------------------------------------------------------------------
  24          
  25          
  26          //-----------------------------------------------------------------------------
  27          // 全局常量
  28          //-----------------------------------------------------------------------------
  29          
  30          #define SYSCLK          22118400          // SYSCLK frequency in Hz
  31          #define BAUDRATE        9600              // Baud rate of UART in bps
  32          
  33          bit sendbit0;
  34          bit sendbit1;
  35          unsigned char tempr0,tempr1,tempt0,tempt1;
  36          
  37          //-----------------------------------------------------------------------------
  38          // 函数原型
  39          //-----------------------------------------------------------------------------
  40          
  41          void main (void);
  42          void SYSCLK_Init (void);              
  43          void PORT_Init (void);
  44          void UART0_Init (void);
  45          void UART0_ISR (void);
  46          void UART1_Init (void);
  47          void UART1_ISR (void);
  48          void delay (unsigned int x);//unsigned int m
  49          //-----------------------------------------------------------------------------
  50          // 主程序
  51          //-----------------------------------------------------------------------------
  52          
  53          void main (void) 
  54          { 
  55   1          char bdata i;
C51 COMPILER V7.10   UART1                                                                 02/27/2009 10:50:57 PAGE 2   

  56   1          WDTCN = 0xde;                    // 禁止看门狗定时器
  57   1          WDTCN = 0xad;
  58   1              
  59   1          SYSCLK_Init ();
  60   1              PORT_Init ();
  61   1          UART0_Init ();
  62   1              UART1_Init ();
  63   1          EA = 1;                          // 允许全局变量
  64   1          ES0 = 1;                         // UART0 中断允许
  65   1              EIE2 |= 0x40;                     // UART1 中断允许
  66   1      
  67   1              tempt0 = 0x03;
  68   1              tempt1 = 0x55;
  69   1      
  70   1              sendbit0 = 0;
  71   1              sendbit1 = 0;
  72   1      
  73   1      
  74   1          while(1)
  75   1              { 
  76   2                if(sendbit0)
  77   2                {
  78   3                
  79   3                  SBUF0 = tempt0;
  80   3                      
  81   3                }
  82   2                if(sendbit1)
  83   2                {
  84   3                  
  85   3              SBUF1 = tempt1;
  86   3                       
  87   3                }
  88   2              }
  89   1              
  90   1              _nop_();
  91   1      
  92   1      }
*** WARNING C280 IN LINE 55 OF UART1.C: 'i': unreferenced local variable
  93          //-----------------------------------------------------------------------------
  94          // 初始化程序
  95          //-----------------------------------------------------------------------------
  96          
  97          //-----------------------------------------------------------------------------
  98          // 系统时钟初始化
  99          //-----------------------------------------------------------------------------
 100          //
 101          // 该程序初始化系统时钟,使用22.1184MHz的晶振作为时钟源
 102          //
 103          void SYSCLK_Init (void)
 104          {
 105   1         int i;                           // 延时计数器
 106   1      
 107   1         OSCXCN = 0x67;                   // 启动外部振荡器使用
 108   1                                          // 22.1184MHz 的晶体
 109   1      
 110   1         for (i=0; i < 256; i++) ;        // 等待振荡器起振
 111   1       
 112   1         while (!(OSCXCN & 0x80)) ;       // 等待晶体振荡器稳定
 113   1      
 114   1         OSCICN = 0x88;                   // 选择外部振荡器作为系统时钟源并允许时钟丢失检测器
 115   1                                          
 116   1      
C51 COMPILER V7.10   UART1                                                                 02/27/2009 10:50:57 PAGE 3   

 117   1      }
 118          
 119          
 120          
 121          //-----------------------------------------------------------------------------
 122          // IO口初始化
 123          //-----------------------------------------------------------------------------
 124          //
 125          // 配置交叉开关和GPIO端口
 126          //
 127          void PORT_Init (void)
 128          {
 129   1         XBR0     = 0x07;                 // 允许UART0
 130   1         XBR1     = 0x00;
 131   1         XBR2     = 0x44;                 // 允许交叉开关和弱上拉,允许UART1,P1.0(TX1),P1.1(RX1)
 132   1         P0MDOUT |= 0x01;                 // 使能TX0作为推拉输出
 133   1         P1MDOUT |= 0x01;                 // 使能TX1作为推拉输出
 134   1      }
 135          //-----------------------------------------------------------------------------
 136          // UART0_Init(串口通信扩展用)
 137          //-----------------------------------------------------------------------------
 138          //
 139          // 配置UART0使用Timer1, 波特率为<baudrate>,桢格式为8-N-1.
 140          //
 141          void UART0_Init (void)
 142          {
 143   1         SCON0   = 0x50;                  // SCON0: mode 1, 8-bit UART, enable RX
 144   1         TMOD    = 0x20;                  // TMOD: timer 1, mode 2, 8-bit reload
 145   1         TH1    = 244;  // set Timer1 reload value for baudrate:-(SYSCLK/BAUDRATE/16)
 146   1         TL1    = TH1;
 147   1         TR1    = 1;                      // start Timer1
 148   1      //   CKCON |= 0x10;                   // Timer1 uses SYSCLK as time base
 149   1         PCON  |= 0x90;                   // SMOD0 = 1,SMOD1 = 1
 150   1      //   TI0 = 1;                      // Indicate TX0 ready
 151   1      }
 152          
 153          //-----------------------------------------------------------------------------
 154          // UART1_Init(串口通信扩展用)
 155          //-----------------------------------------------------------------------------
 156          //
 157          // 配置UART1使用Timer4, 波特率为<baudrate>,桢格式为8-N-1.
 158          //
 159          void UART1_Init (void)
 160          {
 161   1         
 162   1      //   RCAP4L = 0xB8;                  //set value for baudrater:-(65536-SYSCLK/BAUDRATE)/32,(=1976) 
 163   1      //   RCAP4H = 0x07;
 164   1      //   TL4 = 0xB8;
 165   1      //   TH4 = 0x07;
 166   1      //   T4CON = 0x34;                   //T4CON: timer4, mode 3,UART1 tx/rx rate;Indicate TR4 ready
 167   1         SCON1 = 0x50;                  // SCON1: mode 1, 8-bit UART, enable RX
 168   1      }
 169          
 170          
 171          
 172          //-----------------------------------------------------------------------------
 173          // UART0_ISR(串口中断0子程序)
 174          //-----------------------------------------------------------------------------
 175          //
 176          void UART0_ISR (void) interrupt 4
 177          {
 178   1          if(RI0)// 接收中断
C51 COMPILER V7.10   UART1                                                                 02/27/2009 10:50:57 PAGE 4   

 179   1              {
 180   2            RI0 = 0;// 清接收标志位
 181   2            tempr0 = SBUF0;
 182   2                                
 183   2          }
 184   1      }
 185          
 186          
 187          //-----------------------------------------------------------------------------
 188          // UART1_ISR(串口中断1子程序)
 189          //-----------------------------------------------------------------------------
 190          //
 191          void UART1_ISR (void) interrupt 20
 192          {
 193   1          if(SCON1 == 0x55)// 接收中断
 194   1              {
 195   2            SCON1 = 0x50;// 清接收志位
 196   2            tempr1 = SBUF1; 
 197   2                tempt1 = tempr1;
 198   2                sendbit1 = 1;
 199   2      
 200   2          }
 201   1      }
 202          
 203          
 204          void delay(unsigned int x)
 205          {
 206   1              int i;
 207   1              for(i=0;i<=x;i++);
 208   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    167    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      5    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      2    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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