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

📄 com.lst

📁 ARM入门的好帮手.包含了从简单到相对较复杂的程序.
💻 LST
📖 第 1 页 / 共 2 页
字号:
   \   00000008   0150A0E1              MOV      R5,R1
     86              u_int   i;
     87              for (i=0 ; buff[i]!=0;i++)
   \   0000000C   0060A0E3              MOV      R6,#+0x0
   \   00000010   080000EA              B        ??at91_print_0
     88              {
     89                  //* wait the USART Ready for transmission
     90                  while((at91_usart_get_status(USART_pt->usart) & US_TXRDY) ==0)  {}
   \                     ??at91_print_1:
   \   00000014   000094E5              LDR      R0,[R4, #+0]
   \   00000018   ........              BL       at91_usart_get_status
   \   0000001C   FF0000E2              AND      R0,R0,#+0xFF       ;; Zero extend
   \   00000020   020010E3              TST      R0,#+0x2
   \   00000024   FAFFFF0A              BEQ      ??at91_print_1
     91                  //* write Char
     92                  at91_usart_write(USART_pt->usart,buff[i]);
   \   00000028   0010D7E5              LDRB     R1,[R7, #+0]
   \   0000002C   000094E5              LDR      R0,[R4, #+0]
   \   00000030   ........              BL       at91_usart_write
     93              }
   \   00000034   016086E2              ADD      R6,R6,#+0x1
   \                     ??at91_print_0:
   \   00000038   057086E0              ADD      R7,R6,R5
   \   0000003C   0000D7E5              LDRB     R0,[R7, #+0]
   \   00000040   000050E3              CMP      R0,#+0x0
   \   00000044   F2FFFF1A              BNE      ??at91_print_1
     94          }
   \   00000048   F080BDE8              LDMIA    SP!,{R4-R7,PC}     ;; return
     95          //* End
     96          //*----------------------------------------------------------------------------
     97          //* Function Name       : at91_send_byte
     98          //* Object              : Send a char (one byte to USART)
     99          //* Input Parameters    : com descriptor & String pointer
    100          //* Output Parameters   : none
    101          //*----------------------------------------------------------------------------

   \                                 In segment NEARFUNC_A, align 4, keep-with-next
   \   00000000                         CODE32   
    102          void at91_send_byte(ComDesc *USART_pt, char buff)
    103          //* Begin
    104          {
   \                     at91_send_byte:
   \   00000000   30402DE9              STMDB    SP!,{R4,R5,LR}     ;; Push
   \   00000004   0040A0E1              MOV      R4,R0
   \   00000008   0150A0E1              MOV      R5,R1
    105               //* wait the USART Ready for transmission
    106          	 //* PDC wait
    107          	 while(( USART_pt->usart->usart_base->US_TCR) !=0)  {}
   \                     ??at91_send_byte_0:
   \   0000000C   000094E5              LDR      R0,[R4, #+0]
   \   00000010   001090E5              LDR      R1,[R0, #+0]
   \   00000014   3C0091E5              LDR      R0,[R1, #+60]
   \   00000018   000050E3              CMP      R0,#+0x0
   \   0000001C   FAFFFF1A              BNE      ??at91_send_byte_0
    108          	 //* Char wait
    109               while((at91_usart_get_status(USART_pt->usart) & US_TXRDY) ==0)  {}
   \                     ??at91_send_byte_1:
   \   00000020   000094E5              LDR      R0,[R4, #+0]
   \   00000024   ........              BL       at91_usart_get_status
   \   00000028   FF0000E2              AND      R0,R0,#+0xFF       ;; Zero extend
   \   0000002C   020010E3              TST      R0,#+0x2
   \   00000030   FAFFFF0A              BEQ      ??at91_send_byte_1
    110               //* write Char
    111               at91_usart_write(USART_pt->usart,buff);
   \   00000034   FF5005E2              AND      R5,R5,#+0xFF       ;; Zero extend
   \   00000038   0510A0E1              MOV      R1,R5
   \   0000003C   000094E5              LDR      R0,[R4, #+0]
   \   00000040   ........              BL       at91_usart_write
    112          }
   \   00000044   3080BDE8              LDMIA    SP!,{R4,R5,PC}     ;; return
    113          //* End
    114          
    115          //*----------------------------------------------------------------------------
    116          //* Function Name       : at91_print_crlf
    117          //* Object              : Send  "\n\r"
    118          //* Input Parameters    : com descriptor
    119          //* Output Parameters   : none
    120          //*----------------------------------------------------------------------------

   \                                 In segment NEARFUNC_A, align 4, keep-with-next
   \   00000000                         CODE32   
    121          void at91_print_crlf(ComDesc *USART_pt)
    122          {
   \                     at91_print_crlf:
   \   00000000   70402DE9              STMDB    SP!,{R4-R6,LR}     ;; Push
   \   00000004   04D04DE2              SUB      SP,SP,#+0x4
    123              char buff[3];
    124              buff[0]='\n'; buff[1]='\r';buff[2]=0x00;
   \   00000008   0A10A0E3              MOV      R1,#+0xA
   \   0000000C   0010CDE5              STRB     R1,[SP, #+0]
   \   00000010   0D10A0E3              MOV      R1,#+0xD
   \   00000014   0110CDE5              STRB     R1,[SP, #+1]
   \   00000018   0010A0E3              MOV      R1,#+0x0
   \   0000001C   0210CDE5              STRB     R1,[SP, #+2]
    125              at91_print(USART_pt,buff);
   \   00000020   0040A0E1              MOV      R4,R0
   \   00000024   0050A0E3              MOV      R5,#+0x0
   \   00000028   080000EA              B        ??at91_print_crlf_0
   \                     ??at91_print_crlf_1:
   \   0000002C   000094E5              LDR      R0,[R4, #+0]
   \   00000030   ........              BL       at91_usart_get_status
   \   00000034   FF0000E2              AND      R0,R0,#+0xFF       ;; Zero extend
   \   00000038   020010E3              TST      R0,#+0x2
   \   0000003C   FAFFFF0A              BEQ      ??at91_print_crlf_1
   \   00000040   0610A0E1              MOV      R1,R6
   \   00000044   000094E5              LDR      R0,[R4, #+0]
   \   00000048   ........              BL       at91_usart_write
   \   0000004C   015085E2              ADD      R5,R5,#+0x1
   \                     ??at91_print_crlf_0:
   \   00000050   0D00A0E1              MOV      R0,SP
   \   00000054   0060D5E7              LDRB     R6,[R5, +R0]
   \   00000058   000056E3              CMP      R6,#+0x0
   \   0000005C   F2FFFF1A              BNE      ??at91_print_crlf_1
    126          }
   \   00000060   04D08DE2              ADD      SP,SP,#+0x4        ;; stack cleaning
   \   00000064   7080BDE8              LDMIA    SP!,{R4-R6,PC}     ;; return
    127          //*----------------------------------------------------------------------------
    128          //* Function Name       : at91_getch
    129          //* Object              : Chek a char in usart
    130          //* Input Parameters    : com descriptor & pt value
    131          //* Output Parameters   : TRUE if char or FALSE
    132          //*----------------------------------------------------------------------------

   \                                 In segment NEARFUNC_A, align 4
   \   00000000                         CODE32   
    133          int at91_getch(ComDesc *USART_pt ,int * value )
    134          {
   \                     at91_getch:
   \   00000000   70402DE9              STMDB    SP!,{R4-R6,LR}     ;; Push
   \   00000004   0040A0E1              MOV      R4,R0
   \   00000008   0150A0E1              MOV      R5,R1
    135              u_int status;
    136          
    137               //* Check the USART Ready for reception
    138               status =(( at91_usart_get_status(USART_pt->usart) & US_RXRDY) ==0);
   \   0000000C   000094E5              LDR      R0,[R4, #+0]
   \   00000010   ........              BL       at91_usart_get_status
   \   00000014   FF0000E2              AND      R0,R0,#+0xFF       ;; Zero extend
   \   00000018   010010E3              TST      R0,#+0x1
   \   0000001C   0100A003              MOVEQ    R0,#+0x1
   \   00000020   0000A013              MOVNE    R0,#+0x0
   \   00000024   0060A0E1              MOV      R6,R0
    139               if (! status)
   \   00000028   000050E3              CMP      R0,#+0x0
    140               {
    141                  at91_usart_read (USART_pt->usart,(u_int *) value );
   \   0000002C   0510A001              MOVEQ    R1,R5
   \   00000030   00009405              LDREQ    R0,[R4, #+0]
   \   00000034   ........              BLEQ     at91_usart_read
    142               }
    143               return status;
   \   00000038   0600A0E1              MOV      R0,R6
   \   0000003C   7080BDE8              LDMIA    SP!,{R4-R6,PC}     ;; return
    144          }
    145          

   Maximum stack usage in bytes:

     Function          CSTACK
     --------          ------
     at91_close_com        8 
     at91_getch           16 
     at91_open_com         8 
     at91_print           20 
     at91_print_crlf      20 
     at91_print_frame     16 
     at91_send_byte       12 

 
 492 bytes in segment NEARFUNC_A
 
 492 bytes of CODE memory

Errors: none
Warnings: 1

⌨️ 快捷键说明

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