📄 v3k_framlcd_demo_sdcc.asm
字号:
mov dph,r7
push ar4
push ar5
lcall __mulint
mov r2,dpl
mov r3,dph
pop ar5
pop ar4
; genMinus
mov a,_int2lcd_number_1_1
clr c
; Peephole 236.l used r2 instead of ar2
subb a,r2
mov _int2lcd_number_1_1,a
mov a,(_int2lcd_number_1_1 + 1)
; Peephole 236.l used r3 instead of ar3
subb a,r3
mov (_int2lcd_number_1_1 + 1),a
00115$:
C$V2K_CHAR_LCD_P0_SDCC.h$336$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:336: x = (number / 10); //Define the number of thens
; genAssign
mov __divuint_PARM_2,#0x0A
clr a
mov (__divuint_PARM_2 + 1),a
; genCall
mov dpl,_int2lcd_number_1_1
mov dph,(_int2lcd_number_1_1 + 1)
push ar4
push ar5
lcall __divuint
mov r6,dpl
mov r7,dph
pop ar5
pop ar4
C$V2K_CHAR_LCD_P0_SDCC.h$337$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:337: if( (zerodisplay !=0)|| (x !=0))
; genCmpEq
; Peephole 112.b changed ljmp to sjmp
; Peephole 198 optimized misc jump sequence
cjne r4,#0x00,00116$
cjne r5,#0x00,00116$
;00140$:
; Peephole 200 removed redundant sjmp
00141$:
; genCmpEq
cjne r6,#0x00,00142$
cjne r7,#0x00,00142$
; Peephole 112.b changed ljmp to sjmp
sjmp 00117$
00142$:
00116$:
C$V2K_CHAR_LCD_P0_SDCC.h$338$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:338: sendlcdchar((x+'0'));
; genCast
mov ar2,r6
; genPlus
mov a,#0x30
; Peephole 236.a used r2 instead of ar2
add a,r2
mov dpl,a
; genCall
push ar6
push ar7
lcall _sendlcdchar
pop ar7
pop ar6
; Peephole 112.b changed ljmp to sjmp
sjmp 00118$
00117$:
C$V2K_CHAR_LCD_P0_SDCC.h$340$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:340: sendlcdchar(' '); //display a blank space instead
; genCall
mov dpl,#0x20
push ar6
push ar7
lcall _sendlcdchar
pop ar7
pop ar6
00118$:
C$V2K_CHAR_LCD_P0_SDCC.h$343$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:343: if(x>0)
; genIfx
mov a,r6
orl a,r7
; genIfxJump
; Peephole 110 removed ljmp by inverse jump logic
jz 00121$
00143$:
C$V2K_CHAR_LCD_P0_SDCC.h$344$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:344: number = number - (x*10);
; genAssign
mov __mulint_PARM_2,#0x0A
clr a
mov (__mulint_PARM_2 + 1),a
; genCall
mov dpl,r6
mov dph,r7
lcall __mulint
mov r2,dpl
mov r3,dph
; genMinus
mov a,_int2lcd_number_1_1
clr c
; Peephole 236.l used r2 instead of ar2
subb a,r2
mov _int2lcd_number_1_1,a
mov a,(_int2lcd_number_1_1 + 1)
; Peephole 236.l used r3 instead of ar3
subb a,r3
mov (_int2lcd_number_1_1 + 1),a
00121$:
C$V2K_CHAR_LCD_P0_SDCC.h$346$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:346: sendlcdchar(number + '0');
; genCast
mov r2,_int2lcd_number_1_1
; genPlus
mov a,#0x30
; Peephole 236.a used r2 instead of ar2
add a,r2
mov dpl,a
; genCall
C$V2K_CHAR_LCD_P0_SDCC.h$348$1$1 ==.
XG$int2lcd$0$0 ==.
; Peephole 253.b replaced lcall/ret with ljmp
ljmp _sendlcdchar
;------------------------------------------------------------
;Allocation info for local variables in function 'lcdstring'
;------------------------------------------------------------
;pointer Allocated to registers r2 r3
;cptr Allocated to registers
;letter Allocated to registers r4
;------------------------------------------------------------
G$lcdstring$0$0 ==.
C$V2K_CHAR_LCD_P0_SDCC.h$371$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:371: void lcdstring(char code *pointer)
; -----------------------------------------
; function lcdstring
; -----------------------------------------
_lcdstring:
; genReceive
mov r2,dpl
mov r3,dph
C$V2K_CHAR_LCD_P0_SDCC.h$376$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:376: do{
; genAssign
00101$:
C$V2K_CHAR_LCD_P0_SDCC.h$378$2$2 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:378: letter = *pointer++;
; genPointerGet
; genCodePointerGet
mov dpl,r2
mov dph,r3
clr a
movc a,@a+dptr
mov r4,a
inc dptr
mov r2,dpl
mov r3,dph
C$V2K_CHAR_LCD_P0_SDCC.h$379$2$2 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:379: sendlcdchar( letter);
; genCall
mov dpl,r4
push ar2
push ar3
lcall _sendlcdchar
pop ar3
pop ar2
C$V2K_CHAR_LCD_P0_SDCC.h$381$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:381: }while( *pointer != '\0');
; genPointerGet
; genCodePointerGet
mov dpl,r2
mov dph,r3
; Peephole 181 changed mov to clr
clr a
movc a,@a+dptr
; genCmpEq
; Peephole 115.b jump optimization
mov r4,a
jz 00108$
00107$:
; Peephole 112.b changed ljmp to sjmp
sjmp 00101$
00108$:
00104$:
C$V2K_CHAR_LCD_P0_SDCC.h$383$1$1 ==.
XG$lcdstring$0$0 ==.
ret
;------------------------------------------------------------
;Allocation info for local variables in function 'sendlcdchar'
;------------------------------------------------------------
;caract Allocated to registers r2
;tosend Allocated to registers r3
;lcdslow Allocated to registers
;------------------------------------------------------------
G$sendlcdchar$0$0 ==.
C$V2K_CHAR_LCD_P0_SDCC.h$403$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:403: void sendlcdchar( char caract)
; -----------------------------------------
; function sendlcdchar
; -----------------------------------------
_sendlcdchar:
; genReceive
mov r2,dpl
C$V2K_CHAR_LCD_P0_SDCC.h$408$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:408: LCDPORT = 0x00;
; genAssign
mov _P0,#0x00
C$V2K_CHAR_LCD_P0_SDCC.h$409$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:409: tosend = caract&0xF0; //Send the upper quartet of the character
; genAnd
mov a,#0xF0
anl a,r2
mov r3,a
C$V2K_CHAR_LCD_P0_SDCC.h$410$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:410: LCDPORT =tosend;
; genAssign
mov _P0,r3
C$V2K_CHAR_LCD_P0_SDCC.h$412$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:412: LCD_RS = 1; //set RS line
; genAssign
setb _LCD_RS
C$V2K_CHAR_LCD_P0_SDCC.h$413$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:413: LCDSlow(); //Slow down comm with LCD
; genCall
push ar2
lcall _LCDSlow
pop ar2
C$V2K_CHAR_LCD_P0_SDCC.h$414$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:414: LCD_E = 1; //set E line
; genAssign
setb _LCD_E
C$V2K_CHAR_LCD_P0_SDCC.h$415$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:415: LCDSlow(); //Slow down comm with LCD
; genCall
push ar2
lcall _LCDSlow
pop ar2
C$V2K_CHAR_LCD_P0_SDCC.h$416$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:416: LCD_E = 0; //clear E line
; genAssign
clr _LCD_E
C$V2K_CHAR_LCD_P0_SDCC.h$417$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:417: LCDSlow(); //Slow down comm with LCD
; genCall
push ar2
lcall _LCDSlow
pop ar2
C$V2K_CHAR_LCD_P0_SDCC.h$418$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:418: tosend = (caract & 0x0F)*16; //Position the Lower quartet of the character
; genAnd
anl ar2,#0x0F
; genLeftShift
; genLeftShiftLiteral
; genlshOne
mov a,r2
swap a
anl a,#0xf0
mov r3,a
C$V2K_CHAR_LCD_P0_SDCC.h$419$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:419: LCDPORT &= 0x0F; //Clear Upper Quartet of LCDPORT
; genAnd
anl _P0,#0x0F
C$V2K_CHAR_LCD_P0_SDCC.h$420$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:420: LCDPORT = LCDPORT + tosend; //Put the Lower Quartet of the character on LCD
; genPlus
; Peephole 236.g used r3 instead of ar3
mov a,r3
add a,_P0
mov _P0,a
C$V2K_CHAR_LCD_P0_SDCC.h$421$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:421: LCDSlow(); //Slow down comm with LCD
; genCall
lcall _LCDSlow
C$V2K_CHAR_LCD_P0_SDCC.h$423$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:423: LCD_E = 1; //set E line
; genAssign
setb _LCD_E
C$V2K_CHAR_LCD_P0_SDCC.h$424$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:424: LCDSlow(); //Slow down comm with LCD
; genCall
lcall _LCDSlow
C$V2K_CHAR_LCD_P0_SDCC.h$425$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:425: LCD_E = 0; //clear E line
; genAssign
clr _LCD_E
C$V2K_CHAR_LCD_P0_SDCC.h$426$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:426: LCDSlow(); //Slow down comm with LCD
; genCall
lcall _LCDSlow
C$V2K_CHAR_LCD_P0_SDCC.h$427$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:427: lcdbusy();
; genCall
C$V2K_CHAR_LCD_P0_SDCC.h$428$1$1 ==.
XG$sendlcdchar$0$0 ==.
; Peephole 253.b replaced lcall/ret with ljmp
ljmp _lcdbusy
;------------------------------------------------------------
;Allocation info for local variables in function 'sendlcdcmd'
;------------------------------------------------------------
;command Allocated to registers r2
;tosend Allocated to registers r3
;lcdslow Allocated to registers
;------------------------------------------------------------
G$sendlcdcmd$0$0 ==.
C$V2K_CHAR_LCD_P0_SDCC.h$448$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:448: void sendlcdcmd( unsigned char command)
; -----------------------------------------
; function sendlcdcmd
; -----------------------------------------
_sendlcdcmd:
; genReceive
mov r2,dpl
C$V2K_CHAR_LCD_P0_SDCC.h$453$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:453: tosend = command&0xF0; //send MSQ of command
; genAnd
mov a,#0xF0
anl a,r2
mov r3,a
C$V2K_CHAR_LCD_P0_SDCC.h$454$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:454: LCDPORT &= 0x0F;
; genAnd
anl _P0,#0x0F
C$V2K_CHAR_LCD_P0_SDCC.h$455$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:455: LCDPORT |=tosend; //
; genOr
mov a,r3
orl _P0,a
C$V2K_CHAR_LCD_P0_SDCC.h$457$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:457: LCD_RS = 0; // Clear RS line for commands
; genAssign
clr _LCD_RS
C$V2K_CHAR_LCD_P0_SDCC.h$458$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:458: LCDSlow(); //Slow down comm with LCD
; genCall
push ar2
lcall _LCDSlow
pop ar2
C$V2K_CHAR_LCD_P0_SDCC.h$459$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:459: LCD_E = 1; // set E line
; genAssign
setb _LCD_E
C$V2K_CHAR_LCD_P0_SDCC.h$460$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:460: LCDSlow(); //Slow down comm with LCD
; genCall
push ar2
lcall _LCDSlow
pop ar2
C$V2K_CHAR_LCD_P0_SDCC.h$461$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:461: LCD_E = 0; //Clear E line
; genAssign
clr _LCD_E
C$V2K_CHAR_LCD_P0_SDCC.h$462$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:462: LCDSlow(); //Slow down comm with LCD
; genCall
push ar2
lcall _LCDSlow
pop ar2
C$V2K_CHAR_LCD_P0_SDCC.h$463$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:463: tosend = (command & 0x0F)*16; //Position the Lower quartet of the character
; genAnd
anl ar2,#0x0F
; genLeftShift
; genLeftShiftLiteral
; genlshOne
mov a,r2
swap a
anl a,#0xf0
mov r3,a
C$V2K_CHAR_LCD_P0_SDCC.h$464$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:464: LCDPORT &= 0x0F; //Clear Upper Quartet of LCDPORT
; genAnd
anl _P0,#0x0F
C$V2K_CHAR_LCD_P0_SDCC.h$465$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:465: LCDPORT |=tosend; //send LSQ of character
; genOr
mov a,r3
orl _P0,a
C$V2K_CHAR_LCD_P0_SDCC.h$466$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:466: LCDSlow(); //Slow down comm with LCD
; genCall
lcall _LCDSlow
C$V2K_CHAR_LCD_P0_SDCC.h$467$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:467: LCD_E = 1; //Set E line
; genAssign
setb _LCD_E
C$V2K_CHAR_LCD_P0_SDCC.h$468$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:468: LCDSlow(); //Slow down comm with LCD
; genCall
lcall _LCDSlow
C$V2K_CHAR_LCD_P0_SDCC.h$469$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:469: LCD_E= 0; //clear E line
; genAssign
clr _LCD_E
C$V2K_CHAR_LCD_P0_SDCC.h$470$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:470: LCDSlow(); //Slow down comm with LCD
; genCall
lcall _LCDSlow
C$V2K_CHAR_LCD_P0_SDCC.h$471$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:471: lcdbusy(); //Wait LCD
; genCall
C$V2K_CHAR_LCD_P0_SDCC.h$473$1$1 ==.
XG$sendlcdcmd$0$0 ==.
; Peephole 253.b replaced lcall/ret with ljmp
ljmp _lcdbusy
;------------------------------------------------------------
;Allocation info for local variables in function 'lcdbusy'
;------------------------------------------------------------
;busyread Allocated to registers r2
;------------------------------------------------------------
G$lcdbusy$0$0 ==.
C$V2K_CHAR_LCD_P0_SDCC.h$491$1$1 ==.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -