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

📄 st7920.lst

📁 基于ARM的电梯控制程序
💻 LST
📖 第 1 页 / 共 3 页
字号:
 00000026  2005      MOV         R0,#0x5
 00000028  F7FF      BL          Delay?T  ; T=0x0001  (1)
 0000002A  FFEA      BL          Delay?T  ; T=0x0001  (2)
   24:         IO1SET=ST7920_Clk;               //SCK=1;
 0000002C  4800      LDR         R1,=0x40000
 0000002E  4800      LDR         R0,=0xE0028014
 00000030  6001      STR         R1,[R0,#0x0]
   25:          dat = (dat<<1);
 00000032  1C18      MOV         R0,R3 ; dat
 00000034  0603      LSL         R3,R0,#0x18 ; dat
 00000036  0E1B      LSR         R3,R3,#0x18
 00000038  005B      LSL         R3,R3,#0x1
   26:     }
 0000003A  3201      ADD         R2,#0x1
 0000003C  1C10      MOV         R0,R2 ; i
 0000003E  2808      CMP         R0,#0x8 ; i
 00000040  DBE1      BLT         L_9  ; T=0x00000006
 00000042            ; SCOPE-END
   27: }
 00000042  BC08      POP         {R3}
 00000044  4718      BX          R3
 00000046          ENDP ; 'SendByte?T'


*** CODE SEGMENT '?PR?SendCmd?T?ST7920':
   30:     void SendCmd(uint8 dat)                
 00000000  B510      PUSH        {R4,LR}
 00000002  1C04      MOV         R4,R0 ; dat
 00000004  ---- Variable 'dat' assigned to Register 'R4' ----
   32:      SendByte(0xf8);
 00000004  20F8      MOV         R0,#0xF8
 00000006  F7FF      BL          SendByte?T  ; T=0x0001  (1)
 00000008  FFFB      BL          SendByte?T  ; T=0x0001  (2)
   33:      SendByte(dat & 0xf0);
 0000000A  1C20      MOV         R0,R4 ; dat
 0000000C  0600      LSL         R0,R0,#0x18 ; dat
 0000000E  0E00      LSR         R0,R0,#0x18
 00000010  21F0      MOV         R1,#0xF0
 00000012  4008      AND         R0,R1
 00000014  F7FF      BL          SendByte?T  ; T=0x0001  (1)
 00000016  FFF4      BL          SendByte?T  ; T=0x0001  (2)
   34:      SendByte((dat<<4)&0xf0);
 00000018  1C20      MOV         R0,R4 ; dat
 0000001A  0600      LSL         R0,R0,#0x18 ; dat
 0000001C  0E00      LSR         R0,R0,#0x18
 0000001E  0100      LSL         R0,R0,#0x4
 00000020  21F0      MOV         R1,#0xF0
 00000022  4008      AND         R0,R1
 00000024  F7FF      BL          SendByte?T  ; T=0x0001  (1)
 00000026  FFEC      BL          SendByte?T  ; T=0x0001  (2)
ARM COMPILER V2.40a,  ST7920                                                               19/07/07  01:23:00  PAGE 6   

   35: }
 00000028  BC10      POP         {R4}
 0000002A  BC08      POP         {R3}
 0000002C  4718      BX          R3
 0000002E          ENDP ; 'SendCmd?T'


*** CODE SEGMENT '?PR?SendDat?T?ST7920':
   38:     void SendDat(uint8 dat)                
 00000000  B510      PUSH        {R4,LR}
 00000002  1C04      MOV         R4,R0 ; dat
 00000004  ---- Variable 'dat' assigned to Register 'R4' ----
   40:      SendByte(0xfa);
 00000004  20FA      MOV         R0,#0xFA
 00000006  F7FF      BL          SendByte?T  ; T=0x0001  (1)
 00000008  FFFB      BL          SendByte?T  ; T=0x0001  (2)
   41:      SendByte(dat & 0xf0);
 0000000A  1C20      MOV         R0,R4 ; dat
 0000000C  0600      LSL         R0,R0,#0x18 ; dat
 0000000E  0E00      LSR         R0,R0,#0x18
 00000010  21F0      MOV         R1,#0xF0
 00000012  4008      AND         R0,R1
 00000014  F7FF      BL          SendByte?T  ; T=0x0001  (1)
 00000016  FFF4      BL          SendByte?T  ; T=0x0001  (2)
   42:      SendByte((dat<<4)&0xf0);
 00000018  1C20      MOV         R0,R4 ; dat
 0000001A  0600      LSL         R0,R0,#0x18 ; dat
 0000001C  0E00      LSR         R0,R0,#0x18
 0000001E  0100      LSL         R0,R0,#0x4
 00000020  21F0      MOV         R1,#0xF0
 00000022  4008      AND         R0,R1
 00000024  F7FF      BL          SendByte?T  ; T=0x0001  (1)
 00000026  FFEC      BL          SendByte?T  ; T=0x0001  (2)
   43: }
 00000028  BC10      POP         {R4}
 0000002A  BC08      POP         {R3}
 0000002C  4718      BX          R3
 0000002E          ENDP ; 'SendDat?T'


*** CODE SEGMENT '?PR?DispChar?T?ST7920':
   48:     void DispChar(uint8 x_addr, uint8 data)
 00000000  B510      PUSH        {R4,LR}
 00000002  1C0C      MOV         R4,R1 ; data
 00000004  ---- Variable 'data' assigned to Register 'R4' ----
 00000004  1C01      MOV         R1,R0 ; x_addr
 00000006  ---- Variable 'x_addr' assigned to Register 'R1' ----
   50:     SendCmd(x_addr);
 00000006  1C08      MOV         R0,R1 ; x_addr
 00000008  0600      LSL         R0,R0,#0x18 ; x_addr
 0000000A  0E00      LSR         R0,R0,#0x18
 0000000C  F7FF      BL          SendCmd?T  ; T=0x0001  (1)
 0000000E  FFF8      BL          SendCmd?T  ; T=0x0001  (2)
   51:     SendDat(data);
 00000010  1C20      MOV         R0,R4 ; data
 00000012  0600      LSL         R0,R0,#0x18 ; data
 00000014  0E00      LSR         R0,R0,#0x18
 00000016  F7FF      BL          SendDat?T  ; T=0x0001  (1)
 00000018  FFF3      BL          SendDat?T  ; T=0x0001  (2)
   53: }
 0000001A  BC10      POP         {R4}
 0000001C  BC08      POP         {R3}
 0000001E  4718      BX          R3
 00000020          ENDP ; 'DispChar?T'


*** CODE SEGMENT '?PR?DispChars?T?ST7920':
   60:     void DispChars(uint8 Addr,uint8 *p,uint8 Num)
 00000000  B570      PUSH        {R4-R6,LR}
 00000002  1C16      MOV         R6,R2 ; Num
 00000004  ---- Variable 'Num' assigned to Register 'R6' ----
 00000004  1C0D      MOV         R5,R1 ; p
ARM COMPILER V2.40a,  ST7920                                                               19/07/07  01:23:00  PAGE 7   

 00000006  ---- Variable 'p' assigned to Register 'R5' ----
 00000006  1C01      MOV         R1,R0 ; Addr
 00000008  ---- Variable 'Addr' assigned to Register 'R1' ----
   61: {   
 00000008            ; SCOPE-START
   63:     SendCmd(Addr);
 00000008  1C08      MOV         R0,R1 ; Addr
 0000000A  0600      LSL         R0,R0,#0x18 ; Addr
 0000000C  0E00      LSR         R0,R0,#0x18
 0000000E  F7FF      BL          SendCmd?T  ; T=0x0001  (1)
 00000010  FFF7      BL          SendCmd?T  ; T=0x0001  (2)
   64:     for(i=0;i<Num;i++)
 00000012  2400      MOV         R4,#0x0
 00000014  ---- Variable 'i' assigned to Register 'R4' ----
 00000014  E009      B           L_15  ; T=0x0000002A
 00000016          L_16:
   65:     SendDat(*(p+i));
 00000016  1C20      MOV         R0,R4 ; i
 00000018  0602      LSL         R2,R0,#0x18 ; i
 0000001A  0E12      LSR         R2,R2,#0x18
 0000001C  1C28      MOV         R0,R5 ; p
 0000001E  5C80      LDRB        R0,[R0,R2]
 00000020  F7FF      BL          SendDat?T  ; T=0x0001  (1)
 00000022  FFEE      BL          SendDat?T  ; T=0x0001  (2)
 00000024  3401      ADD         R4,#0x1
 00000026  0624      LSL         R4,R4,#0x18
 00000028  0E24      LSR         R4,R4,#0x18
 0000002A          L_15:
 0000002A  1C30      MOV         R0,R6 ; Num
 0000002C  0601      LSL         R1,R0,#0x18 ; Num
 0000002E  0E09      LSR         R1,R1,#0x18
 00000030  1C20      MOV         R0,R4 ; i
 00000032  0600      LSL         R0,R0,#0x18 ; i
 00000034  0E00      LSR         R0,R0,#0x18
 00000036  4288      CMP         R0,R1
 00000038  D3ED      BCC         L_16  ; T=0x00000016
 0000003A            ; SCOPE-END
   66: }
 0000003A  BC70      POP         {R4-R6}
 0000003C  BC08      POP         {R3}
 0000003E  4718      BX          R3
 00000040          ENDP ; 'DispChars?T'


*** CODE SEGMENT '?PR?Disp?T?ST7920':
   68: void Disp(uint8 x_addr, uint8 *p)
 00000000  B570      PUSH        {R4-R6,LR}
 00000002  1C0E      MOV         R6,R1 ; p
 00000004  ---- Variable 'p' assigned to Register 'R6' ----
 00000004  1C01      MOV         R1,R0 ; x_addr
 00000006  ---- Variable 'x_addr' assigned to Register 'R1' ----
   69: {   
 00000006            ; SCOPE-START
   71:     uint8 i,flag=0;
 00000006  2500      MOV         R5,#0x0
 00000008  ---- Variable 'flag' assigned to Register 'R5' ----
   72:     SendCmd(x_addr);
 00000008  1C08      MOV         R0,R1 ; x_addr
 0000000A  0600      LSL         R0,R0,#0x18 ; x_addr
 0000000C  0E00      LSR         R0,R0,#0x18
 0000000E  F7FF      BL          SendCmd?T  ; T=0x0001  (1)
 00000010  FFF7      BL          SendCmd?T  ; T=0x0001  (2)
   73:     for(i=0;i<14;i++)
 00000012  2400      MOV         R4,#0x0
 00000014  ---- Variable 'i' assigned to Register 'R4' ----
 00000014  E016      B           L_20  ; T=0x00000044
 00000016          L_21:
   75:     if(*(p+i)=='\0')
ARM COMPILER V2.40a,  ST7920                                                               19/07/07  01:23:00  PAGE 8   

 00000016  1C20      MOV         R0,R4 ; i
 00000018  0602      LSL         R2,R0,#0x18 ; i
 0000001A  0E12      LSR         R2,R2,#0x18
 0000001C  1C30      MOV         R0,R6 ; p
 0000001E  5C80      LDRB        R0,[R0,R2]
 00000020  1C01      MOV         R1,R0
 00000022  2900      CMP         R1,#0x0
 00000024  D100      BNE         L_23  ; T=0x00000028
   76:     flag=1;
 00000026  2501      MOV         R5,#0x1
 00000028          L_23:
   77:     if(flag==0)
 00000028  1C29      MOV         R1,R5 ; flag
 0000002A  0609      LSL         R1,R1,#0x18 ; flag
 0000002C  0E09      LSR         R1,R1,#0x18
 0000002E  2900      CMP         R1,#0x0
 00000030  D102      BNE         L_24  ; T=0x00000038
   78:     SendDat((uint8)*(p+i));
 00000032  F7FF      BL          SendDat?T  ; T=0x0001  (1)
 00000034  FFE5      BL          SendDat?T  ; T=0x0001  (2)
 00000036  E002      B           L_18  ; T=0x0000003E
 00000038          L_24:
   80:     SendDat(' ');
 00000038  2020      MOV         R0,#0x20
 0000003A  F7FF      BL          SendDat?T  ; T=0x0001  (1)
 0000003C  FFE1      BL          SendDat?T  ; T=0x0001  (2)
   81:     }
 0000003E          L_18:
 0000003E  3401      ADD         R4,#0x1
 00000040  0624      LSL         R4,R4,#0x18
 00000042  0E24      LSR         R4,R4,#0x18
 00000044          L_20:
 00000044  1C20      MOV         R0,R4 ; i
 00000046  0600      LSL         R0,R0,#0x18 ; i
 00000048  0E00      LSR         R0,R0,#0x18
 0000004A  280E      CMP         R0,#0xE
 0000004C  DBE3      BLT         L_21  ; T=0x00000016
 0000004E            ; SCOPE-END
   84: }
 0000004E  BC70      POP         {R4-R6}
 00000050  BC08      POP         {R3}
 00000052  4718      BX          R3
 00000054          ENDP ; 'Disp?T'


*** CODE SEGMENT '?PR?Display?T?ST7920':
   90: void Display(uint8 x_add,uint8 high,uint8 low)
 00000000  B530      PUSH        {R4-R5,LR}
 00000002  1C14      MOV         R4,R2 ; low
 00000004  ---- Variable 'low' assigned to Register 'R4' ----
 00000004  1C0D      MOV         R5,R1 ; high
 00000006  ---- Variable 'high' assigned to Register 'R5' ----
 00000006  1C01      MOV         R1,R0 ; x_add
 00000008  ---- Variable 'x_add' assigned to Register 'R1' ----
   92:      SendCmd(x_add);
 00000008  1C08      MOV         R0,R1 ; x_add
 0000000A  0600      LSL         R0,R0,#0x18 ; x_add
 0000000C  0E00      LSR         R0,R0,#0x18
 0000000E  F7FF      BL          SendCmd?T  ; T=0x0001  (1)
 00000010  FFF7      BL          SendCmd?T  ; T=0x0001  (2)
   93:      SendDat(high);
 00000012  1C28      MOV         R0,R5 ; high
 00000014  0600      LSL         R0,R0,#0x18 ; high
 00000016  0E00      LSR         R0,R0,#0x18
 00000018  F7FF      BL          SendDat?T  ; T=0x0001  (1)
 0000001A  FFF2      BL          SendDat?T  ; T=0x0001  (2)
   94:      SendDat(low);
 0000001C  1C20      MOV         R0,R4 ; low
ARM COMPILER V2.40a,  ST7920                                                               19/07/07  01:23:00  PAGE 9   

 0000001E  0600      LSL         R0,R0,#0x18 ; low
 00000020  0E00      LSR         R0,R0,#0x18
 00000022  F7FF      BL          SendDat?T  ; T=0x0001  (1)
 00000024  FFED      BL          SendDat?T  ; T=0x0001  (2)
   95: }
 00000026  BC30      POP         {R4-R5}
 00000028  BC08      POP         {R3}
 0000002A  4718      BX          R3
 0000002C          ENDP ; 'Display?T'


*** CODE SEGMENT '?PR?PreDispIndoorCall?T?ST7920':
  104: void PreDispIndoorCall(uint8 *data,uint8 *p)
 00000000  B430      PUSH        {R4-R5}
 00000002  ---- Variable 'p' assigned to Register 'R1' ----
 00000002  ---- Variable 'data' assigned to Register 'R0' ----
  105: {
 00000002            ; SCOPE-START
  107:     for(i=0; i<16; i++) 
 00000002  2200      MOV         R2,#0x0
 00000004  ---- Variable 'i' assigned to Register 'R2' ----
 00000004  E017      B           L_28  ; T=0x00000036
 00000006          L_29:
  109:     if((0x40&(*(data+i)))!=0)

⌨️ 快捷键说明

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