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

📄 uart.lst

📁 aduc7026裸机程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
ARM COMPILER V2.42,  uart                                                                  17/01/09  22:24:15  PAGE 1   


ARM COMPILER V2.42, COMPILATION OF MODULE uart
OBJECT MODULE PLACED IN uart.OBJ
COMPILER INVOKED BY: C:\Keil\ARM\BIN\CA.exe uart.c THUMB BROWSE DEBUG TABS(4) 

stmt  level    source

    1          #include "main.h"
    2          
    3          
    4          void UartInit()
    5          {
    6   1          GP1CON  = 0x11;  //SIN SOUT LINK TO P1.0,P1.1
    7   1          COMCON0 = 0x83;  //SETTING TO ACCESS DIV0 AND DIV1
    8   1          COMDIV0 = 0x44;  //baute rate at 19200 bps
    9   1          COMDIV1 = 0x0;
   10   1          COMCON0 = 0X03;  //SET TO OUT DIV0 AND DIV1
   11   1      }
   12          /**************************************
   13           * 应用程序在uart口输出数据(查询方式)
   14           *************************************/
   15          void SendByte(unsigned char Bdata)
   16          {
   17   1          while(!(COMSTA0 & 0x40));
   18   1          COMTX = Bdata;
   19   1      }
   20          /*****************************************
   21           * User在PC串口终端输入数据 范围0x0 - 0xFF
   22           * 应用程序在uart口读入数据 (查询方式)
   23           *****************************************/
   24          unsigned char GetData()
   25          {
   26   1          unsigned char tmp = 0xFF;
   27   1          PrintStr("please input the command code:");
   28   1          while(!(COMSTA0 & 0x01));
   29   1          tmp = COMRX;
   30   1          SendHex(tmp);
   31   1          NewLine();
   32   1          return tmp;
   33   1      }
   34          /*******************************************************
   35           * 通过Uart输出十六进制数据,如:0xAA 范围(0x00 - 0xFF)
   36           *******************************************************/
   37          unsigned char HexList[16] = {'0','1','2','3','4','5','6','7',
   38                                       '8','9','A','B','C','D','E','F'};
   39          void SendHex(int num)
   40          {
   41   1          SendByte('0');
   42   1          SendByte('x');
   43   1          SendByte(HexList[num/16]);
   44   1          SendByte(HexList[num%16]);
   45   1      }
   46          /*************************
   47           * 串口终端输出数据
   48           * 数大小范围 0 - 99999 
   49           *************************/
   50          void SendNum(int num)
   51          {
   52   1          if(num >= 10){
   53   2              if(num >=100){
   54   3                  if(num >= 1000){
   55   4                      if(num>= 10000){
   56   5                          SendByte(num / 10000 + 0x30);
   57   5                          num = num % 10000;
   58   5                      }
   59   4                      SendByte(num / 1000 + 0x30);
ARM COMPILER V2.42,  uart                                                                  17/01/09  22:24:15  PAGE 2   

   60   4                      num = num % 1000;
   61   4                  }
   62   3                  SendByte(num / 100 + 0x30);
   63   3                  num = num % 100;
   64   3              }
   65   2              SendByte(num / 10 + 0x30);
   66   2          }
   67   1          SendByte(num % 10 + 0x30);  
   68   1      }
   69          /****************************
   70           * out put a string
   71           ****************************/
   72          void PrintStr(unsigned char *p)
   73          {
   74   1          int i = 0;
   75   1          while( p[i] != 0){
   76   2              SendByte(p[i]);
   77   2              i++;
   78   2          } 
   79   1      }
   80          /**************************
   81           * 换行
   82           **************************/
   83          void NewLine()
   84          {
   85   1          SendByte(0x0D);
   86   1          SendByte(0x0A);
   87   1      }
ARM COMPILER V2.42,  uart                                                                  17/01/09  22:24:15  PAGE 3   

ASSEMBLY LISTING OF GENERATED OBJECT CODE



*** EXTERNALS:
 EXTERN CODE16 (?C?SDIV?T)



*** PUBLICS:
 PUBLIC         UartInit?T
 PUBLIC         SendByte?T
 PUBLIC         SendHex?T
 PUBLIC         SendNum?T
 PUBLIC         PrintStr?T
 PUBLIC         NewLine?T
 PUBLIC         GetData?T
 PUBLIC         HexList



*** DATA SEGMENT '?CON?uart':
 00000000          ??S_1:
 00000000            DB          'please input the command code:',0x00

*** DATA SEGMENT '?DT0?uart':
 00000000          HexList:
 00000000           BEGIN_INIT
 00000000  30        DB          0x30
 00000001  31        DB          0x31
 00000002  32        DB          0x32
 00000003  33        DB          0x33
 00000004  34        DB          0x34
 00000005  35        DB          0x35
 00000006  36        DB          0x36
 00000007  37        DB          0x37
 00000008  38        DB          0x38
 00000009  39        DB          0x39
 0000000A  41        DB          0x41
 0000000B  42        DB          0x42
 0000000C  43        DB          0x43
 0000000D  44        DB          0x44
 0000000E  45        DB          0x45
 0000000F  46        DB          0x46
 00000010           END_INIT



*** CODE SEGMENT '?PR?UartInit?T?uart':
    6:     GP1CON  = 0x11;  //SIN SOUT LINK TO P1.0,P1.1
 00000000  2111      MOV         R1,#0x11
 00000002  4800      LDR         R0,=0xFFFFF404
 00000004  6001      STR         R1,[R0,#0x0]
    7:     COMCON0 = 0x83;  //SETTING TO ACCESS DIV0 AND DIV1
 00000006  2183      MOV         R1,#0x83
 00000008  4800      LDR         R0,=0xFFFF070C
 0000000A  6001      STR         R1,[R0,#0x0]
    8:     COMDIV0 = 0x44;  //baute rate at 19200 bps
 0000000C  2144      MOV         R1,#0x44
 0000000E  4800      LDR         R0,=0xFFFF0700
 00000010  6001      STR         R1,[R0,#0x0]
    9:     COMDIV1 = 0x0;
 00000012  2100      MOV         R1,#0x0
 00000014  4800      LDR         R0,=0xFFFF0704
 00000016  6001      STR         R1,[R0,#0x0]
   10:     COMCON0 = 0X03;  //SET TO OUT DIV0 AND DIV1
 00000018  2103      MOV         R1,#0x3
 0000001A  4800      LDR         R0,=0xFFFF070C
 0000001C  6001      STR         R1,[R0,#0x0]
   11: }
 0000001E  4770      BX          R14
 00000020          ENDP ; 'UartInit?T'


*** CODE SEGMENT '?PR?SendByte?T?uart':
   15: void SendByte(unsigned char Bdata)
ARM COMPILER V2.42,  uart                                                                  17/01/09  22:24:15  PAGE 4   

 00000000  1C01      MOV         R1,R0 ; Bdata
 00000002  ---- Variable 'Bdata' assigned to Register 'R1' ----
   17:     while(!(COMSTA0 & 0x40));
 00000002          L_1:
 00000002  4800      LDR         R0,=0xFFFF0714
 00000004  6800      LDR         R0,[R0,#0x0]
 00000006  2240      MOV         R2,#0x40
 00000008  4210      TST         R0,R2
 0000000A  D0FA      BEQ         L_1  ; T=0x00000002
   18:     COMTX = Bdata;
 0000000C  1C08      MOV         R0,R1 ; Bdata
 0000000E  0601      LSL         R1,R0,#0x18 ; Bdata
 00000010  0E09      LSR         R1,R1,#0x18
 00000012  4800      LDR         R0,=0xFFFF0700
 00000014  6001      STR         R1,[R0,#0x0]
   19: }
 00000016  4770      BX          R14
 00000018          ENDP ; 'SendByte?T'


*** CODE SEGMENT '?PR?GetData?T?uart':
   24: unsigned char GetData()
 00000000  B510      PUSH        {R4,LR}
   25: {
 00000002            ; SCOPE-START
   26:     unsigned char tmp = 0xFF;
 00000002  24FF      MOV         R4,#0xFF
 00000004  ---- Variable 'tmp' assigned to Register 'R4' ----
   27:     PrintStr("please input the command code:");
 00000004  4800      LDR         R0,=??S_1 ; ??S_1
 00000006  F7FF      BL          PrintStr?T  ; T=0x0001  (1)
 00000008  FFFB      BL          PrintStr?T  ; T=0x0001  (2)
   28:     while(!(COMSTA0 & 0x01));
 0000000A          L_5:
 0000000A  4800      LDR         R0,=0xFFFF0714
 0000000C  6800      LDR         R0,[R0,#0x0]
 0000000E  2101      MOV         R1,#0x1
 00000010  4208      TST         R0,R1
 00000012  D0FA      BEQ         L_5  ; T=0x0000000A
   29:     tmp = COMRX;
 00000014  4800      LDR         R0,=0xFFFF0700
 00000016  6804      LDR         R4,[R0,#0x0]
 00000018  0624      LSL         R4,R4,#0x18
 0000001A  0E24      LSR         R4,R4,#0x18
   30:     SendHex(tmp);
 0000001C  1C20      MOV         R0,R4 ; tmp
 0000001E  0600      LSL         R0,R0,#0x18 ; tmp
 00000020  0E00      LSR         R0,R0,#0x18
 00000022  F7FF      BL          SendHex?T  ; T=0x0001  (1)

⌨️ 快捷键说明

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