📄 main.lst
字号:
##############################################################################
# #
# IAR ARM ANSI C/C++ Compiler V4.40A/W32 EVALUATION 21/Jul/2006 19:33:13 #
# Copyright 1999-2005 IAR Systems. All rights reserved. #
# Time limited license: 21 days left #
# #
# Cpu mode = interwork #
# Endian = little #
# Stack alignment = 4 #
# Source file = E:\Project\ucos-ii\lcd\App\main.c #
# Command line = E:\Project\ucos-ii\lcd\App\main.c -lCN #
# E:\Project\ucos-ii\lcd\Debug\List\ -lA #
# E:\Project\ucos-ii\lcd\Debug\List\ -o #
# E:\Project\ucos-ii\lcd\Debug\Obj\ -s9 --no_cse #
# --no_unroll --no_inline --no_code_motion --no_tbaa #
# --no_clustering --no_scheduling --debug --cpu_mode #
# thumb --endian little --cpu ARM7TDMI-S #
# --stack_align 4 --interwork -e --fpu None #
# --dlib_config "E:\Program Files\IAR #
# Systems\Embedded Workbench 4.0 #
# Evaluation\ARM\LIB\dl4tptinl8n.h" -I #
# E:\Project\ucos-ii\lcd\ -I #
# E:\Project\ucos-ii\lcd\App\ -I #
# E:\Project\ucos-ii\lcd\ARM\ -I #
# E:\Project\ucos-ii\lcd\BSP\ -I #
# E:\Project\ucos-ii\lcd\uCOS-II\ -I "E:\Program #
# Files\IAR Systems\Embedded Workbench 4.0 #
# Evaluation\ARM\INC\" #
# List file = E:\Project\ucos-ii\lcd\Debug\List\main.lst #
# Object file = E:\Project\ucos-ii\lcd\Debug\Obj\main.r79 #
# #
# #
##############################################################################
E:\Project\ucos-ii\lcd\App\main.c
1
2
3 #include <includes.h>
\ In segment DATA_AN, at 0xe002c000
\ union <unnamed> volatile __data _A_PINSEL0
\ _A_PINSEL0:
\ 00000000 DS8 4
\ In segment DATA_AN, at 0xe0028000
\ union <unnamed> const volatile __data _A_IOPIN
\ _A_IOPIN:
\ 00000000 DS8 4
\ In segment DATA_AN, at 0xe0028004
\ union <unnamed> volatile __data _A_IOSET
\ _A_IOSET:
\ 00000000 DS8 4
\ In segment DATA_AN, at 0xe0028008
\ union <unnamed> volatile __data _A_IODIR
\ _A_IODIR:
\ 00000000 DS8 4
\ In segment DATA_AN, at 0xe002800c
\ union <unnamed> volatile __data _A_IOCLR
\ _A_IOCLR:
\ 00000000 DS8 4
4 #define rs (1<<8)
5 #define rw (1<<9)
6 #define en (1<<10)
7 #define busy (1<<7)
8
9 #define TASK_STK_SIZE 64
\ In segment DATA_Z, align 4, align-sorted
10 OS_STK TaskStartStk[TASK_STK_SIZE];
\ TaskStartStk:
\ 00000000 DS8 256
11
12 void TaskStart(void *data);
\ In segment DATA_I, align 4, align-sorted
13 INT8U txt[]={"helloworld"};
\ txt:
\ 00000000 DS8 12
\ 0000000C REQUIRE `?<Initializer for txt>`
14 /****************************************************************************
15 * 名称:ChkBusy()
16 * 功能:检查总线是否忙
17 ****************************************************************************/
\ In segment CODE, align 4, keep-with-next
18 void ChkBusy()
19 {
\ ChkBusy:
\ 00000000 00B5 PUSH {LR}
20 PINSEL0=0xffc00000;
\ 00000002 0D48 LDR R0,??ChkBusy_0 ;; 0xe002c000
\ 00000004 0D49 LDR R1,??ChkBusy_0+0x4 ;; 0xffc00000
\ 00000006 0160 STR R1,[R0, #+0]
21 IODIR=0x700;
\ 00000008 .... LDR R0,??DataTable13 ;; 0xe0028008
\ 0000000A 410D LSRS R1,R0,#+21
\ 0000000C 00E0 B.N ??ChkBusy_1
22 while(1)
23 {
24 IOCLR=rs;
25 IOSET=rw;
26 IOSET=en;
27 if(!(IOPIN & busy))break;
28 IOCLR=en;
\ ??ChkBusy_2:
\ 0000000E .... LDR R0,??DataTable15 ;; 0xe002800c
\ ??ChkBusy_1:
\ 00000010 0160 STR R1,[R0, #+0]
\ 00000012 .... LDR R0,??DataTable15 ;; 0xe002800c
\ 00000014 8021 MOVS R1,#+128
\ 00000016 4900 LSLS R1,R1,#+1 ;; #+256
\ 00000018 0160 STR R1,[R0, #+0]
\ 0000001A .... LDR R0,??DataTable11 ;; 0xe0028004
\ 0000001C 4900 LSLS R1,R1,#+1
\ 0000001E 0160 STR R1,[R0, #+0]
\ 00000020 4900 LSLS R1,R1,#+1
\ 00000022 0160 STR R1,[R0, #+0]
\ 00000024 0648 LDR R0,??ChkBusy_0+0x8 ;; 0xe0028000
\ 00000026 0068 LDR R0,[R0, #+0]
\ 00000028 0006 LSLS R0,R0,#+24
\ 0000002A F0D4 BMI ??ChkBusy_2
29 }
30 IODIR=0x7ff;
\ 0000002C .... LDR R0,??DataTable13 ;; 0xe0028008
\ 0000002E .... LDR R1,??DataTable14 ;; 0x7ff
\ 00000030 0160 STR R1,[R0, #+0]
31 }
\ 00000032 01BC POP {R0}
\ 00000034 0047 BX R0 ;; return
\ 00000036 C046 Nop
\ ??ChkBusy_0:
\ 00000038 00C002E0 DC32 0xe002c000
\ 0000003C 0000C0FF DC32 0xffc00000
\ 00000040 008002E0 DC32 0xe0028000
32 /****************************************************************************
33 * 名称:WrOp()
34 * 功能:写函数
35 ****************************************************************************/
\ In segment CODE, align 4, keep-with-next
36 void WrOp(INT8U dat)
37 {
\ WrOp:
\ 00000000 10B5 PUSH {R4,LR}
\ 00000002 0400 MOVS R4,R0
38
39 ChkBusy();
\ 00000004 ........ BL ChkBusy
40 IOCLR=rs; //全部清零
\ 00000008 .... LDR R0,??DataTable15 ;; 0xe002800c
\ 0000000A 8021 MOVS R1,#+128
\ 0000000C 4900 LSLS R1,R1,#+1 ;; #+256
\ 0000000E 0160 STR R1,[R0, #+0]
41 IOCLR=rw;
\ 00000010 4900 LSLS R1,R1,#+1
\ 00000012 0160 STR R1,[R0, #+0]
42 IOCLR=0xff; //先清零
\ 00000014 FF21 MOVS R1,#+255
\ 00000016 0160 STR R1,[R0, #+0]
43 IOSET=dat; //再送数
\ 00000018 .... LDR R0,??DataTable11 ;; 0xe0028004
\ 0000001A 0460 STR R4,[R0, #+0]
44 IOSET=en;
\ 0000001C 8021 MOVS R1,#+128
\ 0000001E C900 LSLS R1,R1,#+3 ;; #+1024
\ 00000020 0160 STR R1,[R0, #+0]
45 IOCLR=en;
\ 00000022 .... LDR R0,??DataTable15 ;; 0xe002800c
\ 00000024 0160 STR R1,[R0, #+0]
46 }
\ 00000026 10BC POP {R4}
\ 00000028 01BC POP {R0}
\ 0000002A 0047 BX R0 ;; return
47 /****************************************************************************
48 * 名称:WrDat()
49 * 功能:写数据函数
50 ****************************************************************************/
\ In segment CODE, align 4, keep-with-next
51 void WrDat(INT8U dat) //读数据
52 {
\ WrDat:
\ 00000000 10B5 PUSH {R4,LR}
\ 00000002 0400 MOVS R4,R0
53
54 ChkBusy();
\ 00000004 ........ BL ChkBusy
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -