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

📄 main.lst

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


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

stmt  level    source

    1          #include "mydefine.h"
    2          #include <AT91SAM7S64.H>
    3          
    4          volatile char message[80];
    5          volatile int loop;
    6          
    7          extern void AT91F_TWI_Open(void);
    8          extern int AT91F_TWI_WriteByte (const AT91PS_TWI,int, int, char *, int);
    9          extern int AT91F_TWI_ReadByte  (const AT91PS_TWI,int, int, char *, int );
   10          
   11          extern void uartinit(void);
   12          extern unsigned char putcharme(unsigned char i);
   13          extern void USART0_send_string(unsigned char *bpSendData,unsigned int length);
   14          //*--------------------------------------------------------------------------------------
   15          //* 函数名  : wait_ms
   16          //* 功能    :软件循环延时 MS微妙
   17          // 参数:   MS:延时时间(多少微妙)
   18          //* Creation            : 张正锋 2006-1-15 zhangzf@baite-group.com
   19          //*--------------------------------------------------------------------------------------
   20          void wait_ms (unsigned int ms )
   21          {
   22   1          for (loop=0; loop<1000*ms; loop++){};
   23   1      
   24   1      }
   25          //*----------------------------------------------------------------------------
   26          //* 函数名: AT91F_TestEEPROM
   27          //* 功能:测试TWI读写EEPROM功能
   28          //* Creation            : 张正锋 2006-1-15 zhangzf@baite-group.com
   29          //*----------------------------------------------------------------------------
   30          void AT91F_TestEEPROM(void)
   31          {
   32   1          //写一个数据测试
   33   1          char status,write,read,bI;
   34   1          unsigned char bpData[3];
   35   1      
   36   1          for(bI=0;bI<245;bI++)
   37   1          {
   38   2              write=0x55;
   39   2               bpData[0] = bI/100+'0';
   40   2               bpData[1] = (bI%100)/10+'0';
   41   2               bpData[2] = bI%10+'0'; 
   42   2              // 向EEPROM的01位置开始连续写10个字节
   43   2              status =AT91F_TWI_WriteByte(AT91C_BASE_TWI, AT91C_EEPROM_I2C_ADDRESS | AT91C_TWI_IADRSZ_2_BYTE, bI, &wr
             -ite, 1);
   44   2          
   45   2              //如果返回的status不为0,则表明写出错
   46   2              if (status)
   47   2              {
   48   3                  //打应错误信息
   49   3                  USART0_send_string(bpData,3);
   50   3                  USART0_send_string("ERROR",5);
   51   3              }
   52   2              //等待100MS
   53   2              wait_ms(100);
   54   2          
   55   2              //从EEPROM的01位置开始连续读10个字节
   56   2              status =AT91F_TWI_ReadByte(AT91C_BASE_TWI, AT91C_EEPROM_I2C_ADDRESS | AT91C_TWI_IADRSZ_2_BYTE, bI, &rea
             -d, 1);
ARM COMPILER V2.53,  main                                                                  19/07/06  08:38:08  PAGE 2   

   57   2          
   58   2              //如果返回的status不为0,则表明写出错
   59   2              if (status)
   60   2              {
   61   3                  //打应错误信息
   62   3                  USART0_send_string(bpData,3);
   63   3                  USART0_send_string("10 IS ERROR",11);
   64   3              }
   65   2              if (read == write)
   66   2              {
   67   3                  //打印测试信息
   68   3                  USART0_send_string(bpData,3);
   69   3                  USART0_send_string("OKOKOK",6);
   70   3                  continue ;
   71   3              }
   72   2              else
   73   2              {
   74   3                  //打印测试信息
   75   3                  USART0_send_string(bpData,3);
   76   3                  USART0_send_string("HAVE ERROR",10);
   77   3                  continue;
   78   3              }
   79   2          }
   80   1      }
   81          int main()
   82          {
   83   1      
   84   1          uartinit();
   85   1          USART0_send_string("begin to test twi",17);
   86   1          USART0_send_string("open twi",8);
   87   1          while(1)
   88   1          {
   89   2              //TWI 测试
   90   2              AT91F_TWI_Open();
   91   2              AT91F_TestEEPROM();
   92   2          }
   93   1      }
ARM COMPILER V2.53,  main                                                                  19/07/06  08:38:08  PAGE 3   

ASSEMBLY LISTING OF GENERATED OBJECT CODE



*** EXTERNALS:
 EXTERN CODE16 (AT91F_TWI_Open?T)
 EXTERN CODE16 (AT91F_TWI_WriteByte?T)
 EXTERN CODE16 (AT91F_TWI_ReadByte?T)
 EXTERN CODE16 (uartinit?T)
 EXTERN CODE16 (USART0_send_string?T)
 EXTERN CODE16 (?C?SDIV?T)
 EXTERN NUMBER (__startup)



*** PUBLICS:
 PUBLIC         wait_ms?T
 PUBLIC         AT91F_TestEEPROM?T
 PUBLIC         main
 PUBLIC         message
 PUBLIC         loop



*** DATA SEGMENT '?CON?main':
 00000000          ??S_6:
 00000000            DB          'open twi',0x00
 00000009          ??S_5:
 00000009            DB          'begin to test twi',0x00
 0000001B          ??S_4:
 0000001B            DB          'HAVE ERROR',0x00
 00000026          ??S_3:
 00000026            DB          'OKOKOK',0x00
 0000002D          ??S_2:
 0000002D            DB          '10 IS ERROR',0x00
 00000039          ??S_1:
 00000039            DB          'ERROR',0x00

*** DATA SEGMENT '?DT0?main':
 00000000          loop:
 00000000            DS          4
 00000004          message:
 00000004            DS          80



*** CODE SEGMENT '?PR?wait_ms?T?main':
   20: void wait_ms (unsigned int ms )
 00000000  ---- Variable 'ms' assigned to Register 'R0' ----
   22:     for (loop=0; loop<1000*ms; loop++){};
 00000000  2200      MOV         R2,#0x0
 00000002  4800      LDR         R1,=loop ; loop
 00000004  600A      STR         R2,[R1,#0x0] ; loop
 00000006  E003      B           L_3  ; T=0x00000010
 00000008          L_1:
 00000008  4800      LDR         R1,=loop ; loop
 0000000A  680A      LDR         R2,[R1,#0x0] ; loop
 0000000C  3201      ADD         R2,#0x1
 0000000E  600A      STR         R2,[R1,#0x0] ; loop
 00000010          L_3:
 00000010  1C02      MOV         R2,R0 ; ms
 00000012  49FA      LDR         R1,=0x3E8
 00000014  434A      MUL         R2,R1
 00000016  4800      LDR         R1,=loop ; loop
 00000018  6809      LDR         R1,[R1,#0x0] ; loop
 0000001A  4291      CMP         R1,R2
 0000001C  D3F4      BCC         L_1  ; T=0x00000008
   24: }
 0000001E  4770      BX          R14
 00000020          ENDP ; 'wait_ms?T'


*** CODE SEGMENT '?PR?AT91F_TestEEPROM?T?main':
   30: void AT91F_TestEEPROM(void)
 00000000  B530      PUSH        {R4-R5,LR}
 00000002  B083      SUB         R13,#0xC
ARM COMPILER V2.53,  main                                                                  19/07/06  08:38:08  PAGE 4   

   31: {
 00000004            ; SCOPE-START
   36:     for(bI=0;bI<245;bI++)
 00000004  2400      MOV         R4,#0x0
 00000006  ---- Variable 'bI' assigned to Register 'R4' ----
 00000006  E079      B           L_8  ; T=0x000000FC
 00000008          L_9:
   38:         write=0x55;
 00000008  2155      MOV         R1,#0x55
 0000000A  A800      ADD         R0,R13,#0x0
 0000000C  7001      STRB        R1,[R0,#0x0] ; write
   39:          bpData[0] = bI/100+'0';
 0000000E  1C20      MOV         R0,R4 ; bI
 00000010  0600      LSL         R0,R0,#0x18 ; bI
 00000012  0E00      LSR         R0,R0,#0x18
 00000014  2164      MOV         R1,#0x64
 00000016  F7FF      BL          ?C?SDIV?T  ; T=0x0001  (1) ; ?C?SDIV?T
 00000018  FFF3      BL          ?C?SDIV?T  ; T=0x0001  (2) ; ?C?SDIV?T

⌨️ 快捷键说明

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