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

📄 lcd_demo.lst

📁 LPC2142 LCD12232的显示动画例程
💻 LST
📖 第 1 页 / 共 5 页
字号:
 PUBLIC         Io_Clr?T
 PUBLIC         Io_Set1?T
 PUBLIC         Io_Clr1?T
 PUBLIC         OUT_DATA?T
 PUBLIC         delay?T
 PUBLIC         delayms?T
 PUBLIC         OUTMD?T
 PUBLIC         OUTMI?T
 PUBLIC         OUTSD?T
 PUBLIC         OUTSI?T
 PUBLIC         lcdini?T
 PUBLIC         SetPage?T
 PUBLIC         SetAddress?T
 PUBLIC         PutCharR?T
 PUBLIC         PutCharL?T
 PUBLIC         DrawBmp?T
 PUBLIC         clrscr?T
 PUBLIC         DrawBmp1?T
 PUBLIC         Draw_word?T
 PUBLIC         delay1s?T
 PUBLIC         wait1?T
 PUBLIC         init_port?T
 PUBLIC         main



*** CODE SEGMENT '?PR?Io_Set?T?Lcd_Demo':
   43: void Io_Set(uchar pin)     //单个IO口置位函数
 00000000  1C01      MOV         R1,R0 ; pin
 00000002  ---- Variable 'pin' assigned to Register 'R1' ----
   44: {
 00000002            ; SCOPE-START
   45: unsigned int io_data=1;
 00000002  2201      MOV         R2,#0x1
 00000004  ---- Variable 'io_data' assigned to Register 'R2' ----
   46: io_data=io_data<<pin;
 00000004  1C08      MOV         R0,R1 ; pin
 00000006  0600      LSL         R0,R0,#0x18 ; pin
 00000008  0E00      LSR         R0,R0,#0x18
ARM COMPILER V2.42,  Lcd_Demo                                                              05/01/06  14:35:51  PAGE 11  

 0000000A  4082      LSL         R2,R0
   47: IOSET0=io_data;         //IOSET0为IO线上置位寄存器,1有效,0无
 0000000C  1C11      MOV         R1,R2 ; io_data
 0000000E  4800      LDR         R0,=0xE0028004
 00000010  6001      STR         R1,[R0,#0x0]
 00000012            ; SCOPE-END
   48: }
 00000012  4770      BX          R14
 00000014          ENDP ; 'Io_Set?T'


*** CODE SEGMENT '?PR?Io_Clr?T?Lcd_Demo':
   51: void Io_Clr(uchar pin)     //单个IO口清零函数
 00000000  1C01      MOV         R1,R0 ; pin
 00000002  ---- Variable 'pin' assigned to Register 'R1' ----
   52: {
 00000002            ; SCOPE-START
   53: unsigned int io_data=1;
 00000002  2201      MOV         R2,#0x1
 00000004  ---- Variable 'io_data' assigned to Register 'R2' ----
   54: io_data=io_data<<pin;
 00000004  1C08      MOV         R0,R1 ; pin
 00000006  0600      LSL         R0,R0,#0x18 ; pin
 00000008  0E00      LSR         R0,R0,#0x18
 0000000A  4082      LSL         R2,R0
   55: IOCLR0=io_data;         //IOCLR0为IO线上清零寄存器,1有效,0无
 0000000C  1C11      MOV         R1,R2 ; io_data
 0000000E  4800      LDR         R0,=0xE002800C
 00000010  6001      STR         R1,[R0,#0x0]
 00000012            ; SCOPE-END
   56: }
 00000012  4770      BX          R14
 00000014          ENDP ; 'Io_Clr?T'


*** CODE SEGMENT '?PR?Io_Set1?T?Lcd_Demo':
   59: void Io_Set1(uchar pin)    //单个IO口置位函数
 00000000  1C01      MOV         R1,R0 ; pin
 00000002  ---- Variable 'pin' assigned to Register 'R1' ----
   60: {
 00000002            ; SCOPE-START
   61: unsigned int io_data=1;
 00000002  2201      MOV         R2,#0x1
 00000004  ---- Variable 'io_data' assigned to Register 'R2' ----
   62: io_data=io_data<<pin;
 00000004  1C08      MOV         R0,R1 ; pin
 00000006  0600      LSL         R0,R0,#0x18 ; pin
 00000008  0E00      LSR         R0,R0,#0x18
 0000000A  4082      LSL         R2,R0
   63: IOSET1=io_data;         //IOSET0为IO线上置位寄存器,1有效,0无
 0000000C  1C11      MOV         R1,R2 ; io_data
 0000000E  4800      LDR         R0,=0xE0028014
 00000010  6001      STR         R1,[R0,#0x0]
 00000012            ; SCOPE-END
   64: }
 00000012  4770      BX          R14
 00000014          ENDP ; 'Io_Set1?T'


*** CODE SEGMENT '?PR?Io_Clr1?T?Lcd_Demo':
   67: void Io_Clr1(uchar pin)    //单个IO口清零函数
 00000000  1C01      MOV         R1,R0 ; pin
 00000002  ---- Variable 'pin' assigned to Register 'R1' ----
   68: {
 00000002            ; SCOPE-START
   69: unsigned int io_data=1;
 00000002  2201      MOV         R2,#0x1
 00000004  ---- Variable 'io_data' assigned to Register 'R2' ----
   70: io_data=io_data<<pin;
 00000004  1C08      MOV         R0,R1 ; pin
 00000006  0600      LSL         R0,R0,#0x18 ; pin
 00000008  0E00      LSR         R0,R0,#0x18
ARM COMPILER V2.42,  Lcd_Demo                                                              05/01/06  14:35:51  PAGE 12  

 0000000A  4082      LSL         R2,R0
   71: IOCLR1=io_data;         //IOCLR0为IO线上清零寄存器,1有效,0无
 0000000C  1C11      MOV         R1,R2 ; io_data
 0000000E  4800      LDR         R0,=0xE002801C
 00000010  6001      STR         R1,[R0,#0x0]
 00000012            ; SCOPE-END
   72: }
 00000012  4770      BX          R14
 00000014          ENDP ; 'Io_Clr1?T'


*** CODE SEGMENT '?PR?OUT_DATA?T?Lcd_Demo':
   73: void OUT_DATA(unsigned char data)
 00000000  B510      PUSH        {R4,LR}
 00000002  1C04      MOV         R4,R0 ; data
 00000004  ---- Variable 'data' assigned to Register 'R4' ----
   74: {
 00000004            ; SCOPE-START
   76: for(i=0;i<8;i++) 
 00000004  2300      MOV         R3,#0x0
 00000006  ---- Variable 'i' assigned to Register 'R3' ----
 00000006  E01B      B           L_3  ; T=0x00000040
 00000008          L_4:
   79:    if(data&1) {Io_Set1(i+16);}   //把相应的IO口置位或者清零
 00000008  1C20      MOV         R0,R4 ; data
 0000000A  0600      LSL         R0,R0,#0x18 ; data
 0000000C  0E00      LSR         R0,R0,#0x18
 0000000E  2101      MOV         R1,#0x1
 00000010  4208      TST         R0,R1
 00000012  D006      BEQ         L_6  ; T=0x00000022
 00000014  1C18      MOV         R0,R3 ; i
 00000016  0600      LSL         R0,R0,#0x18 ; i
 00000018  0E00      LSR         R0,R0,#0x18
 0000001A  3010      ADD         R0,#0x10
 0000001C  F7FF      BL          Io_Set1?T  ; T=0x0001  (1)
 0000001E  FFF0      BL          Io_Set1?T  ; T=0x0001  (2)
 00000020  E005      B           L_7  ; T=0x0000002E
 00000022          L_6:
   80:    else {Io_Clr1(i+16);}
 00000022  1C18      MOV         R0,R3 ; i
 00000024  0600      LSL         R0,R0,#0x18 ; i
 00000026  0E00      LSR         R0,R0,#0x18
 00000028  3010      ADD         R0,#0x10
 0000002A  F7FF      BL          Io_Clr1?T  ; T=0x0001  (1)
 0000002C  FFE9      BL          Io_Clr1?T  ; T=0x0001  (2)
 0000002E          L_7:
   81:    data=data>>1;
 0000002E  1C20      MOV         R0,R4 ; data
 00000030  0604      LSL         R4,R0,#0x18 ; data
 00000032  0E24      LSR         R4,R4,#0x18
 00000034  0864      LSR         R4,R4,#0x1
 00000036  0624      LSL         R4,R4,#0x18
 00000038  0E24      LSR         R4,R4,#0x18
   82:    }
 0000003A  3301      ADD         R3,#0x1
 0000003C  061B      LSL         R3,R3,#0x18
 0000003E  0E1B      LSR         R3,R3,#0x18
 00000040          L_3:
 00000040  1C18      MOV         R0,R3 ; i
 00000042  0600      LSL         R0,R0,#0x18 ; i
 00000044  0E00      LSR         R0,R0,#0x18
 00000046  2808      CMP         R0,#0x8
 00000048  DBDE      BLT         L_4  ; T=0x00000008
 0000004A            ; SCOPE-END
   83: }
 0000004A  BC10      POP         {R4}
 0000004C  BC08      POP         {R3}
 0000004E  4718      BX          R3
ARM COMPILER V2.42,  Lcd_Demo                                                              05/01/06  14:35:51  PAGE 13  

 00000050          ENDP ; 'OUT_DATA?T'


*** CODE SEGMENT '?PR?delay?T?Lcd_Demo':
   88: void delay(unsigned int i)
 00000000  ---- Variable 'i' assigned to Register 'R0' ----
   89: {
 00000000            ; SCOPE-START
   90:     unsigned int k=1000;
 00000000  49FA      LDR         R1,=0x3E8
 00000002  ---- Variable 'k' assigned to Register 'R1' ----
   91:     while(i>0)
 00000002  E000      B           L_8  ; T=0x00000006
 00000004          L_10:
   93:         i--;
 00000004  3801      SUB         R0,#0x1
   94:     }
 00000006          L_8:
 00000006  1C02      MOV         R2,R0 ; i
 00000008  2A00      CMP         R2,#0x0 ; i
 0000000A  D8FB      BHI         L_10  ; T=0x00000004
   95:     while(k>1)k--;
 0000000C          L_14:
 0000000C  3901      SUB         R1,#0x1
 0000000E  1C08      MOV         R0,R1 ; k
 00000010  2801      CMP         R0,#0x1 ; k
 00000012  D8FB      BHI         L_14  ; T=0x0000000C
 00000014            ; SCOPE-END
   96: }
 00000014  4770      BX          R14
 00000016          ENDP ; 'delay?T'


*** CODE SEGMENT '?PR?delayms?T?Lcd_Demo':
   99: void delayms (unsigned int i) {                        /* Delay function */
 00000000  ---- Variable 'i' assigned to Register 'R0' ----
 00000000            ; SCOPE-START
  101: while(i>1)
 00000000  E005      B           L_16  ; T=0x0000000E
  103:     for(n=65535;n>1;n--);
 00000002          L_24:
 00000002  4800      LDR         R1,=0xFFFF
 00000004  ---- Variable 'n' assigned to Register 'R1' ----
 00000004          L_20:
 00000004  3901      SUB         R1,#0x1
 00000006  1C0A      MOV         R2,R1 ; n
 00000008  2A01      CMP         R2,#0x1 ; n
 0000000A  D8FB      BHI         L_20  ; T=0x00000004
  104:     i--;
 0000000C  3801      SUB         R0,#0x1
  105: }
 0000000E          L_16:
 0000000E  1C01      MOV         R1,R0 ; i
 00000010  2901      CMP         R1,#0x1 ; i
 00000012  D8F6      BHI         L_24  ; T=0x00000002
 00000014            ; SCOPE-END
  106: }
 00000014  4770      BX          R14
 00000016          ENDP ; 'delayms?T'


*** CODE SEGMENT '?PR?OUTMD?T?Lcd_Demo':
  109: void    OUTMD(unsigned char i)
 00000000  B500      PUSH        {LR}
 00000002  1C03      MOV         R3,R0 ; i
 00000004  ---- Variable 'i' assigned to Register 'R3' ----
  111:     Io_Set(A0); //A0_1; //写数据
 00000004  2015      MOV         R0,#0x15
 00000006  F7FF      BL          Io_Set?T  ; T=0x0001  (1)
 00000008  FFFB      BL          Io_Set?T  ; T=0x0001  (2)
  112:     delay(1);
 0000000A  2001      MOV         R0,#0x1
ARM COMPILER V2.42,  Lcd_Demo                                                              05/01/06  14:35:51  PAGE 14  

 0000000C  F7FF      BL          delay?T  ; T=0x0001  (1)
 0000000E  FFF8      BL          delay?T  ; T=0x0001  (2)
  113:     Io_Set(E1); //E1_1;
 00000010  2004      MOV         R0,#0x4
 00000012  F7FF      BL          Io_Set?T  ; T=0x0001  (1)
 00000014  FFF5      BL          Io_Set?T  ; T=0x0001  (2)
  114:     delay(1);
 00000016  2001      MOV         R0,#0x1
 00000018  F7FF      BL          delay?T  ; T=0x0001  (1)
 0000001A  FFF2      BL          delay?T  ; T=0x0001  (2)
  115:     OUT_DATA(i);//  DATA=i;
 0000001C  1C18      MOV         R0,R3 ; i
 0000001E  0600      LSL         R0,R0,#0x18 ; i
 00000020  0E00      LSR         R0,R0,#0x18
 00000022  F7FF      BL          OUT_DATA?T  ; T=0x0001  (1)
 00000024  FFED      BL          OUT_DATA?T  ; T=0x0001  (2)
  116:     delay(1);
 00000026  2001      MOV         R0,#0x1
 00000028  F7FF      BL          delay?T  ; T=0x0001  (1)
 0000002A  FFEA      BL          delay?T  ; T=0x0001  (2)
  117:     Io_Clr(E1); //E1_0;
 0000002C  2004      MOV         R0,#0x4
 0000002E  F7FF      BL          Io_Clr?T  ; T=0x0001  (1)
 00000030  FFE7      BL          Io_Clr?T  ; T=0x0001  (2)
  119: }
 00000032  BC08      POP         {R3}
 00000034  4718      BX          R3
 00000036          ENDP ; 'OUTMD?T'


*** CODE SEGMENT '?PR?OUTMI?T?Lcd_Demo':
  122: void    OUTMI(unsigned char i)
 00000000  B500      PUSH        {LR}
 00000002  1C03      MOV         R3,R0 ; i
 00000004  ---- Variable 'i' assigned to Register 'R3' ----
  124:     Io_Clr(A0); //A0_0; //写指令
 00000004  2015      MOV         R0,#0x15
 00000006  F7FF      BL          Io_Clr?T  ; T=0x0001  (1)
 00000008  FFFB      BL          Io_Clr?T  ; T=0x0001  (2)
  125:     delay(1);
 0000000A  2001      MOV         R0,#0x1
 0000000C  F7FF      BL          delay?T  ; T=0x0001  (1)
 0000000E  FFF8      BL          delay?T  ; T=0x0001  (2)
  126:     Io_Set(E1); //E1_1;
 00000010  2004      MOV         R0,#0x4
 00000012  F7FF      BL          Io_Set?T  ; T=0x0001  (1)
 00000014  FFF5      BL          Io_Set?T  ; T=0x0001  (2)
  127:     delay(1);
 00000016  2001      MOV         R0,#0x1
 00000018  F7FF      BL          delay?T  ; T=0x0001  (1)
 0000001A  FFF2      BL          delay?T  ; T=0x0001  (2)
  128:     OUT_DATA(i);    //DATA=i;
 0000001C  1C18      MOV         R0,R3 ; i
 0000001E  0600      LSL         R0,R0,#0x18 ; i
 00000020  0E00      LSR         R0,R0,#0x18
 00000022  F7FF      BL          OUT_DATA?T  ; T=0x0001  (1)
 00000024  FFED      BL          OUT_DATA?T  ; T=0x0001  (2)
  129:     delay(1);

⌨️ 快捷键说明

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