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

📄 zuhe.lis

📁 AVR单片机实现液晶显示的程序代码
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 00B6                   .dbline 110
 00B6           ; delay(500);
 00B6 04EF              ldi R16,500
 00B8 11E0              ldi R17,1
 00BA A2DF              rcall _delay
 00BC                   .dbline 111
 00BC           ; PORTC &= ~(1<<PORTC3);
 00BC AB98              cbi 0x15,3
 00BE                   .dbline -2
 00BE                   .dbline 112
 00BE           ; }
 00BE           L23:
 00BE 00D0              rcall pop_gset1
 00C0                   .dbline 0 ; func end
 00C0 0895              ret
 00C2                   .dbsym r c 20 c
 00C2                   .dbend
 00C2                   .dbfunc e init_wdt _init_wdt fV
                        .even
 00C2           _init_wdt::
 00C2                   .dbline -1
 00C2                   .dbline 115
 00C2           ; 
 00C2           ; void init_wdt(void)
 00C2           ; {WDTCR=(1<<WDCE)|(1<<WDE);
 00C2                   .dbline 115
 00C2 88E1              ldi R24,24
 00C4 81BD              out 0x21,R24
 00C6                   .dbline 116
 00C6           ;  WDTCR=(0<<WDCE)|(1<<WDE)|(1<<WDP2)|(1<<WDP1)|(1<<WDP0);
 00C6 8FE0              ldi R24,15
 00C8 81BD              out 0x21,R24
 00CA                   .dbline -2
 00CA                   .dbline 118
 00CA           ;  /*看门狗允许、溢出时间2.1s,p44*/
 00CA           ; }
 00CA           L24:
 00CA                   .dbline 0 ; func end
 00CA 0895              ret
 00CC                   .dbend
 00CC                   .dbfunc e LcdInit _LcdInit fV
                        .even
 00CC           _LcdInit::
 00CC                   .dbline -1
 00CC                   .dbline 122
 00CC           ; 
 00CC           ; void LcdInit(void); /* LCD?????????? */
 00CC           ; void LcdInit()
 00CC           ; { 
 00CC                   .dbline 123
 00CC           ; PORTC |=  (1<<PORTC4);
 00CC AC9A              sbi 0x15,4
 00CE                   .dbline 124
 00CE           ; PORTC |=  (1<<PORTC5);
 00CE AD9A              sbi 0x15,5
 00D0                   .dbline 125
 00D0           ; PORTC |=  (1<<PORTC3);
 00D0 AB9A              sbi 0x15,3
 00D2                   .dbline 126
 00D2           ; LcdCmd(0x38);
 00D2 08E3              ldi R16,56
 00D4 DCDF              rcall _LcdCmd
 00D6                   .dbline 127
 00D6           ; LcdCmd(0x38);
 00D6 08E3              ldi R16,56
 00D8 DADF              rcall _LcdCmd
 00DA                   .dbline 128
 00DA           ; LcdCmd(0x06);
 00DA 06E0              ldi R16,6
 00DC D8DF              rcall _LcdCmd
 00DE                   .dbline 129
 00DE           ; LcdCmd(0x0c);
 00DE 0CE0              ldi R16,12
 00E0 D6DF              rcall _LcdCmd
 00E2                   .dbline 130
 00E2           ; LcdCmd(0x01);
 00E2 01E0              ldi R16,1
 00E4                   .dbline -2
 00E4                   .dbline 131
 00E4           ; }
 00E4           L25:
 00E4                   .dbline 0 ; func end
 00E4 D4CF              rjmp _LcdCmd
 00E6                   .dbend
 00E6                   .dbfunc e LcdClr _LcdClr fV
                        .even
 00E6           _LcdClr::
 00E6                   .dbline -1
 00E6                   .dbline 136
 00E6           ; 
 00E6           ; 
 00E6           ; void LcdClr(void); /* LCD???????? */
 00E6           ; void LcdClr()
 00E6           ; { 
 00E6                   .dbline 137
 00E6           ; LcdCmd(0x01);
 00E6 01E0              ldi R16,1
 00E8                   .dbline -2
 00E8                   .dbline 138
 00E8           ; }
 00E8           L26:
 00E8                   .dbline 0 ; func end
 00E8 D2CF              rjmp _LcdCmd
 00EA                   .dbend
 00EA                   .dbfunc e LcdStr _LcdStr fV
 00EA           ;              d -> R20,R21
 00EA           ;              c -> R22,R23
                        .even
 00EA           _LcdStr::
 00EA 00D0              rcall push_gset2
 00EC B801              movw R22,R16
 00EE                   .dbline -1
 00EE                   .dbline 146
 00EE           ; 
 00EE           ; 
 00EE           ; 
 00EE           ; 
 00EE           ; 
 00EE           ; void LcdStr(char *); /* ????×?·??????? */
 00EE           ; void LcdStr(char *c)
 00EE           ; {
 00EE                   .dbline 147
 00EE           ; int d=0;
 00EE 4427              clr R20
 00F0 5527              clr R21
 00F2 08C0              rjmp L29
 00F4           L28:
 00F4                   .dbline 149
 00F4 1A01              movw R2,R20
 00F6 4F5F              subi R20,255  ; offset = 1
 00F8 5F4F              sbci R21,255
 00FA F101              movw R30,R2
 00FC E60F              add R30,R22
 00FE F71F              adc R31,R23
 0100 0081              ldd R16,z+0
 0102 D2DF              rcall _LcdData
 0104           L29:
 0104                   .dbline 148
 0104           ; while (c[d]!=0)
 0104 FA01              movw R30,R20
 0106 E60F              add R30,R22
 0108 F71F              adc R31,R23
 010A 2080              ldd R2,z+0
 010C 2220              tst R2
 010E 91F7              brne L28
 0110                   .dbline -2
 0110                   .dbline 151
 0110           ; LcdData(c[d++]); /* char of LCM */
 0110           ; 
 0110           ; }
 0110           L27:
 0110 00D0              rcall pop_gset2
 0112                   .dbline 0 ; func end
 0112 0895              ret
 0114                   .dbsym r d 20 I
 0114                   .dbsym r c 22 pc
 0114                   .dbend
 0114                   .dbfunc e main _main fV
                        .even
 0114           _main::
 0114 2C97              sbiw R28,12
 0116                   .dbline -1
 0116                   .dbline 156
 0116           ; 
 0116           ; 
 0116           ; 
 0116           ; void main(void)
 0116           ; {  
 0116                   .dbline 157
 0116           ;    delay(2000);
 0116 00ED              ldi R16,2000
 0118 17E0              ldi R17,7
 011A 72DF              rcall _delay
 011C                   .dbline 158
 011C           ;    OSCCAL=EEPROM_read(osccal_addr);
 011C 0FEF              ldi R16,511
 011E 11E0              ldi R17,1
 0120 7FDF              rcall _EEPROM_read
 0122 01BF              out 0x31,R16
 0124                   .dbline 159
 0124           ;    DDRC=0xfe;
 0124 8EEF              ldi R24,254
 0126 84BB              out 0x14,R24
 0128                   .dbline 160
 0128           ;    DDRB=0Xff;   
 0128 8FEF              ldi R24,255
 012A 87BB              out 0x17,R24
 012C                   .dbline 162
 012C           ;    //init_wdt();
 012C           ;    SEI();
 012C 7894              sei
 012E                   .dbline 163
 012E           ;    init_adc();
 012E 7FDF              rcall _init_adc
 0130                   .dbline 164
 0130           ;    LcdInit();
 0130 CDDF              rcall _LcdInit
 0132                   .dbline 165
 0132           ;    LcdClr();
 0132 D9DF              rcall _LcdClr
 0134 CBC1              rjmp L33
 0136           L32:
 0136                   .dbline 168
 0136           ;   
 0136           ;    while(1)
 0136           ;    {   delay(10000);
 0136                   .dbline 168
 0136 00E1              ldi R16,10000
 0138 17E2              ldi R17,39
 013A 62DF              rcall _delay
 013C                   .dbline 169
 013C           ;        WDR();
 013C A895              wdr
 013E                   .dbline 170
 013E           ;          init_adc();
 013E 77DF              rcall _init_adc
 0140                   .dbline 172
 0140           ;        //LcdClr();
 0140           ;        ADCSRA|=(1<<ADSC);
 0140 369A              sbi 0x6,6
 0142           L35:
 0142                   .dbline 173
 0142           L36:
 0142                   .dbline 173
 0142           ;          while(ADCSRA&(1<<ADIF));
 0142 3499              sbic 0x6,4
 0144 FECF              rjmp L35
 0146                   .dbline 174
 0146           ;        readadc();
 0146 77DF              rcall _readadc
 0148                   .dbline 175
 0148           ;          ADCSRA|=(1<<ADIF);
 0148 349A              sbi 0x6,4
 014A                   .dbline 176
 014A           ;          datax=(datah<<8)+datal;
 014A 20901000          lds R2,_datal
 014E 30901200          lds R3,_datah
 0152 30921500          sts _datax+1,R3
 0156 20921400          sts _datax,R2
 015A                   .dbline 177
 015A           ;          ADCSRA&=~(1<<ADEN);
 015A 3798              cbi 0x6,7
 015C                   .dbline 178
 015C           ;          v=(float)datax/0x3ff*2.56;
 015C 00E0              ldi R16,<L38
 015E 10E0              ldi R17,>L38
 0160 00D0              rcall lpm32
 0162 3A93              st -y,R19
 0164 2A93              st -y,R18
 0166 1A93              st -y,R17
 0168 0A93              st -y,R16
 016A 00E0              ldi R16,<L39
 016C 10E0              ldi R17,>L39
 016E 00D0              rcall lpm32
 0170 3A93              st -y,R19
 0172 2A93              st -y,R18
 0174 1A93              st -y,R17
 0176 0A93              st -y,R16
 0178 00911400          lds R16,_datax
 017C 10911500          lds R17,_datax+1
 0180 1695              lsr R17
 0182 0795              ror R16
 0184 00D0              rcall int2fp
 0186 3A93              st -y,R19
 0188 2A93              st -y,R18
 018A 1A93              st -y,R17
 018C 0A93              st -y,R16
 018E 00D0              rcall empy32fs
 0190 00911400          lds R16,_datax
 0194 10911500          lds R17,_datax+1
 0198 0170              andi R16,1
 019A 1070              andi R17,0
 019C 00D0              rcall int2fp
 019E 3A93              st -y,R19
 01A0 2A93              st -y,R18
 01A2 1A93              st -y,R17
 01A4 0A93              st -y,R16
 01A6 00D0              rcall add32fs
 01A8 00E0              ldi R16,<L40
 01AA 10E0              ldi R17,>L40
 01AC 00D0              rcall lpm32
 01AE 3A93              st -y,R19
 01B0 2A93              st -y,R18
 01B2 1A93              st -y,R17
 01B4 0A93              st -y,R16
 01B6 00D0              rcall div32fs
 01B8 00D0              rcall empy32f
 01BA 10930500          sts _v+1,R17
 01BE 00930400          sts _v,R16
 01C2 30930700          sts _v+2+1,R19
 01C6 20930600          sts _v+2,R18
 01CA                   .dbline 179
 01CA           ;          W=(float)v*v;
 01CA 3A93              st -y,R19
 01CC 2A93              st -y,R18
 01CE 1A93              st -y,R17
 01D0 0A93              st -y,R16
 01D2 3A93              st -y,R19
 01D4 2A93              st -y,R18
 01D6 1A93              st -y,R17
 01D8 0A93              st -y,R16
 01DA 00D0              rcall empy32f
 01DC 10930100          sts _W+1,R17
 01E0 00930000          sts _W,R16
 01E4 30930300          sts _W+2+1,R19
 01E8 20930200          sts _W+2,R18
 01EC                   .dbline 180
 01EC           ;          w1=(uint)W;
 01EC 3A93              st -y,R19
 01EE 2A93              st -y,R18
 01F0 1A93              st -y,R17
 01F2 0A93              st -y,R16
 01F4 00E0              ldi R16,<L43
 01F6 10E0              ldi R17,>L43
 01F8 00D0              rcall lpm32
 01FA 3A93              st -y,R19
 01FC 2A93              st -y,R18
 01FE 1A93              st -y,R17
 0200 0A93              st -y,R16
 0202 00D0              rcall cmp32f
 0204 D4F0              brlt L41
 0206 40900200          lds R4,_W+2
 020A 50900300          lds R5,_W+2+1
 020E 20900000          lds R2,_W
 0212 30900100          lds R3,_W+1
 0216 5A92              st -y,R5
 0218 4A92              st -y,R4
 021A 3A92              st -y,R3
 021C 2A92              st -y,R2
 021E 00E0              ldi R16,<L43
 0220 10E0              ldi R17,>L43
 0222 00D0              rcall lpm32
 0224 3A93              st -y,R19
 0226 2A93              st -y,R18
 0228 1A93              st -y,R17
 022A 0A93              st -y,R16
 022C 00D0              rcall sub32f
 022E 00D0              rcall fp2int
 0230 C801              movw R24,R16
 0232 8050              subi R24,0  ; offset = 32768
 0234 9048              sbci R25,128
 0236 5C01              movw R10,R24
 0238 0AC0              rjmp L42
 023A           L41:
 023A 20910200          lds R18,_W+2
 023E 30910300          lds R19,_W+2+1
 0242 00910000          lds R16,_W
 0246 10910100          lds R17,_W+1
 024A 00D0              rcall fp2int
 024C 5801              movw R10,R16
 024E           L42:
 024E A0920B00          sts _w1,R10
 0252                   .dbline 181
 0252           ;          w2=(uint)((W-w1)*10);
 0252 00E0              ldi R16,<L46
 0254 10E0              ldi R17,>L46
 0256 00D0              rcall lpm32
 0258 3A93              st -y,R19
 025A 2A93              st -y,R18
 025C 1A93              st -y,R17
 025E 0A93              st -y,R16
 0260 40900200          lds R4,_W+2
 0264 50900300          lds R5,_W+2+1
 0268 20900000          lds R2,_W
 026C 30900100          lds R3,_W+1
 0270 5A92              st -y,R5
 0272 4A92              st -y,R4
 0274 3A92              st -y,R3
 0276 2A92              st -y,R2
 0278 00910B00          lds R16,_w1

⌨️ 快捷键说明

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