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

📄 pwm.lst

📁 avr icc 平台开发的pwm模拟功能
💻 LST
📖 第 1 页 / 共 3 页
字号:
    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 + -