📄 main.lst
字号:
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 + -