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

📄 test.lst

📁 学习的例程!和通用的LCD1602的有区别
💻 LST
📖 第 1 页 / 共 2 页
字号:
 0000002E  2106      MOV         R1,#0x6
 00000030  F7FF      BL          LCD_write_char?T  ; T=0x0001  (1)
 00000032  FFE6      BL          LCD_write_char?T  ; T=0x0001  (2)
   44: delay_nms(40); 
 00000034  2028      MOV         R0,#0x28
 00000036  F7FF      BL          delay_nms?T  ; T=0x0001  (1)
 00000038  FFE3      BL          delay_nms?T  ; T=0x0001  (2)
   47:  LCD_write_char(1,0x01);  //清屏
 0000003A  2101      MOV         R1,#0x1
 0000003C  1C08      MOV         R0,R1
 0000003E  F7FF      BL          LCD_write_char?T  ; T=0x0001  (1)
 00000040  FFDF      BL          LCD_write_char?T  ; T=0x0001  (2)
   48:  delay_nms(40);
 00000042  2028      MOV         R0,#0x28
 00000044  F7FF      BL          delay_nms?T  ; T=0x0001  (1)
 00000046  FFDC      BL          delay_nms?T  ; T=0x0001  (2)
   51:  LCD_write_char(1,0x0f);  //显示开,光标开,闪烁开
 00000048  2001      MOV         R0,#0x1
 0000004A  210F      MOV         R1,#0xF
 0000004C  F7FF      BL          LCD_write_char?T  ; T=0x0001  (1)
ARM COMPILER V2.42,  test                                                                  20/12/05  15:29:58  PAGE 7   

 0000004E  FFD8      BL          LCD_write_char?T  ; T=0x0001  (2)
   52:  delay_nms(40);
 00000050  2028      MOV         R0,#0x28
 00000052  F7FF      BL          delay_nms?T  ; T=0x0001  (1)
 00000054  FFD5      BL          delay_nms?T  ; T=0x0001  (2)
 00000056            ; SCOPE-END
   54: }
 00000056  BC10      POP         {R4}
 00000058  BC08      POP         {R3}
 0000005A  4718      BX          R3
 0000005C          ENDP ; 'LCD_init?T'


*** CODE SEGMENT '?PR?LCD_write_char?T?test':
   56: void LCD_write_char(uchar command,uchar data) // 写数据
 00000000  B570      PUSH        {R4-R6,LR}
 00000002  1C0D      MOV         R5,R1 ; data
 00000004  ---- Variable 'data' assigned to Register 'R5' ----
 00000004  1C06      MOV         R6,R0 ; command
 00000006  ---- Variable 'command' assigned to Register 'R6' ----
   57: {
 00000006            ; SCOPE-START
   58:  uchar i=0,temp=0;
 00000006  2400      MOV         R4,#0x0
 00000008  ---- Variable 'i' assigned to Register 'R4' ----
   59:  delay_nus(50);
 00000008  2032      MOV         R0,#0x32
 0000000A  F7FF      BL          delay_nus?T  ; T=0x0001  (1)
 0000000C  FFF9      BL          delay_nus?T  ; T=0x0001  (2)
   61:  if(command==0) io_set(LCD_RS);  //RS=1
 0000000E  1C30      MOV         R0,R6 ; command
 00000010  0600      LSL         R0,R0,#0x18 ; command
 00000012  0E00      LSR         R0,R0,#0x18
 00000014  2800      CMP         R0,#0x0
 00000016  D103      BNE         L_21  ; T=0x00000020
 00000018  2008      MOV         R0,#0x8
 0000001A  F7FF      BL          io_set?T  ; T=0x0001  (1)
 0000001C  FFF1      BL          io_set?T  ; T=0x0001  (2)
 0000001E  E002      B           L_27  ; T=0x00000026
 00000020          L_21:
   62:  else io_clear(LCD_RS); 
 00000020  2008      MOV         R0,#0x8
 00000022  F7FF      BL          io_clear?T  ; T=0x0001  (1)
 00000024  FFED      BL          io_clear?T  ; T=0x0001  (2)
   64:  for(i=0;i<8;i++) 
 00000026          L_27:
 00000026  2400      MOV         R4,#0x0
 00000028  E01B      B           L_25  ; T=0x00000062
 0000002A          L_26:
   67:    if(data&1) {io_set(i+24);}    //把相应的IO口置位或者清零
 0000002A  1C28      MOV         R0,R5 ; data
 0000002C  0600      LSL         R0,R0,#0x18 ; data
 0000002E  0E00      LSR         R0,R0,#0x18
 00000030  2101      MOV         R1,#0x1
 00000032  4208      TST         R0,R1
 00000034  D006      BEQ         L_28  ; T=0x00000044
 00000036  1C20      MOV         R0,R4 ; i
 00000038  0600      LSL         R0,R0,#0x18 ; i
 0000003A  0E00      LSR         R0,R0,#0x18
 0000003C  3018      ADD         R0,#0x18
 0000003E  F7FF      BL          io_set?T  ; T=0x0001  (1)
 00000040  FFDF      BL          io_set?T  ; T=0x0001  (2)
 00000042  E005      B           L_29  ; T=0x00000050
 00000044          L_28:
   68:    else {io_clear(i+24);}
 00000044  1C20      MOV         R0,R4 ; i
 00000046  0600      LSL         R0,R0,#0x18 ; i
 00000048  0E00      LSR         R0,R0,#0x18
ARM COMPILER V2.42,  test                                                                  20/12/05  15:29:58  PAGE 8   

 0000004A  3018      ADD         R0,#0x18
 0000004C  F7FF      BL          io_clear?T  ; T=0x0001  (1)
 0000004E  FFD8      BL          io_clear?T  ; T=0x0001  (2)
 00000050          L_29:
   69:    data=data>>1;
 00000050  1C28      MOV         R0,R5 ; data
 00000052  0605      LSL         R5,R0,#0x18 ; data
 00000054  0E2D      LSR         R5,R5,#0x18
 00000056  086D      LSR         R5,R5,#0x1
 00000058  062D      LSL         R5,R5,#0x18
 0000005A  0E2D      LSR         R5,R5,#0x18
   70:    }                       //写入8位控制字
 0000005C  3401      ADD         R4,#0x1
 0000005E  0624      LSL         R4,R4,#0x18
 00000060  0E24      LSR         R4,R4,#0x18
 00000062          L_25:
 00000062  1C20      MOV         R0,R4 ; i
 00000064  0600      LSL         R0,R0,#0x18 ; i
 00000066  0E00      LSR         R0,R0,#0x18
 00000068  2808      CMP         R0,#0x8
 0000006A  DBDE      BLT         L_26  ; T=0x0000002A
   72:   delay_nus(20);
 0000006C  2014      MOV         R0,#0x14
 0000006E  F7FF      BL          delay_nus?T  ; T=0x0001  (1)
 00000070  FFC7      BL          delay_nus?T  ; T=0x0001  (2)
   74:   io_clear(LCD_EN);
 00000072  200A      MOV         R0,#0xA
 00000074  F7FF      BL          io_clear?T  ; T=0x0001  (1)
 00000076  FFC4      BL          io_clear?T  ; T=0x0001  (2)
   75:   delay_nus(200);
 00000078  20C8      MOV         R0,#0xC8
 0000007A  F7FF      BL          delay_nus?T  ; T=0x0001  (1)
 0000007C  FFC1      BL          delay_nus?T  ; T=0x0001  (2)
   76:   io_set(LCD_EN);
 0000007E  200A      MOV         R0,#0xA
 00000080  F7FF      BL          io_set?T  ; T=0x0001  (1)
 00000082  FFBE      BL          io_set?T  ; T=0x0001  (2)
   77:   delay_nus(200);
 00000084  20C8      MOV         R0,#0xC8
 00000086  F7FF      BL          delay_nus?T  ; T=0x0001  (1)
 00000088  FFBB      BL          delay_nus?T  ; T=0x0001  (2)
 0000008A            ; SCOPE-END
   79: }
 0000008A  BC70      POP         {R4-R6}
 0000008C  BC08      POP         {R3}
 0000008E  4718      BX          R3
 00000090          ENDP ; 'LCD_write_char?T'


*** CODE SEGMENT '?PR?LCD_set_xy?T?test':
   81: void LCD_set_xy( unsigned char x, unsigned char y )  //写地址函数
 00000000  B510      PUSH        {R4,LR}
 00000002  ---- Variable 'y' assigned to Register 'R1' ----
 00000002  1C02      MOV         R2,R0 ; x
 00000004  ---- Variable 'x' assigned to Register 'R2' ----
 00000004  ---- Variable 'address' assigned to Register 'R4' ----
   82:   {
 00000004            ; SCOPE-START
   84:     if (y == 0) address = 0x80 + x;
 00000004  1C08      MOV         R0,R1 ; y
 00000006  0600      LSL         R0,R0,#0x18 ; y
 00000008  0E00      LSR         R0,R0,#0x18
 0000000A  2800      CMP         R0,#0x0
 0000000C  D106      BNE         L_30  ; T=0x0000001C
 0000000E  1C10      MOV         R0,R2 ; x
 00000010  0604      LSL         R4,R0,#0x18 ; x
 00000012  0E24      LSR         R4,R4,#0x18
 00000014  3480      ADD         R4,#0x80
ARM COMPILER V2.42,  test                                                                  20/12/05  15:29:58  PAGE 9   

 00000016  0624      LSL         R4,R4,#0x18
 00000018  0E24      LSR         R4,R4,#0x18
 0000001A  E005      B           L_31  ; T=0x00000028
 0000001C          L_30:
   86:        address = 0xc0 + x;
 0000001C  1C10      MOV         R0,R2 ; x
 0000001E  0604      LSL         R4,R0,#0x18 ; x
 00000020  0E24      LSR         R4,R4,#0x18
 00000022  34C0      ADD         R4,#0xC0
 00000024  0624      LSL         R4,R4,#0x18
 00000026  0E24      LSR         R4,R4,#0x18
 00000028          L_31:
   87:     LCD_write_char(1,address);
 00000028  1C20      MOV         R0,R4 ; address
 0000002A  0601      LSL         R1,R0,#0x18 ; address
 0000002C  0E09      LSR         R1,R1,#0x18
 0000002E  2001      MOV         R0,#0x1
 00000030  F7FF      BL          LCD_write_char?T  ; T=0x0001  (1)
 00000032  FFE6      BL          LCD_write_char?T  ; T=0x0001  (2)
 00000034            ; SCOPE-END
   88:   }
 00000034  BC10      POP         {R4}
 00000036  BC08      POP         {R3}
 00000038  4718      BX          R3
 0000003A          ENDP ; 'LCD_set_xy?T'


*** CODE SEGMENT '?PR?main?test':
   92: void main(void)
 00000000  B500      PUSH        {LR}
   93: {
 00000002            ; SCOPE-START
   95: PMC_PCER=0x0F;      //PMC外设时钟使能
 00000002  210F      MOV         R1,#0xF
 00000004  4800      LDR         R0,=0xFFFFFC10
 00000006  6001      STR         R1,[R0,#0x0]
   96: PIO_PER=0xffffffff;            //PIOA0-31作为I/O使用
 00000008  4800      LDR         R1,=0xFFFFFFFF
 0000000A  4800      LDR         R0,=0xFFFFF400
 0000000C  6001      STR         R1,[R0,#0x0]
   97: PIO_OER=0xffffffff;            //I/O输出使能
 0000000E  4800      LDR         R0,=0xFFFFF410
 00000010  6001      STR         R1,[R0,#0x0]
   98: delay_nus(10);
 00000012  200A      MOV         R0,#0xA
 00000014  F7FF      BL          delay_nus?T  ; T=0x0001  (1)
 00000016  FFF4      BL          delay_nus?T  ; T=0x0001  (2)
   99: LCD_init();          //1602初始化
 00000018  F7FF      BL          LCD_init?T  ; T=0x0001  (1)
 0000001A  FFF2      BL          LCD_init?T  ; T=0x0001  (2)
  101: while(1)
 0000001C          L_34:
  103:          LCD_set_xy(0,0);
 0000001C  2100      MOV         R1,#0x0
 0000001E  1C08      MOV         R0,R1
 00000020  F7FF      BL          LCD_set_xy?T  ; T=0x0001  (1)
 00000022  FFEE      BL          LCD_set_xy?T  ; T=0x0001  (2)
  104:          LCD_write_char(0,'m');
 00000024  2000      MOV         R0,#0x0
 00000026  216D      MOV         R1,#0x6D
 00000028  F7FF      BL          LCD_write_char?T  ; T=0x0001  (1)
 0000002A  FFEA      BL          LCD_write_char?T  ; T=0x0001  (2)
  105:          LCD_write_char(0,'y');
 0000002C  2000      MOV         R0,#0x0
 0000002E  2179      MOV         R1,#0x79
 00000030  F7FF      BL          LCD_write_char?T  ; T=0x0001  (1)
 00000032  FFE6      BL          LCD_write_char?T  ; T=0x0001  (2)
  106:          LCD_write_char(0,'h');
ARM COMPILER V2.42,  test                                                                  20/12/05  15:29:58  PAGE 10  

 00000034  2000      MOV         R0,#0x0
 00000036  2168      MOV         R1,#0x68
 00000038  F7FF      BL          LCD_write_char?T  ; T=0x0001  (1)
 0000003A  FFE2      BL          LCD_write_char?T  ; T=0x0001  (2)
  107:          LCD_write_char(0,'k');
 0000003C  2000      MOV         R0,#0x0
 0000003E  216B      MOV         R1,#0x6B
 00000040  F7FF      BL          LCD_write_char?T  ; T=0x0001  (1)
 00000042  FFDE      BL          LCD_write_char?T  ; T=0x0001  (2)
  108:          LCD_write_char(0,'0');
 00000044  2000      MOV         R0,#0x0
 00000046  2130      MOV         R1,#0x30
 00000048  F7FF      BL          LCD_write_char?T  ; T=0x0001  (1)
 0000004A  FFDA      BL          LCD_write_char?T  ; T=0x0001  (2)
  109:          LCD_write_char(0,'0');
 0000004C  2000      MOV         R0,#0x0
 0000004E  2130      MOV         R1,#0x30
 00000050  F7FF      BL          LCD_write_char?T  ; T=0x0001  (1)
 00000052  FFD6      BL          LCD_write_char?T  ; T=0x0001  (2)
  110:          LCD_write_char(0,'7');
 00000054  2000      MOV         R0,#0x0
 00000056  2137      MOV         R1,#0x37
 00000058  F7FF      BL          LCD_write_char?T  ; T=0x0001  (1)
 0000005A  FFD2      BL          LCD_write_char?T  ; T=0x0001  (2)
  113:          delay_nms(1000);  
 0000005C  48FA      LDR         R0,=0x3E8
 0000005E  F7FF      BL          delay_nms?T  ; T=0x0001  (1)
 00000060  FFCF      BL          delay_nms?T  ; T=0x0001  (2)
  114:          LCD_set_xy(4,1);
 00000062  2004      MOV         R0,#0x4
 00000064  2101      MOV         R1,#0x1
 00000066  F7FF      BL          LCD_set_xy?T  ; T=0x0001  (1)
 00000068  FFCB      BL          LCD_set_xy?T  ; T=0x0001  (2)
  115:          LCD_write_char(0,'m');
 0000006A  2000      MOV         R0,#0x0
 0000006C  216D      MOV         R1,#0x6D
 0000006E  F7FF      BL          LCD_write_char?T  ; T=0x0001  (1)
 00000070  FFC7      BL          LCD_write_char?T  ; T=0x0001  (2)
  116:          LCD_write_char(0,'c');
 00000072  2000      MOV         R0,#0x0
 00000074  2163      MOV         R1,#0x63
 00000076  F7FF      BL          LCD_write_char?T  ; T=0x0001  (1)
 00000078  FFC3      BL          LCD_write_char?T  ; T=0x0001  (2)
  117:          LCD_write_char(0,'u');
 0000007A  2000      MOV         R0,#0x0
 0000007C  2175      MOV         R1,#0x75
 0000007E  F7FF      BL          LCD_write_char?T  ; T=0x0001  (1)
 00000080  FFBF      BL          LCD_write_char?T  ; T=0x0001  (2)
  118:          LCD_write_char(0,'z');
 00000082  2000      MOV         R0,#0x0
 00000084  217A      MOV         R1,#0x7A
 00000086  F7FF      BL          LCD_write_char?T  ; T=0x0001  (1)
 00000088  FFBB      BL          LCD_write_char?T  ; T=0x0001  (2)
  119:          LCD_write_char(0,'o');
 0000008A  2000      MOV         R0,#0x0
 0000008C  216F      MOV         R1,#0x6F
 0000008E  F7FF      BL          LCD_write_char?T  ; T=0x0001  (1)
 00000090  FFB7      BL          LCD_write_char?T  ; T=0x0001  (2)
  120:          LCD_write_char(0,'n');
 00000092  2000      MOV         R0,#0x0
 00000094  216E      MOV         R1,#0x6E
 00000096  F7FF      BL          LCD_write_char?T  ; T=0x0001  (1)
 00000098  FFB3      BL          LCD_write_char?T  ; T=0x0001  (2)
  121:          LCD_write_char(0,'e');
 0000009A  2000      MOV         R0,#0x0
 0000009C  2165      MOV         R1,#0x65
ARM COMPILER V2.42,  test                                                                  20/12/05  15:29:58  PAGE 11  

 0000009E  F7FF      BL          LCD_write_char?T  ; T=0x0001  (1)
 000000A0  FFAF      BL          LCD_write_char?T  ; T=0x0001  (2)
  122:          LCD_write_char(0,'.');
 000000A2  2000      MOV         R0,#0x0
 000000A4  212E      MOV         R1,#0x2E
 000000A6  F7FF      BL          LCD_write_char?T  ; T=0x0001  (1)
 000000A8  FFAB      BL          LCD_write_char?T  ; T=0x0001  (2)
  123:          LCD_write_char(0,'c');
 000000AA  2000      MOV         R0,#0x0
 000000AC  2163      MOV         R1,#0x63
 000000AE  F7FF      BL          LCD_write_char?T  ; T=0x0001  (1)
 000000B0  FFA7      BL          LCD_write_char?T  ; T=0x0001  (2)
  124:          LCD_write_char(0,'o');
 000000B2  2000      MOV         R0,#0x0
 000000B4  216F      MOV         R1,#0x6F
 000000B6  F7FF      BL          LCD_write_char?T  ; T=0x0001  (1)
 000000B8  FFA3      BL          LCD_write_char?T  ; T=0x0001  (2)
  125:          LCD_write_char(0,'m');
 000000BA  2000      MOV         R0,#0x0
 000000BC  216D      MOV         R1,#0x6D
 000000BE  F7FF      BL          LCD_write_char?T  ; T=0x0001  (1)
 000000C0  FF9F      BL          LCD_write_char?T  ; T=0x0001  (2)
  127:          delay_nms(1000);
 000000C2  48FA      LDR         R0,=0x3E8
 000000C4  F7FF      BL          delay_nms?T  ; T=0x0001  (1)
 000000C6  FF9C      BL          delay_nms?T  ; T=0x0001  (2)
  128:    }
 000000C8  E7A8      B           L_34  ; T=0x0000001C
 000000CA            ; SCOPE-END
 000000CA  BC08      POP         {R3}
 000000CC  4718      BX          R3
 000000CE          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 + -