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

📄 uart0.lst

📁 ad准确采集
💻 LST
字号:
C51 COMPILER V7.06   UART0                                                                 01/20/2005 21:48:16 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE UART0
OBJECT MODULE PLACED IN UART0.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\c51.exe UART0.c DB OE

stmt level    source

   1          #include <main.H>
   2          #include <stdio.h>
   3          //#include <C8051F020.H>
   4          
   5          /*修改时钟!!!!*/
   6          /*帧错误和传输错误监测需要吗?查询方式?只是具有发送功能?*/
   7          void UART0_transmit (unsigned int *samples, unsigned int numSample) 
   8          {  
   9   1         volatile int i;
  10   1        // SFRPAGE=0x0F;      
  11   1        // WDTCN = 0xde;                       // disable watchdog timer
  12   1        // WDTCN = 0xad;
  13   1         //Timer1_Init();
  14   1         //SYSCLK_Init ();               
  15   1      //   PORT_Init ();                       // initialize crossbar and GPIO
  16   1         UART0_Init ();                      // initialize UART0
  17   1         //Timer2_Init (65536-(SYSCLK/SAMPLE_RATE/32/2));  //可选择定时器1或2作为波特率发生器
  18   1        // Timer1_Init();
  19   1       //???????????  ES0 =1;                             // sample rat//允许RI0或TI0产生中断。中断号为4
  20   1         //EA  =1;                             // Enable global interrupts
  21   1       //ES0 =1;                             // sample rat//??RI0?TI0????
  22   1       //  EA  =1;                             // Enable global interrupts
  23   1         EA=0;
  24   1         LED = 0;
  25   1        while (1) 
  26   1         {                                            // disable interrupts
  27   2                      SFRPAGE=0x0;
  28   2                      for(i=0;i<numSample;i++)
  29   2                              {
  30   3                                      TI0=0;                     
  31   3                              SBUF0=(samples[i]>>8)&0x0F;
  32   3                                      while(TI0==0);
  33   3                                      TI0=0;
  34   3                                      SBUF0=samples[i]&0xFF;
  35   3                                      while(TI0==0);
  36   3                                      TI0=0;
  37   3                                      LED=~LED;
  38   3                                      //break;
  39   3                              }
  40   2             break;
  41   2              }
  42   1        TR1=0;//停止定时器1
  43   1        SCON0 &=0xEF; //禁止接收
  44   1        TI0=0;
  45   1        RI0=0;
  46   1        ES0=0;
  47   1        EA=0;               
  48   1      
  49   1      }
  50          
  51          //-----------------------------------------------------------------------------
  52          // SYSCLK_Init
  53          //-----------------------------------------------------------------------------
  54          //
  55          // This routine initializes the system clock to use an 22.1184MHz crystal
C51 COMPILER V7.06   UART0                                                                 01/20/2005 21:48:16 PAGE 2   

  56          // as its clock source.
  57          //
  58          /*void SYSCLK_Init (void)
  59          {
  60             int i;                              // delay counter
  61          
  62             OSCXCN = 0x67;                      // start external oscillator with
  63                                                 // 22.1184MHz crystal
  64          
  65             for (i=0; i < 256; i++) ;           // XTLVLD blanking interval (>1ms)
  66          
  67             while (!(OSCXCN & 0x80)) ;          // Wait for crystal osc. to settle
  68          
  69             OSCICN = 0x88;                      // select external oscillator as SYSCLK
  70                                                 // source and enable missing clock
  71                                                 // detector
  72          }*/
  73          
  74          /*//-----------------------------------------------------------------------------
  75          // PORT_Init
  76          //-----------------------------------------------------------------------------
  77          //
  78          // Configure the Crossbar and GPIO ports
  79          //
  80          void PORT_UARTO_Init (void)
  81          {
  82             XBR0    = 0x04;                     // Enable UART0
  83             XBR1    = 0x00;
  84             XBR2    = 0x40;                     // Enable crossbar and weak pull-ups
  85             P0MDOUT |= 0x01;                    // enable TX0 as a push-pull output
  86             P1MDOUT |= 0x40;                    // enable P1.6 (LED) as push-pull output
  87          }
  88          
  89          //-----------------------------------------------------------------------------
  90          // UART0_Init
  91          //-----------------------------------------------------------------------------
  92          //
  93          // Configure the UART0 using Timer1, for <baudrate> and 8-N-1.
  94          //
  95          void UART0_Init (void)
  96          {
  97             SCON0   = 0x50;                     // SCON0: mode 1, 8-bit UART, enable RX
  98             
  99          }
 100          
 101          //----------------------------------------------------------------------------
 102          void Timer1_UARTO_Init(void)
 103          {
 104             TMOD    = 0x20;                     // TMOD: timer 1, mode 2, 8-bit reload
 105             TH1    = -(SYSCLK_UART0/BAUDRATE/16);     // set Timer1 reload value for baudrate
 106             //TH1    = 70;
 107             //TL1    = 70; 
 108            // ET1    = 1;
 109             TR1    = 1;                         // start Timer1
 110             CKCON |= 0x10;                      // Timer1 uses SYSCLK as time base
 111             PCON  |= 0x80;                      // SMOD00 = 1
 112          }                 */
 113          
 114          void PORT_Init (void)
 115          {
 116   1         SFRPAGE=0x0F;
 117   1         XBR0 = 0x05; //UART0,SMbus0接到端口引脚
C51 COMPILER V7.06   UART0                                                                 01/20/2005 21:48:16 PAGE 3   

 118   1         XBR1 = 0x04; //外部中断0接到端口引脚(P0.4)
 119   1         //XBR0 = 0x04; //使能UART0
 120   1         //XBR1 = 0x00;
 121   1         XBR2 = 0x40; // 使能交叉开关和弱上拉
 122   1         //P0MDOUT |=0x0D;
 123   1         P0MDOUT |=0x01;
 124   1      //   P0MDOUT |= 0x01; // ??TX0?????
 125   1         P1MDOUT |= 0x40; // ??P1.6(LED)?????
 126   1      }
 127          
 128          //-----------------------------------------------------------------------------
 129          // UART0初始化
 130          //-----------------------------------------------------------------------------
 131          //
 132          // 配置UART0 使用定时器1为波特率发生器
 133          //
 134          void UART0_Init (void)
 135          {
 136   1      SFRPAGE=0x0;
 137   1      SCON0 = 0x50; // SCON0: 模式1(异步方式,数据位8,一个起始位和一个停止位), 8位UART,可变波特率。使能RX
 138   1       
 139   1      
 140   1      /*修改 */
 141   1      //TL1 = -(SYSCLK_AD/BAUDRATE/16);
 142   1      
 143   1      TH1 = -(SYSCLK_AD/BAUDRATE/16); // 根据波特率的值设定定时器1重装值
 144   1      //TH1 = -(24500000/BAUDRATE/16/8);
 145   1      
 146   1      CKCON |= 0x10; // 定时器1使用系统时钟作为时基(T1M=1)
 147   1      //PCON  |= 0x80; // SMOD00 = 1
 148   1      
 149   1      SSTA0 |=0x10;//SMOD00 = 1,禁止系统时钟/2
 150   1      TL1=TH1;
 151   1      //TR1 = 1; // 启动定时器1
 152   1      TMOD = 0x20; // TMOD: 定时器1, 模式2, 8位重装 
 153   1      TR1 = 1; // 启动定时器1
 154   1      TI0 = 1; // 表示TX0就绪
 155   1      }
 156          //void UART0_ISR(void) interrupt 4
 157          //{
 158                  //for(i=0;i<=numSample;i++)
 159                  //              {
 160          //                              SFRPAGE=0x0;
 161                                          //TI0=0;                     
 162                                  //SBUF0=numSample;
 163                                          //SBUF0=samples[i];
 164                                          //while(TI0==0);
 165                                          //TI0=0;
 166                                  //SBUF0=samples[i]&0xFF;
 167                                          //SBUF0=0xFF;
 168                                          //while(TI0==0);
 169          //                              TI0=0;
 170                  //                      SBUF0=(samples[i]>>8)&0x0F;
 171                  //                      while(TI0==0);
 172                  //                      TI0=0;
 173          //                              LED=~LED;
 174                  //              }
 175          //}


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    168    ----
C51 COMPILER V7.06   UART0                                                                 01/20/2005 21:48:16 PAGE 4   

   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----       7
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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