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

📄 usart.lst

📁 atmelsam7s64twi完美底层驱动
💻 LST
📖 第 1 页 / 共 3 页
字号:
ARM COMPILER V2.53,  usart                                                                 19/07/06  08:38:09  PAGE 1   


ARM COMPILER V2.53, COMPILATION OF MODULE usart
OBJECT MODULE PLACED IN .\out\usart.obj
COMPILER INVOKED BY: C:\Keil\ARM\BIN\CA.exe usart.c THUMB BROWSE DEBUG PRINT(.\OUT\USART.LST) TABS(4) OBJECT(.\out\usart
                    -.obj) 

stmt  level    source

    1          #include "usart.h"
    2          
    3          /************************************************************************
    4          函数功能:   串口0初始化函数(非中断模式)
    5          入口参数:   
    6          出口参数:   
    7          ************************************************************************/
    8          void uartinit(void)
    9          {
   10   1          *AT91C_PMC_PCER|=0x00000040;        //PMC外设时钟使能
   11   1          *AT91C_PIOA_PDR|=0x00000060;        //Disable I/O,PA5=RXD0,PA6=TXD0
   12   1          *AT91C_PIOA_ASR|=0x00000060;        //PIO分配成UART
   13   1          *AT91C_US0_CR=0XAC;                 //RESET UART
   14   1          *AT91C_US0_MR=0X8C0;                //8bit,No,1Bit Stop
   15   1          *AT91C_US0_IDR=0XF3FFF;             //Disable UART Interrupt
   16   1          //*AT91C_US0_BRGR=26;                   //BARD RATE:38400(CD=30)
   17   1          *AT91C_US0_BRGR=30;
   18   1          *AT91C_US0_CR=0X50;                 //SET UART
   19   1      }
   20          
   21          /************************************************************************
   22          函数功能:   串口1初始化函数(非中断模式)
   23          入口参数:   
   24          出口参数:   
   25          波特率=9600
   26          ************************************************************************/
   27          void Usart1_Init(void)
   28          {
   29   1          *AT91C_PMC_PCER=(unsigned int)1<<AT91C_ID_US1;      //PMC外设时钟使能
   30   1          *AT91C_PIOA_PDR=AT91C_PA21_RXD1 | AT91C_PA22_TXD1;      //Disable I/O,PA5=RXD0,PA6=TXD0
   31   1          *AT91C_PIOA_ASR=AT91C_PA21_RXD1 | AT91C_PA22_TXD1;      //PIO分配成UART
   32   1          *AT91C_US1_CR=0XAC;                 //RESET UART
   33   1          *AT91C_US1_MR=0X8C0;                //8bit,No,1Bit Stop
   34   1          *AT91C_US1_IDR=0XF3FFF;             //Disable UART Interrupt
   35   1          //在MCK=18.432M时,波特率(MCK/16)/CD=9600                    
   36   1          *AT91C_US1_BRGR=120;
   37   1          *AT91C_US1_CR=0X50;                 //SET UART
   38   1      }
   39          /************************************************************************
   40          函数功能:   串口0接收中断服务函数
   41          入口参数:   
   42          出口参数:   
   43          ************************************************************************/
   44          void Uart0ISR(void) __irq
   45          {
   46   1          unsigned int s=0;
   47   1          unsigned char ch=0;
   48   1          static unsigned char bI=0;
   49   1      
   50   1          s = AT91C_BASE_US0->US_CSR;
   51   1      
   52   1          if(s&0x01)    // RXRDY
   53   1          {
   54   2              ch = AT91C_BASE_US0->US_RHR;
   55   2              g_bpData[bI++] = AT91C_BASE_US0->US_RHR;
   56   2              if (bI==20)
   57   2              {
   58   3                  bI = 0;
ARM COMPILER V2.53,  usart                                                                 19/07/06  08:38:09  PAGE 2   

   59   3              }
   60   2          }
   61   1          /*
   62   1          if(s&0x02)    // TXRDY
   63   1          {
   64   1              ;
   65   1          }*/
   66   1          AT91C_BASE_AIC->AIC_EOICR = 1;//End of Interrupt
   67   1      }
   68          /************************************************************************
   69          函数功能:   串口0初始化函数(中断模式)
   70          入口参数:   
   71          出口参数:   
   72          ************************************************************************/
   73          void uart0init(void)
   74          {
   75   1          *AT91C_PMC_PCER|=0x00000040;        //PMC外设时钟使能
   76   1          *AT91C_PIOA_PDR|=0x00000060;        //Disable I/O,PA5=RXD0,PA6=TXD0
   77   1          *AT91C_PIOA_ASR|=0x00000060;        //PIO分配成UART
   78   1          *AT91C_US0_CR=0XAC;                 //RESET UART
   79   1          *AT91C_US0_MR=0X8C0;                //8bit,No,1Bit Stop
   80   1          *AT91C_US0_IDR=0XF3FFF;             //Disable UART Interrupt
   81   1          //*AT91C_US0_BRGR=26;                   //BARD RATE:38400(CD=30)
   82   1          *AT91C_US0_BRGR=30;
   83   1          *AT91C_US0_CR=0X50;                 //SET UART
   84   1          /************************/
   85   1          AT91C_BASE_AIC->AIC_SMR[AT91C_ID_US0] = AT91C_AIC_SRCTYPE_INT_LEVEL_SENSITIVE | 1;
   86   1          AT91C_BASE_AIC->AIC_SVR[AT91C_ID_US0]=(unsigned int) Uart0ISR;//赋中断服务函数指针  
   87   1          AT91C_BASE_US0->US_IDR=0xF3FFF;              // disable all interrupts
   88   1          AT91C_BASE_US0->US_IER=0x01;//允许接收中断
   89   1          AT91C_BASE_AIC->AIC_IECR = (unsigned int)1<<AT91C_ID_US0; 
   90   1          /************************/
   91   1      }
   92          unsigned char putcharme (unsigned char ch)
   93          {                                       //Write Character to Serial Port
   94   1          if (ch == '\n')  
   95   1          {                            // Check for CR
   96   2              while (!((*AT91C_US0_CSR) & AT91C_US_TXRDY)); // Wait for Empty Tx Buffer
   97   2              *AT91C_US0_THR = '\r';                      // Output CR
   98   2          }
   99   1          while (!((*AT91C_US0_CSR) & AT91C_US_TXRDY));   // Wait for Empty Tx Buffer
  100   1          return (*AT91C_US0_THR = ch);                 // Transmit Character
  101   1      }
  102          
  103          
  104          void helloworld(void)
  105          {
  106   1          unsigned char hello[]={'h','e','l','l','o',' ','w','o','r','l','d','!','\n',};
  107   1          unsigned char i;
  108   1          for(i=0;i<13;i++)
  109   1          {
  110   2              putcharme(hello[i]);
  111   2          }
  112   1      }
  113          
  114          void USART0_send_string(unsigned char *bpSendData,unsigned int length)
  115          {
  116   1          while(length--)
  117   1          {
  118   2              putcharme(*(bpSendData++));
  119   2          }
  120   1          putcharme(0x0a);
  121   1      }
  122          void Receivechar(void)
  123          {
  124   1          if ((*AT91C_US0_CSR) & AT91C_US_RXRDY)
ARM COMPILER V2.53,  usart                                                                 19/07/06  08:38:09  PAGE 3   

  125   1          {
  126   2              bpRBuff[g_bRBuffpiont] = *AT91C_US0_RHR;
  127   2              g_bRBuffpiont++;
  128   2          }
  129   1      }
  130          unsigned char Usart1_putchar (unsigned char ch)
  131          {                                       //Write Character to Serial Port
  132   1          if (ch == '\n')  
  133   1          {                            // Check for CR
  134   2              while (!((*AT91C_US1_CSR) & AT91C_US_TXRDY)); // Wait for Empty Tx Buffer
  135   2              *AT91C_US1_THR = '\r';                      // Output CR
  136   2          }
  137   1          while (!((*AT91C_US1_CSR) & AT91C_US_TXRDY));   // Wait for Empty Tx Buffer
  138   1          return (*AT91C_US1_THR = ch);                 // Transmit Character
  139   1      }
  140          
  141          void hello_laogao(void)
  142          {
  143   1          unsigned char hello1[]={'h','e','l','l','o',' ','L','a','o','g','a','o','\n',};
  144   1          unsigned char i;
  145   1      
  146   1          for(i=0;i<13;i++)
  147   1          {
  148   2              Usart1_putchar(hello1[i]);
  149   2          }
  150   1      }
ARM COMPILER V2.53,  usart                                                                 19/07/06  08:38:09  PAGE 4   

ASSEMBLY LISTING OF GENERATED OBJECT CODE



*** PUBLICS:
 PUBLIC         uartinit?T
 PUBLIC         uart0init?T
 PUBLIC         putcharme?T
 PUBLIC         helloworld?T
 PUBLIC         USART0_send_string?T
 PUBLIC         Receivechar?T
 PUBLIC         Usart1_Init?T
 PUBLIC         Usart1_putchar?T
 PUBLIC         hello_laogao?T
 PUBLIC         Uart0ISR?A
 PUBLIC         g_bRBuffpiont
 PUBLIC         bpRBuff
 PUBLIC         g_bpData



*** DATA SEGMENT '?DT0?usart':
 00000000          g_bRBuffpiont:
 00000000            DS          1
 00000001          bpRBuff:
 00000001            DS          256
 00000101          g_bpData:
 00000101            DS          20
 00000115          bI:
 00000115           BEGIN_INIT
 00000115  00        DB          0x0
 00000116           END_INIT

*** DATA SEGMENT '?CON?usart':
 00000000          ?tpl?0001:
 00000000           BEGIN_INIT
 00000000  68        DB          0x68
 00000001  65        DB          0x65
 00000002  6C        DB          0x6C
 00000003  6C        DB          0x6C
 00000004  6F        DB          0x6F
 00000005  20        DB          0x20
 00000006  77        DB          0x77
 00000007  6F        DB          0x6F
 00000008  72        DB          0x72
 00000009  6C        DB          0x6C
 0000000A  64        DB          0x64
 0000000B  21        DB          0x21
 0000000C  0A        DB          0xA
 0000000D           END_INIT
 0000000D            ALIGN       4
 00000010          ?tpl?0002:
 00000010           BEGIN_INIT
 00000010  68        DB          0x68
 00000011  65        DB          0x65
 00000012  6C        DB          0x6C
 00000013  6C        DB          0x6C
 00000014  6F        DB          0x6F
 00000015  20        DB          0x20
 00000016  4C        DB          0x4C
 00000017  61        DB          0x61
 00000018  6F        DB          0x6F
 00000019  67        DB          0x67
 0000001A  61        DB          0x61
 0000001B  6F        DB          0x6F
 0000001C  0A        DB          0xA
 0000001D           END_INIT

⌨️ 快捷键说明

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