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

📄 text2.lst

📁 ATmega16-ad1602
💻 LST
📖 第 1 页 / 共 4 页
字号:
(0153) lcd_set_e(); // Write data to LCD
    00204 9AAA      SBI	0x15,2
(0154) asm("nop");
    00205 0000      NOP
(0155) asm("nop");
    00206 0000      NOP
(0156) lcd_clear_e(); // Disable LCD
    00207 98AA      CBI	0x15,2
    00208 9169      LD	R22,Y+
    00209 9149      LD	R20,Y+
    0020A 9508      RET
(0157) }
(0158) // ********************************* //
(0159) // *** Initialize the LCD driver *** //
(0160) // ********************************* //
(0161) void Init_LCD(void)
(0162) {
(0163) LCD_INIT();
_Init_LCD:
    0020B DF80      RCALL	_LCD_INIT
(0164) LCD_WriteControl (LCD_FUNCTION_SET);
    0020C E208      LDI	R16,0x28
    0020D DFBD      RCALL	_LCD_WriteControl
(0165) LCD_WriteControl (LCD_OFF);
    0020E E008      LDI	R16,0x8
    0020F DFBB      RCALL	_LCD_WriteControl
(0166) LCD_WriteControl (LCD_CLEAR);
    00210 E001      LDI	R16,1
    00211 DFB9      RCALL	_LCD_WriteControl
(0167) LCD_WriteControl (LCD_MODE_SET);
    00212 E006      LDI	R16,6
    00213 DFB7      RCALL	_LCD_WriteControl
(0168) LCD_WriteControl (LCD_ON);
    00214 E00C      LDI	R16,0xC
    00215 DFB5      RCALL	_LCD_WriteControl
(0169) LCD_WriteControl (LCD_HOME);
    00216 E002      LDI	R16,2
    00217 CFB3      RJMP	_LCD_WriteControl
(0170) }
(0171) // ************************************************ //
(0172) // *** Clear the LCD screen (also homes cursor) *** //
(0173) // ************************************************ //
(0174) void LCD_Clear(void)
(0175) {
(0176) LCD_WriteControl(0x01);
_LCD_Clear:
    00218 E001      LDI	R16,1
    00219 CFB1      RJMP	_LCD_WriteControl
(0177) }
(0178) // *********************************************** //
(0179) // *** Position the LCD cursor at row 1, col 1 *** //
(0180) // *********************************************** //
(0181) void LCD_Home(void)
(0182) {
(0183) LCD_WriteControl(0x02);
_LCD_Home:
    0021A E002      LDI	R16,2
    0021B CFAF      RJMP	_LCD_WriteControl
_LCD_DisplayCharacter:
  Char                 --> R10
    0021C 92AA      ST	-Y,R10
    0021D 2EA0      MOV	R10,R16
(0184) }
(0185) // ****************************************************************** //
(0186) // *** Display a single character, at the current cursor location *** //
(0187) // ****************************************************************** //
(0188) void LCD_DisplayCharacter (char Char)
(0189) {
(0190) LCD_WriteData (Char);
    0021E 2D0A      MOV	R16,R10
    0021F DFCB      RCALL	_LCD_WriteData
    00220 90A9      LD	R10,Y+
    00221 9508      RET
_LCD_DisplayString_F:
  string               --> R20
  column               --> R12
  row                  --> R10
    00222 D0AD      RCALL	push_xgset303C
    00223 2EC2      MOV	R12,R18
    00224 2EA0      MOV	R10,R16
    00225 814E      LDD	R20,Y+6
    00226 815F      LDD	R21,Y+7
(0191) }
(0192) // ********************************************************************* //
(0193) // *** Display a string at the specified row and column, using FLASH *** //
(0194) // ********************************************************************* //
(0195) void LCD_DisplayString_F (char row, char column , unsigned char __flash *string)
(0196) {
(0197) LCD_Cursor (row, column);
    00227 2D2C      MOV	R18,R12
    00228 2D0A      MOV	R16,R10
    00229 D01E      RCALL	_LCD_Cursor
    0022A C006      RJMP	0x0231
(0198) while (*string)
(0199) {
(0200) LCD_DisplayCharacter (*string++);
    0022B 011A      MOVW	R2,R20
    0022C 5F4F      SUBI	R20,0xFF
    0022D 4F5F      SBCI	R21,0xFF
    0022E 01F1      MOVW	R30,R2
    0022F 9104      LPM	R16,Z
    00230 DFEB      RCALL	_LCD_DisplayCharacter
    00231 01FA      MOVW	R30,R20
    00232 9024      LPM	R2,Z
    00233 2022      TST	R2
    00234 F7B1      BNE	0x022B
    00235 C0A1      RJMP	pop_xgset303C
_LCD_DisplayString:
  string               --> R10
  column               --> R14
  row                  --> R12
    00236 D07A      RCALL	push_xgset00FC
    00237 2EE2      MOV	R14,R18
    00238 2EC0      MOV	R12,R16
    00239 80AE      LDD	R10,Y+6
    0023A 80BF      LDD	R11,Y+7
(0201) }
(0202) }
(0203) // ******************************************************************* //
(0204) // *** Display a string at the specified row and column, using RAM *** //
(0205) // ******************************************************************* //
(0206) void LCD_DisplayString (char row, char column ,unsigned char *string)
(0207) {
(0208) LCD_Cursor (row, column);
    0023B 2D2E      MOV	R18,R14
    0023C 2D0C      MOV	R16,R12
    0023D D00A      RCALL	_LCD_Cursor
    0023E C004      RJMP	0x0243
(0209) while (*string)
(0210) LCD_DisplayCharacter (*string++);
    0023F 01F5      MOVW	R30,R10
    00240 9101      LD	R16,Z+
    00241 015F      MOVW	R10,R30
    00242 DFD9      RCALL	_LCD_DisplayCharacter
    00243 01F5      MOVW	R30,R10
    00244 8020      LD	R2,Z
    00245 2022      TST	R2
    00246 F7C1      BNE	0x023F
    00247 C05E      RJMP	pop_xgset00FC
_LCD_Cursor:
  column               --> R20
  row                  --> R10
    00248 D079      RCALL	push_xgsetF00C
    00249 2F42      MOV	R20,R18
    0024A 2EA0      MOV	R10,R16
(0211) }
(0212) // *************************************************** //
(0213) // *** Position the LCD cursor at "row", "column". *** //
(0214) // *************************************************** //
(0215) void LCD_Cursor (char row, char column)
(0216) {
(0217) switch (row) {
    0024B 2D6A      MOV	R22,R10
    0024C 2777      CLR	R23
    0024D 3061      CPI	R22,1
    0024E E0E0      LDI	R30,0
    0024F 077E      CPC	R23,R30
    00250 F069      BEQ	0x025E
    00251 3062      CPI	R22,2
    00252 E0E0      LDI	R30,0
    00253 077E      CPC	R23,R30
    00254 F071      BEQ	0x0263
    00255 3063      CPI	R22,3
    00256 E0E0      LDI	R30,0
    00257 077E      CPC	R23,R30
    00258 F079      BEQ	0x0268
    00259 3064      CPI	R22,4
    0025A E0E0      LDI	R30,0
    0025B 077E      CPC	R23,R30
    0025C F081      BEQ	0x026D
    0025D C013      RJMP	0x0271
(0218) case 1: LCD_WriteControl (0x80 + column - 1); break;
    0025E 2F04      MOV	R16,R20
    0025F 5800      SUBI	R16,0x80
    00260 5001      SUBI	R16,1
    00261 DF69      RCALL	_LCD_WriteControl
    00262 C00E      RJMP	0x0271
(0219) case 2: LCD_WriteControl (0xc0 + column - 1); break;
    00263 2F04      MOV	R16,R20
    00264 5400      SUBI	R16,0x40
    00265 5001      SUBI	R16,1
    00266 DF64      RCALL	_LCD_WriteControl
    00267 C009      RJMP	0x0271
(0220) case 3: LCD_WriteControl (0x94 + column - 1); break;
    00268 2F04      MOV	R16,R20
    00269 560C      SUBI	R16,0x6C
    0026A 5001      SUBI	R16,1
    0026B DF5F      RCALL	_LCD_WriteControl
    0026C C004      RJMP	0x0271
(0221) case 4: LCD_WriteControl (0xd4 + column - 1); break;
    0026D 2F04      MOV	R16,R20
    0026E 520C      SUBI	R16,0x2C
    0026F 5001      SUBI	R16,1
    00270 DF5A      RCALL	_LCD_WriteControl
(0222) default: break;
    00271 C057      RJMP	pop_xgsetF00C
(0223) }
(0224) }
(0225) // ************************** //
(0226) // *** Turn the cursor on *** //
(0227) // ************************** //
(0228) void LCD_Cursor_On (void)
(0229) {
(0230) LCD_WriteControl (LCD_CURS_ON);
_LCD_Cursor_On:
    00272 E00D      LDI	R16,0xD
    00273 CF57      RJMP	_LCD_WriteControl
(0231) }
(0232) // *************************** //
(0233) // *** Turn the cursor off *** //
(0234) // *************************** //
(0235) void LCD_Cursor_Off (void)
(0236) {
(0237) LCD_WriteControl (LCD_ON);
_LCD_Cursor_Off:
    00274 E00C      LDI	R16,0xC
    00275 CF55      RJMP	_LCD_WriteControl
(0238) }
(0239) // ******************** //
(0240) // *** Turn Off LCD *** //
(0241) // ******************** //
(0242) void LCD_Display_Off (void)
(0243) {
(0244) LCD_WriteControl(LCD_OFF);
_LCD_Display_Off:
    00276 E008      LDI	R16,0x8
    00277 CF53      RJMP	_LCD_WriteControl
(0245) }
(0246) // ******************* //
(0247) // *** Turn On LCD *** //
(0248) // ******************* //
(0249) void LCD_Display_On (void)
(0250) {
(0251) LCD_WriteControl(LCD_ON);
FILE: <library>
_LCD_Display_On:
    00278 E00C      LDI	R16,0xC
    00279 CF51      RJMP	_LCD_WriteControl
mod16u:
    0027A 9468      BSET	6
    0027B C001      RJMP	xdiv16u
div16u:
    0027C 94E8      BCLR	6
xdiv16u:
    0027D 92EA      ST	-Y,R14
    0027E 92FA      ST	-Y,R15
    0027F 938A      ST	-Y,R24
    00280 24EE      CLR	R14
    00281 24FF      CLR	R15
    00282 E180      LDI	R24,0x10
    00283 0F00      LSL	R16
    00284 1F11      ROL	R17
    00285 1CEE      ROL	R14
    00286 1CFF      ROL	R15
    00287 16E2      CP	R14,R18
    00288 06F3      CPC	R15,R19
    00289 F018      BCS	0x028D
    0028A 1AE2      SUB	R14,R18
    0028B 0AF3      SBC	R15,R19
    0028C 9503      INC	R16
    0028D 958A      DEC	R24
    0028E F7A1      BNE	0x0283
    0028F F416      BRTC	0x0292
    00290 2D0E      MOV	R16,R14
    00291 2D1F      MOV	R17,R15
    00292 9189      LD	R24,Y+
    00293 90F9      LD	R15,Y+
    00294 90E9      LD	R14,Y+
    00295 9508      RET
empy16s:
    00296 920A      ST	-Y,R0
    00297 921A      ST	-Y,R1
    00298 938A      ST	-Y,R24
    00299 939A      ST	-Y,R25
    0029A 9F02      MUL	R16,R18
    0029B 01C0      MOVW	R24,R0
    0029C 9F12      MUL	R17,R18
    0029D 0D90      ADD	R25,R0
    0029E 9F03      MUL	R16,R19
    0029F 0D90      ADD	R25,R0
    002A0 018C      MOVW	R16,R24
    002A1 9199      LD	R25,Y+
    002A2 9189      LD	R24,Y+
    002A3 9019      LD	R1,Y+
    002A4 9009      LD	R0,Y+
    002A5 9508      RET
pop_xgset00FC:
    002A6 90A9      LD	R10,Y+
    002A7 90B9      LD	R11,Y+
    002A8 90C9      LD	R12,Y+
    002A9 90D9      LD	R13,Y+
    002AA 90E9      LD	R14,Y+
    002AB 90F9      LD	R15,Y+
    002AC 9508      RET
push_xgsetF0FC:
    002AD 937A      ST	-Y,R23
    002AE 936A      ST	-Y,R22
push_xgset30FC:
    002AF 935A      ST	-Y,R21
    002B0 934A      ST	-Y,R20
push_xgset00FC:
    002B1 92FA      ST	-Y,R15
    002B2 92EA      ST	-Y,R14
push_xgset003C:
    002B3 92DA      ST	-Y,R13
    002B4 92CA      ST	-Y,R12
    002B5 92BA      ST	-Y,R11
    002B6 92AA      ST	-Y,R10
    002B7 9508      RET
push_xgset300C:
    002B8 935A      ST	-Y,R21
    002B9 934A      ST	-Y,R20
    002BA 92BA      ST	-Y,R11
    002BB 92AA      ST	-Y,R10
    002BC 9508      RET
pop_xgset300C:
    002BD 90A9      LD	R10,Y+
    002BE 90B9      LD	R11,Y+
    002BF 9149      LD	R20,Y+
    002C0 9159      LD	R21,Y+
    002C1 9508      RET
push_xgsetF00C:
    002C2 937A      ST	-Y,R23
    002C3 936A      ST	-Y,R22
    002C4 935A      ST	-Y,R21
    002C5 934A      ST	-Y,R20
    002C6 92BA      ST	-Y,R11
    002C7 92AA      ST	-Y,R10
    002C8 9508      RET
pop_xgsetF00C:
    002C9 90A9      LD	R10,Y+
    002CA 90B9      LD	R11,Y+
    002CB 9149      LD	R20,Y+
    002CC 9159      LD	R21,Y+
    002CD 9169      LD	R22,Y+
    002CE 9179      LD	R23,Y+
    002CF 9508      RET
push_xgset303C:
    002D0 935A      ST	-Y,R21
    002D1 934A      ST	-Y,R20
    002D2 92DA      ST	-Y,R13
    002D3 92CA      ST	-Y,R12
    002D4 92BA      ST	-Y,R11
    002D5 92AA      ST	-Y,R10
    002D6 9508      RET
pop_xgset303C:
    002D7 90A9      LD	R10,Y+
    002D8 90B9      LD	R11,Y+
    002D9 90C9      LD	R12,Y+
    002DA 90D9      LD	R13,Y+
    002DB 9149      LD	R20,Y+
    002DC 9159      LD	R21,Y+
    002DD 9508      RET
push_xgsetF03C:
    002DE 937A      ST	-Y,R23
    002DF 936A      ST	-Y,R22
    002E0 935A      ST	-Y,R21
    002E1 934A      ST	-Y,R20
    002E2 92DA      ST	-Y,R13
    002E3 92CA      ST	-Y,R12
    002E4 92BA      ST	-Y,R11
    002E5 92AA      ST	-Y,R10
    002E6 9508      RET
pop_xgsetF03C:
    002E7 90A9      LD	R10,Y+
    002E8 90B9      LD	R11,Y+
    002E9 90C9      LD	R12,Y+
    002EA 90D9      LD	R13,Y+
    002EB 9149      LD	R20,Y+
    002EC 9159      LD	R21,Y+
    002ED 9169      LD	R22,Y+
    002EE 9179      LD	R23,Y+
    002EF 9508      RET
neg32:
    002F0 9500      COM	R16
    002F1 9510      COM	R17
    002F2 9520      COM	R18
    002F3 9530      COM	R19
    002F4 5F0F      SUBI	R16,0xFF
    002F5 4F1F      SBCI	R17,0xFF
    002F6 4F2F      SBCI	R18,0xFF
    002F7 4F3F      SBCI	R19,0xFF
    002F8 9508      RET
lpm32:
    002F9 93EA      ST	-Y,R30
    002FA 93FA      ST	-Y,R31
    002FB 920A      ST	-Y,R0
    002FC 2FE0      MOV	R30,R16
    002FD 2FF1      MOV	R31,R17
    002FE 95C8      LPM
    002FF 2D00      MOV	R16,R0
    00300 9631      ADIW	R30,1
    00301 95C8      LPM
    00302 2D10      MOV	R17,R0
    00303 9631      ADIW	R30,1
    00304 95C8      LPM
    00305 2D20      MOV	R18,R0
    00306 9631      ADIW	R30,1
    00307 95C8      LPM
    00308 2D30      MOV	R19,R0
    00309 9009      LD	R0,Y+
    0030A 91F9      LD	R31,Y+
    0030B 91E9      LD	R30,Y+
    0030C 9508      RET
fpint:
    0030D 924A      ST	-Y,R4
    0030E 925A      ST	-Y,R5
    0030F 926A      ST	-Y,R6
    00310 938A      ST	-Y,R24
    00311 D0F0      RCALL	unpacku
    00312 F111      BEQ	0x0335
    00313 2055      TST	R5
    00314 F0E2      BMI	0x0331
    00315 E18F      LDI	R24,0x1F
    00316 1648      CP	R4,R24
    00317 F4C0      BCC	0x0330
    00318 E187      LDI	R24,0x17
    00319 1648      CP	R4,R24
    0031A F0D1      BEQ	0x0335
    0031B F458      BCC	0x0327
    0031C 9441      NEG	R4
    0031D EE89      LDI	R24,0xE9
    0031E 1A48      SUB	R4,R24
    0031F C005      RJMP	0x0325
    00320 9535      ASR	R19
    00321 9527      ROR	R18
    00322 9517      ROR	R17
    00323 9507      ROR	R16
    00324 944A      DEC	R4
    00325 F7D1      BNE	0x0320
    00326 C00E      RJMP	0x0335
    00327 E187      LDI	R24,0x17
    00328 1A48      SUB	R4,R24
    00329 0F00      LSL	R16
    0032A 1F11      ROL	R17
    0032B 1F22      ROL	R18
    0032C 1F33      ROL	R19
    0032D 944A      DEC	R4
    0032E F7D1      BNE	0x0329
    0032F C005      RJMP	0x0335
    00330 E73F      LDI	R19,0x7F
    00331 2F23      MOV	R18,R19
    00332 2F13      MOV	R17,R19
    00333 2F03      MOV	R16,R19
    00334 C003      RJMP	0x0338
    00335 2066      TST	R6

⌨️ 快捷键说明

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