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

📄 main.lst

📁 ARM仿真案例
💻 LST
📖 第 1 页 / 共 2 页
字号:
##############################################################################
#                                                                            #
# 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 + -