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

📄 main.lis

📁 51单片驱动18b20的源代码程序!供设计者参考!
💻 LIS
📖 第 1 页 / 共 4 页
字号:
 00EE                   .dbfunc e LCD_DisplayCharacter _LCD_DisplayCharacter fV
 00EE           ;           Char -> R10
                        .even
 00EE           _LCD_DisplayCharacter::
 00EE AA92              st -y,R10
 00F0 A02E              mov R10,R16
 00F2                   .dbline -1
 00F2                   .dbline 103
 00F2           ;    }
 00F2           ; }
 00F2           ; 
 00F2           ; void LCD_DisplayCharacter (char Char)
 00F2           ; {
 00F2                   .dbline 104
 00F2           ;   LCD_WriteData (Char);
 00F2 0A2D              mov R16,R10
 00F4 C0DF              xcall _LCD_WriteData
 00F6                   .dbline -2
 00F6           L12:
 00F6                   .dbline 0 ; func end
 00F6 A990              ld R10,y+
 00F8 0895              ret
 00FA                   .dbsym r Char 10 c
 00FA                   .dbend
 00FA                   .dbfunc e LCD_DisplayString _LCD_DisplayString fV
 00FA           ;         string -> R10,R11
 00FA           ;         column -> R14
 00FA           ;            row -> R12
                        .even
 00FA           _LCD_DisplayString::
 00FA 0E940000          xcall push_xgset00FC
 00FE E22E              mov R14,R18
 0100 C02E              mov R12,R16
 0102 AE80              ldd R10,y+6
 0104 BF80              ldd R11,y+7
 0106                   .dbline -1
 0106                   .dbline 108
 0106           ; }
 0106           ; 
 0106           ; void LCD_DisplayString (char row, char column ,unsigned char *string)
 0106           ; {
 0106                   .dbline 109
 0106           ;  LCD_Cursor (row, column);
 0106 2E2D              mov R18,R14
 0108 0C2D              mov R16,R12
 010A D7DF              xcall _LCD_Cursor
 010C 04C0              xjmp L15
 010E           L14:
 010E                   .dbline 111
 010E           ;  while (*string)
 010E           ;   LCD_DisplayCharacter (*string++);
 010E F501              movw R30,R10
 0110 0191              ld R16,Z+
 0112 5F01              movw R10,R30
 0114 ECDF              xcall _LCD_DisplayCharacter
 0116           L15:
 0116                   .dbline 110
 0116 F501              movw R30,R10
 0118 2080              ldd R2,z+0
 011A 2220              tst R2
 011C C1F7              brne L14
 011E           X2:
 011E                   .dbline -2
 011E           L13:
 011E                   .dbline 0 ; func end
 011E 0C940000          xjmp pop_xgset00FC
 0122                   .dbsym r string 10 pc
 0122                   .dbsym r column 14 c
 0122                   .dbsym r row 12 c
 0122                   .dbend
 0122                   .dbfunc e LCD_DisplayInt _LCD_DisplayInt fV
 0122           ;              n -> R14
 0122           ;              j -> R14
 0122           ;            str -> R20,R21
 0122           ;              a -> y+2
 0122           ;              i -> R22
 0122           ;              t -> R14,R15
 0122           ;         column -> R12
 0122           ;            row -> R10
                        .even
 0122           _LCD_DisplayInt::
 0122 0E940000          xcall push_xgsetF0FC
 0126 C22E              mov R12,R18
 0128 A02E              mov R10,R16
 012A 2797              sbiw R28,7
 012C E988              ldd R14,y+17
 012E FA88              ldd R15,y+18
 0130                   .dbline -1
 0130                   .dbline 116
 0130           ; }
 0130           ; 
 0130           ; unsigned char ch1[6];                      //用于存放INT转换成字符串后的数据
 0130           ; void  LCD_DisplayInt (char row, char column ,unsigned int t)
 0130           ; { 
 0130                   .dbline 119
 0130           ;   unsigned char n;
 0130           ;   unsigned char a[5]; char i, j;   
 0130           ;   unsigned char *str=ch1;                             
 0130 40E0              ldi R20,<_ch1
 0132 50E0              ldi R21,>_ch1
 0134                   .dbline 120
 0134           ;   a[0]=(t/10000)%10;         //取得整数值到数组          
 0134 20E1              ldi R18,10000
 0136 37E2              ldi R19,39
 0138 8701              movw R16,R14
 013A 0E940000          xcall div16u
 013E 2AE0              ldi R18,10
 0140 30E0              ldi R19,0
 0142 0E940000          xcall mod16u
 0146 0A83              std y+2,R16
 0148                   .dbline 121
 0148           ;   a[1]=(t/1000)%10;                                      
 0148 28EE              ldi R18,1000
 014A 33E0              ldi R19,3
 014C 8701              movw R16,R14
 014E 0E940000          xcall div16u
 0152 2AE0              ldi R18,10
 0154 30E0              ldi R19,0
 0156 0E940000          xcall mod16u
 015A 0B83              std y+3,R16
 015C                   .dbline 122
 015C           ;   a[2]=(t/100)%10;                                       
 015C 24E6              ldi R18,100
 015E 30E0              ldi R19,0
 0160 8701              movw R16,R14
 0162 0E940000          xcall div16u
 0166 2AE0              ldi R18,10
 0168 30E0              ldi R19,0
 016A 0E940000          xcall mod16u
 016E 0C83              std y+4,R16
 0170                   .dbline 123
 0170           ;   a[3]=(t/10)%10;                                        
 0170 2AE0              ldi R18,10
 0172 30E0              ldi R19,0
 0174 8701              movw R16,R14
 0176 0E940000          xcall div16u
 017A 2AE0              ldi R18,10
 017C 30E0              ldi R19,0
 017E 0E940000          xcall mod16u
 0182 0D83              std y+5,R16
 0184                   .dbline 124
 0184           ;   a[4]=(t/1)%10;                                         
 0184 2AE0              ldi R18,10
 0186 30E0              ldi R19,0
 0188 8701              movw R16,R14
 018A 0E940000          xcall mod16u
 018E 0E83              std y+6,R16
 0190                   .dbline 126
 0190           ;                                                       
 0190           ;   for(i=0; i<5; i++)         //转成ASCII码               
 0190 6627              clr R22
 0192 0BC0              xjmp L25
 0194           L22:
 0194                   .dbline 127
 0194           ;     a[i]=a[i]+'0';                                     
 0194 CE01              movw R24,R28
 0196 0296              adiw R24,2
 0198 262E              mov R2,R22
 019A 3324              clr R3
 019C 280E              add R2,R24
 019E 391E              adc R3,R25
 01A0 F101              movw R30,R2
 01A2 8081              ldd R24,z+0
 01A4 805D              subi R24,208    ; addi 48
 01A6 8083              std z+0,R24
 01A8           L23:
 01A8                   .dbline 126
 01A8 6395              inc R22
 01AA           L25:
 01AA                   .dbline 126
 01AA 6530              cpi R22,5
 01AC 98F3              brlo L22
 01AE           X3:
 01AE                   .dbline 128
 01AE           ;   for(i=0; a[i]=='0' && i<=3; i++);   
 01AE 6627              clr R22
 01B0 01C0              xjmp L29
 01B2           L26:
 01B2                   .dbline 128
 01B2           L27:
 01B2                   .dbline 128
 01B2 6395              inc R22
 01B4           L29:
 01B4                   .dbline 128
 01B4 CE01              movw R24,R28
 01B6 0296              adiw R24,2
 01B8 E62F              mov R30,R22
 01BA FF27              clr R31
 01BC E80F              add R30,R24
 01BE F91F              adc R31,R25
 01C0 8081              ldd R24,z+0
 01C2 8033              cpi R24,48
 01C4 19F4              brne L30
 01C6           X4:
 01C6 83E0              ldi R24,3
 01C8 8617              cp R24,R22
 01CA 98F7              brsh L26
 01CC           X5:
 01CC           L30:
 01CC                   .dbline 129
 01CC           ;     n=5-i;                   
 01CC 85E0              ldi R24,5
 01CE E82E              mov R14,R24
 01D0 E61A              sub R14,R22
 01D2                   .dbline 130
 01D2           ;   for(j=5-n; j<i; j++)       //填充空格                  
 01D2 8E19              sub R24,R14
 01D4 E82E              mov R14,R24
 01D6 06C0              xjmp L34
 01D8           L31:
 01D8                   .dbline 131
 01D8           ;     { *str=' ';  str++; }                              
 01D8                   .dbline 131
 01D8 80E2              ldi R24,32
 01DA FA01              movw R30,R20
 01DC 8083              std z+0,R24
 01DE                   .dbline 131
 01DE 4F5F              subi R20,255  ; offset = 1
 01E0 5F4F              sbci R21,255
 01E2                   .dbline 131
 01E2           L32:
 01E2                   .dbline 130
 01E2 E394              inc R14
 01E4           L34:
 01E4                   .dbline 130
 01E4 E616              cp R14,R22
 01E6 C0F3              brlo L31
 01E8           X6:
 01E8                   .dbline 132
 01E8           ;   for(; i<5; i++)                                        
 01E8 0CC0              xjmp L38
 01EA           L35:
 01EA                   .dbline 133
 01EA           ;     { *str=(char)a[i]; str++; }  //加入有效的数字            
 01EA                   .dbline 133
 01EA CE01              movw R24,R28
 01EC 0296              adiw R24,2
 01EE E62F              mov R30,R22
 01F0 FF27              clr R31
 01F2 E80F              add R30,R24
 01F4 F91F              adc R31,R25
 01F6 2080              ldd R2,z+0
 01F8 FA01              movw R30,R20
 01FA 2082              std z+0,R2
 01FC                   .dbline 133
 01FC 4F5F              subi R20,255  ; offset = 1
 01FE 5F4F              sbci R21,255
 0200                   .dbline 133
 0200           L36:
 0200                   .dbline 132
 0200 6395              inc R22
 0202           L38:
 0202                   .dbline 132
 0202 6530              cpi R22,5
 0204 90F3              brlo L35
 0206           X7:
 0206                   .dbline 134
 0206           ;   *str='\0'; 
 0206 2224              clr R2
 0208 FA01              movw R30,R20
 020A 2082              std z+0,R2
 020C                   .dbline 135
 020C           ;   LCD_DisplayString(row,column,ch1);
 020C 80E0              ldi R24,<_ch1
 020E 90E0              ldi R25,>_ch1
 0210 9983              std y+1,R25
 0212 8883              std y+0,R24
 0214 2C2D              mov R18,R12
 0216 0A2D              mov R16,R10
 0218 70DF              xcall _LCD_DisplayString
 021A                   .dbline -2
 021A           L17:
 021A                   .dbline 0 ; func end
 021A 2796              adiw R28,7
 021C 0C940000          xjmp pop_xgsetF0FC
 0220                   .dbsym r n 14 c
 0220                   .dbsym r j 14 c
 0220                   .dbsym r str 20 pc
 0220                   .dbsym l a 2 A[5:5]c
 0220                   .dbsym r i 22 c
 0220                   .dbsym r t 14 i
 0220                   .dbsym r column 12 c
 0220                   .dbsym r row 10 c
 0220                   .dbend
 0220                   .dbfunc e LCD_Displayasc _LCD_Displayasc fV
 0220           ;           temp -> R20
 0220           ;          ascii -> y+2
 0220           ;            asc -> y+10
 0220           ;         column -> R12
 0220           ;            row -> R10
                        .even
 0220           _LCD_Displayasc::
 0220 0E940000          xcall push_xgset303C
 0224 C22E              mov R12,R18
 0226 A02E              mov R10,R16
 0228 2497              sbiw R28,4
 022A                   .dbline -1
 022A                   .dbline 139
 022A           ; }
 022A           ; 
 022A           ; void LCD_Displayasc (char row, char column,  char asc)
 022A           ; { 
 022A                   .dbline 141
 022A           ;   unsigned char ascii[2],temp;
 022A           ;   temp=asc;
 022A 4A85              ldd R20,y+10
 022C                   .dbline 142
 022C           ;   ascii[0]=temp+'0';
 022C 842F              mov R24,R20
 022E 805D              subi R24,208    ; addi 48
 0230 8A83              std y+2,R24
 0232                   .dbline 143
 0232           ;   ascii[1]='\0';
 0232 2224              clr R2
 0234 2B82              std y+3,R2
 0236                   .dbline 144
 0236           ;   LCD_DisplayString(row,column,ascii);
 0236 CE01              movw R24,R28
 0238 0296              adiw R24,2
 023A 9983              std y+1,R25
 023C 8883              std y+0,R24
 023E 2C2D              mov R18,R12
 0240 0A2D              mov R16,R10
 0242 5BDF              xcall _LCD_DisplayString
 0244                   .dbline -2
 0244           L39:
 0244                   .dbline 0 ; func end

⌨️ 快捷键说明

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