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

📄 lcdtest.lst

📁 AT91M40800源码
💻 LST
📖 第 1 页 / 共 5 页
字号:
   \                     ??delayMs_2:
   \   00000008   0120B0E1           MOVS     R2,R1
   \   0000000C   011052E2           SUBS     R1,R2,#+1
   \   00000010   000052E3           CMP      R2,#+0
   \   00000014   FBFFFF1A           BNE      ??delayMs_2
    167              }       
   \                     ??delayMs_0:
   \   00000018   0010B0E1           MOVS     R1,R0
   \   0000001C   010051E2           SUBS     R0,R1,#+1
   \   00000020   000051E3           CMP      R1,#+0
   \   00000024   F6FFFF1A           BNE      ??delayMs_1
    168          }
   \   00000028   1EFF2FE1           BX       LR               ;; return

   \                                 In segment CODE, align 4, keep-with-next
    169          void delayus(unsigned int counter)
    170          {
   \                     delayus:
   \   00000000   040000EA           B        ??delayus_0
    171              unsigned int  i;
    172              
    173              while(counter--)
    174              {
    175                  i = 3;          //1ms延时基数.
   \                     ??delayus_1:
   \   00000004   0310A0E3           MOV      R1,#+3
    176                  while(i--);
   \                     ??delayus_2:
   \   00000008   0120B0E1           MOVS     R2,R1
   \   0000000C   011052E2           SUBS     R1,R2,#+1
   \   00000010   000052E3           CMP      R2,#+0
   \   00000014   FBFFFF1A           BNE      ??delayus_2
    177              }       
   \                     ??delayus_0:
   \   00000018   0010B0E1           MOVS     R1,R0
   \   0000001C   010051E2           SUBS     R0,R1,#+1
   \   00000020   000051E3           CMP      R1,#+0
   \   00000024   F6FFFF1A           BNE      ??delayus_1
    178          }
   \   00000028   1EFF2FE1           BX       LR               ;; return

   \                                 In segment CODE, align 4, keep-with-next
    179          void SEND2LCM(char data_reg,unsigned int dat)
    180          {	char i;
   \                     SEND2LCM:
   \   00000000   10402DE9           PUSH     {R4,LR}
   \   00000004   0140B0E1           MOVS     R4,R1
    181          	
    182          	__PIO_CODRB=LCD_CS;   //LCD_CS=0
   \   00000008   CB10E0E3           MVN      R1,#+203
   \   0000000C   FF1CC1E3           BIC      R1,R1,#0xFF00
   \   00000010   8027A0E3           MOV      R2,#+33554432
   \   00000014   002081E5           STR      R2,[R1, #+0]
    183          	
    184          	if(data_reg)
   \   00000018   000050E3           CMP      R0,#+0
   \   0000001C   0400000A           BEQ      ??SEND2LCM_0
    185          	    { __PIO_SODRB=LCD_RS;}		        //LCD_RS=1
   \   00000020   CF00E0E3           MVN      R0,#+207
   \   00000024   FF0CC0E3           BIC      R0,R0,#0xFF00
   \   00000028   4017A0E3           MOV      R1,#+16777216
   \   0000002C   001080E5           STR      R1,[R0, #+0]
   \   00000030   030000EA           B        ??SEND2LCM_1
    186          	else 
    187          	    { __PIO_CODRB=LCD_RS;}			//LCD_RS=0
   \                     ??SEND2LCM_0:
   \   00000034   CB00E0E3           MVN      R0,#+203
   \   00000038   FF0CC0E3           BIC      R0,R0,#0xFF00
   \   0000003C   4017A0E3           MOV      R1,#+16777216
   \   00000040   001080E5           STR      R1,[R0, #+0]
    188          	
    189          	delayus(1);
   \                     ??SEND2LCM_1:
   \   00000044   0100A0E3           MOV      R0,#+1
   \   00000048   ........           BL       delayus
    190          	
    191          	
    192          	for(i=0;i<8;i++)
   \   0000004C   0000A0E3           MOV      R0,#+0
   \   00000050   090000EA           B        ??SEND2LCM_2
    193          		{       __PIO_CODRB=LCD_CLK;	 //LCD_CLK=0;
    194          		
    195          			if((dat & 0x80)!=0) 
    196          			    __PIO_SODRB=LCD_DAT; //LCD_DAT=1
    197          			else
    198          			    __PIO_CODRB=LCD_DAT; //LCD_DAT=0			
   \                     ??SEND2LCM_3:
   \   00000054   CB10E0E3           MVN      R1,#+203
   \   00000058   FF1CC1E3           BIC      R1,R1,#0xFF00
   \   0000005C   4029A0E3           MOV      R2,#+1048576
   \   00000060   002081E5           STR      R2,[R1, #+0]
    199          			    
    200          			  
    201          			__PIO_SODRB=LCD_CLK;	 //LCD_CLK=1
   \                     ??SEND2LCM_4:
   \   00000064   CF10E0E3           MVN      R1,#+207
   \   00000068   FF1CC1E3           BIC      R1,R1,#0xFF00
   \   0000006C   8028A0E3           MOV      R2,#+8388608
   \   00000070   002081E5           STR      R2,[R1, #+0]
    202          			
    203          			dat=dat<<1;
   \   00000074   8440B0E1           LSLS     R4,R4,#+1
   \   00000078   010090E2           ADDS     R0,R0,#+1
   \                     ??SEND2LCM_2:
   \   0000007C   FF0010E2           ANDS     R0,R0,#0xFF      ;; Zero extend
   \   00000080   080050E3           CMP      R0,#+8
   \   00000084   0A00002A           BCS      ??SEND2LCM_5
   \   00000088   CB10E0E3           MVN      R1,#+203
   \   0000008C   FF1CC1E3           BIC      R1,R1,#0xFF00
   \   00000090   8028A0E3           MOV      R2,#+8388608
   \   00000094   002081E5           STR      R2,[R1, #+0]
   \   00000098   800014E3           TST      R4,#0x80
   \   0000009C   ECFFFF0A           BEQ      ??SEND2LCM_3
   \   000000A0   CF10E0E3           MVN      R1,#+207
   \   000000A4   FF1CC1E3           BIC      R1,R1,#0xFF00
   \   000000A8   4029A0E3           MOV      R2,#+1048576
   \   000000AC   002081E5           STR      R2,[R1, #+0]
   \   000000B0   EBFFFFEA           B        ??SEND2LCM_4
    204          		}
    205          
    206          	
    207          	__PIO_SODRB=LCD_CS;			//LCD_CS=1
   \                     ??SEND2LCM_5:
   \   000000B4   CF00E0E3           MVN      R0,#+207
   \   000000B8   FF0CC0E3           BIC      R0,R0,#0xFF00
   \   000000BC   8017A0E3           MOV      R1,#+33554432
   \   000000C0   001080E5           STR      R1,[R0, #+0]
    208          	delayus(1);	
   \   000000C4   0100A0E3           MOV      R0,#+1
   \   000000C8   ........           BL       delayus
    209          }
   \   000000CC   1040BDE8           POP      {R4,LR}
   \   000000D0   1EFF2FE1           BX       LR               ;; return
    210          

   \                                 In segment CODE, align 4, keep-with-next
    211          void LCDclear(unsigned int dat1,unsigned int dat2)
    212          {unsigned int i,j;
   \                     LCDclear:
   \   00000000   F0402DE9           PUSH     {R4-R7,LR}
   \   00000004   0040B0E1           MOVS     R4,R0
   \   00000008   0150B0E1           MOVS     R5,R1
    213          
    214          for(i=0xb0;i<0xb8;i++)
   \   0000000C   B060A0E3           MOV      R6,#+176
   \   00000010   090000EA           B        ??LCDclear_0
    215          	{
    216          	 SEND2LCM(0,i);
    217          	 SEND2LCM(0,0x10);
    218          	 SEND2LCM(0,0x00);
    219          	 	for(j=0x00;j<0x41;j++)
    220          	 	{SEND2LCM(1,dat1);
   \                     ??LCDclear_1:
   \   00000014   0410B0E1           MOVS     R1,R4
   \   00000018   0100A0E3           MOV      R0,#+1
   \   0000001C   ........           BL       SEND2LCM
    221           	 	 SEND2LCM(1,dat2);
   \   00000020   0510B0E1           MOVS     R1,R5
   \   00000024   0100A0E3           MOV      R0,#+1
   \   00000028   ........           BL       SEND2LCM
    222          	 	}
   \   0000002C   017097E2           ADDS     R7,R7,#+1
   \                     ??LCDclear_2:
   \   00000030   410057E3           CMP      R7,#+65
   \   00000034   F6FFFF3A           BCC      ??LCDclear_1
   \   00000038   016096E2           ADDS     R6,R6,#+1
   \                     ??LCDclear_0:
   \   0000003C   B80056E3           CMP      R6,#+184
   \   00000040   0A00002A           BCS      ??LCDclear_3
   \   00000044   0610B0E1           MOVS     R1,R6
   \   00000048   0000A0E3           MOV      R0,#+0
   \   0000004C   ........           BL       SEND2LCM
   \   00000050   1010A0E3           MOV      R1,#+16
   \   00000054   0000A0E3           MOV      R0,#+0
   \   00000058   ........           BL       SEND2LCM
   \   0000005C   0010A0E3           MOV      R1,#+0
   \   00000060   0000A0E3           MOV      R0,#+0
   \   00000064   ........           BL       SEND2LCM
   \   00000068   0070A0E3           MOV      R7,#+0
   \   0000006C   EFFFFFEA           B        ??LCDclear_2
    223          	}
    224          
    225          }
   \                     ??LCDclear_3:
   \   00000070   F040BDE8           POP      {R4-R7,LR}
   \   00000074   1EFF2FE1           BX       LR               ;; return
    226          

   \                                 In segment CODE, align 4, keep-with-next
    227          void dipBMP(unsigned char *p)
    228          {unsigned char i,j;
   \                     dipBMP:
   \   00000000   70402DE9           PUSH     {R4-R6,LR}
   \   00000004   0040B0E1           MOVS     R4,R0
    229          
    230          for(i=0xb0;i<0xb8;i++)
   \   00000008   B050A0E3           MOV      R5,#+176
   \   0000000C   080000EA           B        ??dipBMP_0
    231          	{
    232          	 SEND2LCM(0,i);
    233          	 SEND2LCM(0,0x10);
    234          	 SEND2LCM(0,0x00);
    235          	 	for(j=0x02;j<0x82;j++)
    236          	 	{SEND2LCM(1,*p++);
   \                     ??dipBMP_1:
   \   00000010   0010D4E5           LDRB     R1,[R4, #+0]
   \   00000014   0100A0E3           MOV      R0,#+1
   \   00000018   ........           BL       SEND2LCM
   \   0000001C   014094E2           ADDS     R4,R4,#+1
    237          	 	}
   \   00000020   016096E2           ADDS     R6,R6,#+1
   \                     ??dipBMP_2:
   \   00000024   FF6016E2           ANDS     R6,R6,#0xFF      ;; Zero extend
   \   00000028   820056E3           CMP      R6,#+130
   \   0000002C   F7FFFF3A           BCC      ??dipBMP_1
   \   00000030   015095E2           ADDS     R5,R5,#+1
   \                     ??dipBMP_0:
   \   00000034   FF5015E2           ANDS     R5,R5,#0xFF      ;; Zero extend
   \   00000038   B80055E3           CMP      R5,#+184
   \   0000003C   0B00002A           BCS      ??dipBMP_3
   \   00000040   0510B0E1           MOVS     R1,R5
   \   00000044   FF1011E2           ANDS     R1,R1,#0xFF      ;; Zero extend
   \   00000048   0000A0E3           MOV      R0,#+0
   \   0000004C   ........           BL       SEND2LCM
   \   00000050   1010A0E3           MOV      R1,#+16
   \   00000054   0000A0E3           MOV      R0,#+0
   \   00000058   ........           BL       SEND2LCM
   \   0000005C   0010A0E3           MOV      R1,#+0
   \   00000060   0000A0E3           MOV      R0,#+0
   \   00000064   ........           BL       SEND2LCM
   \   00000068   0260A0E3           MOV      R6,#+2
   \   0000006C   ECFFFFEA           B        ??dipBMP_2
    238          	}
    239          

⌨️ 快捷键说明

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