📄 pwm.lst
字号:
01C6 CFD1 RJMP _LCD_WriteControl
_LCD_DisplayCharacter:
Char --> R20
01C7 D09D RCALL push_gset1
01C8 2F40 MOV R20,R16
(0185) // ****************************************************************** //
(0186) // *** Display a single character, at the current cursor location *** //
(0187) // ****************************************************************** //
(0188) void LCD_DisplayCharacter (char Char)
(0189) {
(0190) LCD_WriteData (Char);
01C9 2F04 MOV R16,R20
01CA DFDC RCALL _LCD_WriteData
(0191) }
01CB D09C RCALL pop_gset1
01CC 9508 RET
_LCD_DisplayString_F:
string --> R20
column --> R10
row --> R22
01CD D0B1 RCALL push_gset3
01CE 940E029F CALL 0x29F
(0192) // ********************************************************************* //
(0193) // *** Display a string at the specified row and column, using FLASH *** //
(0194) // ********************************************************************* //
(0195) void LCD_DisplayString_F (char row, char column ,const unsigned char *string)
(0196) {
(0197) LCD_Cursor (row, column);
01D0 D01C RCALL _LCD_Cursor
01D1 C006 RJMP 0x01D8
(0198) while (*string)
(0199) {
(0200) LCD_DisplayCharacter (*string++);
01D2 011A MOVW R2,R20
01D3 5F4F SUBI R20,0xFF
01D4 4F5F SBCI R21,0xFF
01D5 01F1 MOVW R30,R2
01D6 9104 LPM R16,0(Z)
01D7 DFEF RCALL _LCD_DisplayCharacter
01D8 01FA MOVW R30,R20
01D9 91E4 LPM R30,0(Z)
01DA 23EE TST R30
01DB F7B1 BNE 0x01D2
(0201) }
(0202) }
01DC D086 RCALL pop_gset3
01DD 9508 RET
_LCD_DisplayString:
string --> R20
column --> R10
row --> R22
01DE D0A0 RCALL push_gset3
01DF 940E029F CALL 0x29F
(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);
01E1 D00B RCALL _LCD_Cursor
01E2 C004 RJMP 0x01E7
(0209) while (*string)
(0210) LCD_DisplayCharacter (*string++);
01E3 01FA MOVW R30,R20
01E4 9101 LD R16,Z+
01E5 01AF MOVW R20,R30
01E6 DFE0 RCALL _LCD_DisplayCharacter
01E7 01FA MOVW R30,R20
01E8 8020 LDD R2,Z+0
01E9 2022 TST R2
01EA F7C1 BNE 0x01E3
(0211) }
01EB D077 RCALL pop_gset3
01EC 9508 RET
_LCD_Cursor:
column --> R20
row --> R22
01ED D08E RCALL push_gset2
01EE 2F42 MOV R20,R18
01EF 2F60 MOV R22,R16
(0212) // *************************************************** //
(0213) // *** Position the LCD cursor at "row", "column". *** //
(0214) // *************************************************** //
(0215) void LCD_Cursor (char row, char column)
(0216) {
(0217) switch (row) {
01F0 2777 CLR R23
01F1 3061 CPI R22,1
01F2 E0E0 LDI R30,0
01F3 077E CPC R23,R30
01F4 F069 BEQ 0x0202
01F5 3062 CPI R22,2
01F6 E0E0 LDI R30,0
01F7 077E CPC R23,R30
01F8 F071 BEQ 0x0207
01F9 3063 CPI R22,3
01FA E0E0 LDI R30,0
01FB 077E CPC R23,R30
01FC F079 BEQ 0x020C
01FD 3064 CPI R22,4
01FE E0E0 LDI R30,0
01FF 077E CPC R23,R30
0200 F081 BEQ 0x0211
0201 C013 RJMP 0x0215
(0218) case 1: LCD_WriteControl (0x80 + column - 1); break;
0202 2F04 MOV R16,R20
0203 5800 SUBI R16,0x80
0204 5001 SUBI R16,1
0205 DF92 RCALL _LCD_WriteControl
0206 C00E RJMP 0x0215
(0219) case 2: LCD_WriteControl (0xc0 + column - 1); break;
0207 2F04 MOV R16,R20
0208 5400 SUBI R16,0x40
0209 5001 SUBI R16,1
020A DF8D RCALL _LCD_WriteControl
020B C009 RJMP 0x0215
(0220) case 3: LCD_WriteControl (0x94 + column - 1); break;
020C 2F04 MOV R16,R20
020D 560C SUBI R16,0x6C
020E 5001 SUBI R16,1
020F DF88 RCALL _LCD_WriteControl
0210 C004 RJMP 0x0215
(0221) case 4: LCD_WriteControl (0xd4 + column - 1); break;
0211 2F04 MOV R16,R20
0212 520C SUBI R16,0x2C
0213 5001 SUBI R16,1
0214 DF83 RCALL _LCD_WriteControl
(0222) default: break;
(0223) }
(0224) }
0215 D04B RCALL pop_gset2
0216 9508 RET
(0225) // ************************** //
(0226) // *** Turn the cursor on *** //
(0227) // ************************** //
(0228) void LCD_Cursor_On (void)
(0229) {
(0230) LCD_WriteControl (LCD_CURS_ON);
_LCD_Cursor_On:
0217 E00D LDI R16,0xD
(0231) }
0218 CF7F RJMP _LCD_WriteControl
(0232) // *************************** //
(0233) // *** Turn the cursor off *** //
(0234) // *************************** //
(0235) void LCD_Cursor_Off (void)
(0236) {
(0237) LCD_WriteControl (LCD_ON);
_LCD_Cursor_Off:
0219 E00C LDI R16,0xC
(0238) }
021A CF7D RJMP _LCD_WriteControl
(0239) // ******************** //
(0240) // *** Turn Off LCD *** //
(0241) // ******************** //
(0242) void LCD_Display_Off (void)
(0243) {
(0244) LCD_WriteControl(LCD_OFF);
_LCD_Display_Off:
021B E008 LDI R16,0x8
(0245) }
021C CF7B RJMP _LCD_WriteControl
(0246) // ******************* //
(0247) // *** Turn On LCD *** //
(0248) // ******************* //
(0249) void LCD_Display_On (void)
(0250) {
(0251) LCD_WriteControl(LCD_ON);
_LCD_Display_On:
021D E00C LDI R16,0xC
(0252) }
021E CF79 RJMP _LCD_WriteControl
_ClearLine:
space --> R22
line --> R20
021F D05C RCALL push_gset2
0220 2F40 MOV R20,R16
0221 9722 SBIW R28,2
(0253) // ******************* //
(0254) // *** Clear line *** //
(0255) // ******************* //
(0256) void ClearLine(unsigned char line)
(0257) {
(0258) unsigned char *space=" ";
0222 E966 LDI R22,0x96
0223 E070 LDI R23,0
(0259) LCD_DisplayString(line,1,space);
0224 8379 STD Y+1,R23
0225 8368 STD Y+0,R22
0226 E021 LDI R18,1
0227 2F04 MOV R16,R20
0228 DFB5 RCALL _LCD_DisplayString
(0260) }
FILE: <library>
0229 9622 ADIW R28,2
022A D036 RCALL pop_gset2
022B 9508 RET
mod16s:
022C 9468 BSET 6
022D 92DA ST R13,-Y
022E 2ED1 MOV R13,R17
022F C004 RJMP 0x0234
div16s:
0230 94E8 BCLR 6
0231 92DA ST R13,-Y
0232 2ED1 MOV R13,R17
0233 26D3 EOR R13,R19
0234 FF17 SBRS R17,7
0235 C002 RJMP 0x0238
0236 940E02B8 CALL 0x2B8
0238 FF37 SBRS R19,7
0239 C004 RJMP 0x023E
023A 9530 COM R19
023B 9520 COM R18
023C 5F2F SUBI R18,0xFF
023D 4F3F SBCI R19,0xFF
023E D009 RCALL xdiv16u
023F FED7 SBRS R13,7
0240 C002 RJMP 0x0243
0241 940E02B8 CALL 0x2B8
0243 90D9 LD R13,Y+
0244 9508 RET
mod16u:
0245 9468 BSET 6
0246 C001 RJMP xdiv16u
div16u:
0247 94E8 BCLR 6
xdiv16u:
0248 92EA ST R14,-Y
0249 92FA ST R15,-Y
024A 938A ST R24,-Y
024B 24EE CLR R14
024C 24FF CLR R15
024D E180 LDI R24,0x10
024E 0F00 LSL R16
024F 1F11 ROL R17
0250 1CEE ROL R14
0251 1CFF ROL R15
0252 16E2 CP R14,R18
0253 06F3 CPC R15,R19
0254 F018 BCS 0x0258
0255 1AE2 SUB R14,R18
0256 0AF3 SBC R15,R19
0257 9503 INC R16
0258 958A DEC R24
0259 F7A1 BNE 0x024E
025A F416 BRTC 0x025D
025B 2D0E MOV R16,R14
025C 2D1F MOV R17,R15
025D 9189 LD R24,Y+
025E 90F9 LD R15,Y+
025F 90E9 LD R14,Y+
0260 9508 RET
pop_gset2:
0261 E0E2 LDI R30,2
0262 C006 RJMP pop
pop_gset3:
0263 E0E4 LDI R30,4
0264 C004 RJMP pop
push_gset1:
0265 935A ST R21,-Y
0266 934A ST R20,-Y
0267 9508 RET
pop_gset1:
0268 E0E1 LDI R30,1
pop:
0269 9149 LD R20,Y+
026A 9159 LD R21,Y+
026B FDE0 SBRC R30,0
026C 9508 RET
026D 9169 LD R22,Y+
026E 9179 LD R23,Y+
026F FDE1 SBRC R30,1
0270 9508 RET
0271 90A9 LD R10,Y+
0272 90B9 LD R11,Y+
0273 FDE2 SBRC R30,2
0274 9508 RET
0275 90C9 LD R12,Y+
0276 90D9 LD R13,Y+
0277 FDE3 SBRC R30,3
0278 9508 RET
0279 90E9 LD R14,Y+
027A 90F9 LD R15,Y+
027B 9508 RET
push_gset2:
027C 937A ST R23,-Y
027D 936A ST R22,-Y
027E CFE6 RJMP push_gset1
push_gset3:
027F 92BA ST R11,-Y
0280 92AA ST R10,-Y
0281 CFFA RJMP push_gset2
<created procedures>:
0282 9AC2 SBI 0x18,2
0283 0000 NOP
0284 0000 NOP
0285 98C2 CBI 0x18,2
0286 9508 RET
0287 E090 LDI R25,0
0288 8399 STD Y+1,R25
0289 8388 STD Y+0,R24
028A E021 LDI R18,1
028B E002 LDI R16,2
028C 9508 RET
028D EF8F LDI R24,0xFF
028E BB87 OUT 0x17,R24
028F B348 IN R20,0x18
0290 7048 ANDI R20,0x8
0291 2F86 MOV R24,R22
0292 7F80 ANDI R24,0xF0
0293 2B84 OR R24,R20
0294 BB88 OUT 0x18,R24
0295 98C1 CBI 0x18,1
0296 9508 RET
0297 93900066 STS 0x66,R25
0299 93800065 STS 0x65,R24
029B BD9B OUT 0x2B,R25
029C BD8A OUT 0x2A,R24
029D 018C MOVW R16,R24
029E 9508 RET
029F 2EA2 MOV R10,R18
02A0 2F60 MOV R22,R16
02A1 814E LDD R20,Y+6
02A2 815F LDD R21,Y+7
02A3 2D2A MOV R18,R10
02A4 2F06 MOV R16,R22
02A5 9508 RET
02A6 2F86 MOV R24,R22
02A7 708F ANDI R24,0xF
02A8 9582 SWAP R24
02A9 2B84 OR R24,R20
02AA BB88 OUT 0x18,R24
02AB 98C1 CBI 0x18,1
02AC 9508 RET
02AD B22B IN R2,0x1B
02AE 2628 EOR R2,R24
02AF BA2B OUT 0x1B,R2
02B0 EC08 LDI R16,0xC8
02B1 E010 LDI R17,0
02B2 9508 RET
02B3 90200065 LDS R2,0x65
02B5 90300066 LDS R3,0x66
02B7 9508 RET
02B8 9510 COM R17
02B9 9500 COM R16
02BA 5F0F SUBI R16,0xFF
02BB 4F1F SBCI R17,0xFF
02BC 9508 RET
02BD 91800065 LDS R24,0x65
02BF 91900066 LDS R25,0x66
02C1 9508 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -