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

📄 main.lst

📁 在ADuC7027上使用NOKIA3510彩色液晶显示器(3510LCD)
💻 LST
字号:
ARM COMPILER V2.50a,  main                                                                 03/05/06  03:04:54  PAGE 1   


ARM COMPILER V2.50a, COMPILATION OF MODULE main
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\ARM\BIN\CA.exe main.c THUMB BROWSE DEBUG TABS(4) 

stmt  level    source

    1          /**********************************************************************************************
    2            main.c file
    3            
    4            在ADuC7027上使用NOKIA3510彩色液晶显示器
    5               
    6            作者:Computer-lov
    7            建立日期:2006-5-2
    8            修改日期:2006-5-3
    9            版本:V1.0
   10            版权所有,盗版必究。
   11            任何技术问题可到我的博客上留言:    http://computer00.21ic.org
   12            Copyright(C) Computer-lov 2006-2016
   13            All rights reserved
   14          **********************************************************************************************/
   15          
   16          #include <ADuC7027.H>
   17          #include "My_type.h"
   18          #include "3510LCD.H"
   19          #include "ImgData.H"
   20          
   21          
   22          /*********************************************************************************************/
   23          void SysClkInit(void)
   24          {
   25   1       PLLKEY1=0xAA;
   26   1       PLLCON=0x01;   //PLL配置  
   27   1       PLLKEY2=0x55;
   28   1       POWKEY1=0x01;
   29   1       POWCON=0x00;  //CPU时钟配置为41.78MHz
   30   1       POWKEY2=0xF4;
   31   1      // while(!(PLLSTA & 0x01));
   32   1      }
   33          ///////////////////////////////////////////////////////////////////////////////////////////////
   34          
   35          
   36          /*********************************************************************************************/
   37          void DelayXms(uint32 x)
   38          {
   39   1       uint32 i;
   40   1       while(x--)
   41   1        {
   42   2         i=5300;
   43   2         while(i--);
   44   2        }
   45   1      }
   46          ///////////////////////////////////////////////////////////////////////////////////////////////
   47          
   48          
   49          /*********************************************************************************************/
   50          void main(void)
   51          {
   52   1       uint32 y;
   53   1       SysClkInit();
   54   1       LcdInit();
   55   1       
   56   1       while(1)
   57   1        {
   58   2         for(y = 0; y < 67; y ++)
   59   2          {
ARM COMPILER V2.50a,  main                                                                 03/05/06  03:04:54  PAGE 2   

   60   3           LcdBlockWrite(0, y, 97, y, buffer1+y*147);
   61   3          }
   62   2         DelayXms(1000);
   63   2         for(y = 0; y < 67; y ++)
   64   2          {
   65   3           LcdBlockWrite(0, y, 97, y, buffer2+y*147);
   66   3          }
   67   2         DelayXms(1000);
   68   2         for(y = 0; y < 67; y ++)
   69   2          {
   70   3           LcdBlockWrite(0, y, 97, y, buffer3+y*147);
   71   3          }
   72   2         DelayXms(1000);
   73   2         LcdSendCommand(0x21);        //display inversion ON
   74   2         SetLcdCs();
   75   2         for(y = 0; y < 67; y ++)
   76   2          {
   77   3           LcdBlockWrite(0, y, 97, y, buffer4+y*147);
   78   3          }
   79   2         DelayXms(1000);
   80   2         LcdSendCommand(0x20);        //display inversion OFF
   81   2         SetLcdCs();
   82   2        }
   83   1      }
   84          ///////////////////////////////////////////////////////////////////////////////////////////////
ARM COMPILER V2.50a,  main                                                                 03/05/06  03:04:54  PAGE 3   

ASSEMBLY LISTING OF GENERATED OBJECT CODE



*** EXTERNALS:
 EXTERN CODE16 (LcdSendCommand?T)
 EXTERN CODE16 (LcdInit?T)
 EXTERN CODE16 (LcdBlockWrite?T)
 EXTERN DATA (buffer1)
 EXTERN DATA (buffer2)
 EXTERN DATA (buffer3)
 EXTERN DATA (buffer4)
 EXTERN NUMBER (__startup)



*** PUBLICS:
 PUBLIC         DelayXms?T
 PUBLIC         SysClkInit?T
 PUBLIC         main



*** CODE SEGMENT '?PR?SysClkInit?T?main':
   25:  PLLKEY1=0xAA;
 00000000  21AA      MOV         R1,#0xAA
 00000002  4800      LDR         R0,=0xFFFF0410
 00000004  6001      STR         R1,[R0,#0x0]
   26:  PLLCON=0x01;   //PLL配置  
 00000006  2101      MOV         R1,#0x1
 00000008  4800      LDR         R0,=0xFFFF0414
 0000000A  6001      STR         R1,[R0,#0x0]
   27:  PLLKEY2=0x55;
 0000000C  2255      MOV         R2,#0x55
 0000000E  4800      LDR         R0,=0xFFFF0418
 00000010  6002      STR         R2,[R0,#0x0]
   28:  POWKEY1=0x01;
 00000012  4800      LDR         R0,=0xFFFF0404
 00000014  6001      STR         R1,[R0,#0x0]
   29:  POWCON=0x00;  //CPU时钟配置为41.78MHz
 00000016  2100      MOV         R1,#0x0
 00000018  4800      LDR         R0,=0xFFFF0408
 0000001A  6001      STR         R1,[R0,#0x0]
   30:  POWKEY2=0xF4;
 0000001C  21F4      MOV         R1,#0xF4
 0000001E  4800      LDR         R0,=0xFFFF040C
 00000020  6001      STR         R1,[R0,#0x0]
   32: }
 00000022  4770      BX          R14
 00000024          ENDP ; 'SysClkInit?T'


*** CODE SEGMENT '?PR?DelayXms?T?main':
   37: void DelayXms(uint32 x)
 00000000  ---- Variable 'x' assigned to Register 'R0' ----
   38: {
 00000000            ; SCOPE-START
   40:  while(x--)
 00000000  E004      B           L_1  ; T=0x0000000C
 00000002          L_3:
   42:    i=5300;
 00000002  4800      LDR         R1,=0x14B4
 00000004  ---- Variable 'i' assigned to Register 'R1' ----
   43:    while(i--);
 00000004          L_5:
 00000004  1C0A      MOV         R2,R1 ; i
 00000006  3901      SUB         R1,#0x1
 00000008  2A00      CMP         R2,#0x0 ; i
 0000000A  D1FB      BNE         L_5  ; T=0x00000004
   44:   }
 0000000C          L_1:
 0000000C  1C01      MOV         R1,R0 ; x
 0000000E  3801      SUB         R0,#0x1
ARM COMPILER V2.50a,  main                                                                 03/05/06  03:04:54  PAGE 4   

 00000010  2900      CMP         R1,#0x0 ; x
 00000012  D1F6      BNE         L_3  ; T=0x00000002
 00000014            ; SCOPE-END
   45: }
 00000014  4770      BX          R14
 00000016          ENDP ; 'DelayXms?T'


*** CODE SEGMENT '?PR?main?main':
   50: void main(void)
 00000000  B500      PUSH        {LR}
   51: {
 00000002            ; SCOPE-START
   53:  SysClkInit();
 00000002  F7FF      BL          SysClkInit?T  ; T=0x0001  (1)
 00000004  FFFD      BL          SysClkInit?T  ; T=0x0001  (2)
   54:  LcdInit();
 00000006  F7FF      BL          LcdInit?T  ; T=0x0001  (1)
 00000008  FFFB      BL          LcdInit?T  ; T=0x0001  (2)
   58:    for(y = 0; y < 67; y ++)
 0000000A          L_17:
 0000000A  2400      MOV         R4,#0x0
 0000000C  ---- Variable 'y' assigned to Register 'R4' ----
 0000000C          L_16:
   60:      LcdBlockWrite(0, y, 97, y, buffer1+y*147);
 0000000C  1C21      MOV         R1,R4 ; y
 0000000E  2093      MOV         R0,#0x93
 00000010  4341      MUL         R1,R0
 00000012  4800      LDR         R0,=buffer1 ; buffer1
 00000014  1840      ADD         R0,R1 ; buffer1
 00000016  B401      PUSH        {R0}
 00000018  1C21      MOV         R1,R4 ; y
 0000001A  1C23      MOV         R3,R4 ; y
 0000001C  2000      MOV         R0,#0x0
 0000001E  2261      MOV         R2,#0x61
 00000020  F7FF      BL          LcdBlockWrite?T  ; T=0x0001  (1)
 00000022  FFEE      BL          LcdBlockWrite?T  ; T=0x0001  (2)
 00000024  B001      ADD         R13,#0x4
   61:     }
 00000026  3401      ADD         R4,#0x1
 00000028  1C20      MOV         R0,R4 ; y
 0000002A  2843      CMP         R0,#0x43 ; y
 0000002C  D3EE      BCC         L_16  ; T=0x0000000C
   62:    DelayXms(1000);
 0000002E  48FA      LDR         R0,=0x3E8
 00000030  F7FF      BL          DelayXms?T  ; T=0x0001  (1)
 00000032  FFE6      BL          DelayXms?T  ; T=0x0001  (2)
   63:    for(y = 0; y < 67; y ++)
 00000034  2400      MOV         R4,#0x0
 00000036          L_21:
   65:      LcdBlockWrite(0, y, 97, y, buffer2+y*147);
 00000036  1C21      MOV         R1,R4 ; y
 00000038  2093      MOV         R0,#0x93
 0000003A  4341      MUL         R1,R0
 0000003C  4800      LDR         R0,=buffer2 ; buffer2
 0000003E  1840      ADD         R0,R1 ; buffer2
 00000040  B401      PUSH        {R0}
 00000042  1C21      MOV         R1,R4 ; y
 00000044  1C23      MOV         R3,R4 ; y
 00000046  2000      MOV         R0,#0x0
 00000048  2261      MOV         R2,#0x61
 0000004A  F7FF      BL          LcdBlockWrite?T  ; T=0x0001  (1)
 0000004C  FFD9      BL          LcdBlockWrite?T  ; T=0x0001  (2)
 0000004E  B001      ADD         R13,#0x4
   66:     }
 00000050  3401      ADD         R4,#0x1
 00000052  1C20      MOV         R0,R4 ; y
 00000054  2843      CMP         R0,#0x43 ; y
ARM COMPILER V2.50a,  main                                                                 03/05/06  03:04:54  PAGE 5   

 00000056  D3EE      BCC         L_21  ; T=0x00000036
   67:    DelayXms(1000);
 00000058  48FA      LDR         R0,=0x3E8
 0000005A  F7FF      BL          DelayXms?T  ; T=0x0001  (1)
 0000005C  FFD1      BL          DelayXms?T  ; T=0x0001  (2)
   68:    for(y = 0; y < 67; y ++)
 0000005E  2400      MOV         R4,#0x0
 00000060          L_26:
   70:      LcdBlockWrite(0, y, 97, y, buffer3+y*147);
 00000060  1C21      MOV         R1,R4 ; y
 00000062  2093      MOV         R0,#0x93
 00000064  4341      MUL         R1,R0
 00000066  4800      LDR         R0,=buffer3 ; buffer3
 00000068  1840      ADD         R0,R1 ; buffer3
 0000006A  B401      PUSH        {R0}
 0000006C  1C21      MOV         R1,R4 ; y
 0000006E  1C23      MOV         R3,R4 ; y
 00000070  2000      MOV         R0,#0x0
 00000072  2261      MOV         R2,#0x61
 00000074  F7FF      BL          LcdBlockWrite?T  ; T=0x0001  (1)
 00000076  FFC4      BL          LcdBlockWrite?T  ; T=0x0001  (2)
 00000078  B001      ADD         R13,#0x4
   71:     }
 0000007A  3401      ADD         R4,#0x1
 0000007C  1C20      MOV         R0,R4 ; y
 0000007E  2843      CMP         R0,#0x43 ; y
 00000080  D3EE      BCC         L_26  ; T=0x00000060
   72:    DelayXms(1000);
 00000082  48FA      LDR         R0,=0x3E8
 00000084  F7FF      BL          DelayXms?T  ; T=0x0001  (1)
 00000086  FFBC      BL          DelayXms?T  ; T=0x0001  (2)
   73:    LcdSendCommand(0x21);        //display inversion ON
 00000088  2021      MOV         R0,#0x21
 0000008A  F7FF      BL          LcdSendCommand?T  ; T=0x0001  (1)
 0000008C  FFB9      BL          LcdSendCommand?T  ; T=0x0001  (2)
   74:    SetLcdCs();
 0000008E  4800      LDR         R1,=0x40000
 00000090  4800      LDR         R0,=0xFFFFF444
 00000092  6001      STR         R1,[R0,#0x0]
   75:    for(y = 0; y < 67; y ++)
 00000094  2400      MOV         R4,#0x0
 00000096          L_31:
   77:      LcdBlockWrite(0, y, 97, y, buffer4+y*147);
 00000096  1C21      MOV         R1,R4 ; y
 00000098  2093      MOV         R0,#0x93
 0000009A  4341      MUL         R1,R0
 0000009C  4800      LDR         R0,=buffer4 ; buffer4
 0000009E  1840      ADD         R0,R1 ; buffer4
 000000A0  B401      PUSH        {R0}
 000000A2  1C21      MOV         R1,R4 ; y
 000000A4  1C23      MOV         R3,R4 ; y
 000000A6  2000      MOV         R0,#0x0
 000000A8  2261      MOV         R2,#0x61
 000000AA  F7FF      BL          LcdBlockWrite?T  ; T=0x0001  (1)
 000000AC  FFA9      BL          LcdBlockWrite?T  ; T=0x0001  (2)
 000000AE  B001      ADD         R13,#0x4
   78:     }
 000000B0  3401      ADD         R4,#0x1
 000000B2  1C20      MOV         R0,R4 ; y
 000000B4  2843      CMP         R0,#0x43 ; y
 000000B6  D3EE      BCC         L_31  ; T=0x00000096
   79:    DelayXms(1000);
 000000B8  48FA      LDR         R0,=0x3E8
 000000BA  F7FF      BL          DelayXms?T  ; T=0x0001  (1)
 000000BC  FFA1      BL          DelayXms?T  ; T=0x0001  (2)
   80:    LcdSendCommand(0x20);        //display inversion OFF
ARM COMPILER V2.50a,  main                                                                 03/05/06  03:04:54  PAGE 6   

 000000BE  2020      MOV         R0,#0x20
 000000C0  F7FF      BL          LcdSendCommand?T  ; T=0x0001  (1)
 000000C2  FF9E      BL          LcdSendCommand?T  ; T=0x0001  (2)
   81:    SetLcdCs();
 000000C4  4800      LDR         R1,=0x40000
 000000C6  4800      LDR         R0,=0xFFFFF444
 000000C8  6001      STR         R1,[R0,#0x0]
   82:   }
 000000CA  E79E      B           L_17  ; T=0x0000000A
 000000CC            ; SCOPE-END
   83: }
 000000CC  BC08      POP         {R3}
 000000CE  4718      BX          R3
 000000D0          ENDP ; 'main'



Module Information          Static
----------------------------------
  code size            =    ------
  data size            =    ------
  const size           =    ------
End of Module Information.


ARM COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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