📄 v3k_framlcd_demo_sdcc.asm
字号:
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:491: void lcdbusy(void)
; -----------------------------------------
; function lcdbusy
; -----------------------------------------
_lcdbusy:
C$V2K_CHAR_LCD_P0_SDCC.h$496$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:496: LCDPORTDIR |= 0xF0; //put LCDPORT Upper Quartet as input in order to read it
; genOr
orl _P0PINCFG,#0xF0
C$V2K_CHAR_LCD_P0_SDCC.h$497$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:497: LCDSlow(); //Slow down comm with LCD
; genCall
lcall _LCDSlow
C$V2K_CHAR_LCD_P0_SDCC.h$498$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:498: LCD_RS = 0; //Set LCD RS = 0
; genAssign
clr _LCD_RS
C$V2K_CHAR_LCD_P0_SDCC.h$499$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:499: LCDSlow(); //Slow down comm with LCD
; genCall
lcall _LCDSlow
C$V2K_CHAR_LCD_P0_SDCC.h$500$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:500: LCD_RW = 1; //Set LCD RW = 1 -> read
; genAssign
setb _LCD_RW
C$V2K_CHAR_LCD_P0_SDCC.h$501$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:501: LCDSlow(); //Slow down comm with LCD
; genCall
lcall _LCDSlow
C$V2K_CHAR_LCD_P0_SDCC.h$502$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:502: do{
00101$:
C$V2K_CHAR_LCD_P0_SDCC.h$503$2$2 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:503: LCD_E = 1; // Send LCD E Pulse
; genAssign
setb _LCD_E
C$V2K_CHAR_LCD_P0_SDCC.h$504$2$2 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:504: LCDSlow(); //Slow down comm with LCD
; genCall
lcall _LCDSlow
C$V2K_CHAR_LCD_P0_SDCC.h$505$2$2 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:505: busyread = LCDPORT; // Read Busy Flag
; genAssign
mov r2,_P0
C$V2K_CHAR_LCD_P0_SDCC.h$506$2$2 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:506: busyread = busyread & 0x80; // isolate Busy Flag
; genAnd
anl ar2,#0x80
C$V2K_CHAR_LCD_P0_SDCC.h$507$2$2 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:507: LCDSlow(); //Slow down comm with LCD
; genCall
push ar2
lcall _LCDSlow
pop ar2
C$V2K_CHAR_LCD_P0_SDCC.h$508$2$2 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:508: LCD_E = 0; // Bring E line to 0
; genAssign
clr _LCD_E
C$V2K_CHAR_LCD_P0_SDCC.h$509$2$2 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:509: LCDSlow(); //Slow down comm with LCD
; genCall
push ar2
lcall _LCDSlow
pop ar2
C$V2K_CHAR_LCD_P0_SDCC.h$510$2$2 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:510: LCD_E = 1; // Set LCD E line to 1 (second E pulse)
; genAssign
setb _LCD_E
C$V2K_CHAR_LCD_P0_SDCC.h$511$2$2 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:511: LCDSlow(); //Slow down comm with LCD
; genCall
push ar2
lcall _LCDSlow
pop ar2
C$V2K_CHAR_LCD_P0_SDCC.h$512$2$2 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:512: LCD_E = 0;
; genAssign
clr _LCD_E
C$V2K_CHAR_LCD_P0_SDCC.h$513$2$2 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:513: LCDSlow(); //Slow down comm with LCD
; genCall
push ar2
lcall _LCDSlow
pop ar2
C$V2K_CHAR_LCD_P0_SDCC.h$514$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:514: }while( busyread != 0);
; genCmpEq
; Peephole 112.b changed ljmp to sjmp
; Peephole 199 optimized misc jump sequence
cjne r2,#0x00,00101$
;00108$:
; Peephole 200 removed redundant sjmp
00109$:
C$V2K_CHAR_LCD_P0_SDCC.h$516$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:516: LCD_RW = 0; //Bring the LCD back in read mode
; genAssign
clr _LCD_RW
C$V2K_CHAR_LCD_P0_SDCC.h$517$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:517: LCDPORTDIR &= 0x0F; //put LCDPORT Upper Quartet as output
; genAnd
anl _P0PINCFG,#0x0F
00104$:
C$V2K_CHAR_LCD_P0_SDCC.h$519$1$1 ==.
XG$lcdbusy$0$0 ==.
ret
;------------------------------------------------------------
;Allocation info for local variables in function 'PWM0_Activate'
;------------------------------------------------------------
;------------------------------------------------------------
G$PWM0_Activate$0$0 ==.
C$V2K_CHAR_LCD_P0_SDCC.h$535$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:535: void PWM0_Activate()
; -----------------------------------------
; function PWM0_Activate
; -----------------------------------------
_PWM0_Activate:
C$V2K_CHAR_LCD_P0_SDCC.h$538$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:538: PERIPHEN2 |= 0x02; //Enable PWM SFR
; genOr
orl _PERIPHEN2,#0x02
C$V2K_CHAR_LCD_P0_SDCC.h$540$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:540: PWMCFG = 0x20;
; genAssign
mov _PWMCFG,#0x20
C$V2K_CHAR_LCD_P0_SDCC.h$543$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:543: PWMLDPOL = 0x00; //Set all PWM in normal polarity
; genAssign
mov _PWMLDPOL,#0x00
C$V2K_CHAR_LCD_P0_SDCC.h$548$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:548: PWMCFG = 0x58; //Point to PWM0 END MSB
; genAssign
mov _PWMCFG,#0x58
C$V2K_CHAR_LCD_P0_SDCC.h$549$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:549: PWMDATA = 0x00; //Set Max Count MSB = 0xFF
; genAssign
mov _PWMDATA,#0x00
C$V2K_CHAR_LCD_P0_SDCC.h$550$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:550: PWMCFG = 0x48; //Point to PWM0 END LSB
; genAssign
mov _PWMCFG,#0x48
C$V2K_CHAR_LCD_P0_SDCC.h$551$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:551: PWMDATA = 0xFF; //Set PWM MID MSB = 0x00 (8bit)
; genAssign
mov _PWMDATA,#0xFF
C$V2K_CHAR_LCD_P0_SDCC.h$554$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:554: PWMCFG = 0x50; //Point to PWM0 MID MSB
; genAssign
mov _PWMCFG,#0x50
C$V2K_CHAR_LCD_P0_SDCC.h$555$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:555: PWMDATA = 0x00; //Set PWM MID MSB = 0x00
; genAssign
mov _PWMDATA,#0x00
C$V2K_CHAR_LCD_P0_SDCC.h$556$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:556: PWMCFG = 0x40; //Point to PWM0 MID LSB
; genAssign
mov _PWMCFG,#0x40
C$V2K_CHAR_LCD_P0_SDCC.h$557$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:557: PWMDATA = 0x80; //Set PWM MID LSB = 0x80
; genAssign
mov _PWMDATA,#0x80
C$V2K_CHAR_LCD_P0_SDCC.h$560$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:560: PWMEN = 0x01;
; genAssign
mov _PWMEN,#0x01
C$V2K_CHAR_LCD_P0_SDCC.h$561$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:561: PWMCFG &= 0x1F; //Clear the PWMWAIT bit to initiate
; genAnd
anl _PWMCFG,#0x1F
C$V2K_CHAR_LCD_P0_SDCC.h$562$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:562: V2KDelay1ms(500); // Put a 500ms delay
; genCall
; Peephole 182.b used 16 bit load of dptr
mov dptr,#0x01F4
C$V2K_CHAR_LCD_P0_SDCC.h$566$1$1 ==.
XG$PWM0_Activate$0$0 ==.
; Peephole 253.b replaced lcall/ret with ljmp
ljmp _V2KDelay1ms
;------------------------------------------------------------
;Allocation info for local variables in function 'V2KDelay1ms'
;------------------------------------------------------------
;x Allocated to registers r4
;dlaisloop Allocated to registers r2 r3
;dlais Allocated to registers r2 r3
;------------------------------------------------------------
G$V2KDelay1ms$0$0 ==.
C$V2K_CHAR_LCD_P0_SDCC.h$586$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:586: void V2KDelay1ms(unsigned int dlais){
; -----------------------------------------
; function V2KDelay1ms
; -----------------------------------------
_V2KDelay1ms:
; genReceive
mov r2,dpl
mov r3,dph
C$V2K_CHAR_LCD_P0_SDCC.h$591$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:591: PERIPHEN1 |= 0x01; //LOAD PERIPHEN1 REG
; genOr
orl _PERIPHEN1,#0x01
C$V2K_CHAR_LCD_P0_SDCC.h$594$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:594: while ( dlaisloop > 0)
; genAssign
00104$:
; genIfx
mov a,r2
orl a,r3
; genIfxJump
; Peephole 110 removed ljmp by inverse jump logic
jz 00106$
00113$:
C$V2K_CHAR_LCD_P0_SDCC.h$596$2$2 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:596: TH0 = 0x63; //TIMER0 RELOAD VALUE FOR 1MS AT 40MHZ
; genAssign
mov _TH0,#0x63
C$V2K_CHAR_LCD_P0_SDCC.h$597$2$2 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:597: TL0 = 0xC0;
; genAssign
mov _TL0,#0xC0
C$V2K_CHAR_LCD_P0_SDCC.h$599$2$2 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:599: T0T1CLKCFG = 0x00; //NO PRESCALER FOR TIMER 0 CLOCK
; genAssign
mov _T0T1CLKCFG,#0x00
C$V2K_CHAR_LCD_P0_SDCC.h$600$2$2 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:600: T0CON = 0x04; //START TIMER 0, COUNT UP
; genAssign
mov _T0CON,#0x04
C$V2K_CHAR_LCD_P0_SDCC.h$601$2$2 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:601: do{
00101$:
C$V2K_CHAR_LCD_P0_SDCC.h$602$3$3 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:602: x=T0CON;
; genAssign
mov r4,_T0CON
C$V2K_CHAR_LCD_P0_SDCC.h$603$3$3 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:603: x= x & 0x80;
; genAnd
anl ar4,#0x80
C$V2K_CHAR_LCD_P0_SDCC.h$604$2$2 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:604: }while(x==0);
; genCmpEq
cjne r4,#0x00,00114$
; Peephole 112.b changed ljmp to sjmp
sjmp 00101$
00114$:
C$V2K_CHAR_LCD_P0_SDCC.h$606$2$2 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:606: T0CON = 0x00; //Stop Timer 0
; genAssign
mov _T0CON,#0x00
C$V2K_CHAR_LCD_P0_SDCC.h$608$2$2 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:608: dlaisloop = dlaisloop-1;
; genMinus
; genMinusDec
dec r2
cjne r2,#0xff,00115$
dec r3
00115$:
; Peephole 112.b changed ljmp to sjmp
sjmp 00104$
00106$:
C$V2K_CHAR_LCD_P0_SDCC.h$612$1$1 ==.
;C:/Program Files/SDCC/include/V2K_CHAR_LCD_P0_SDCC.h:612: PERIPHEN1 &= 0xFE; //Disable Timer 0
; genAnd
anl _PERIPHEN1,#0xFE
00107$:
C$V2K_CHAR_LCD_P0_SDCC.h$613$1$1 ==.
XG$V2KDelay1ms$0$0 ==.
ret
;------------------------------------------------------------
;Allocation info for local variables in function 'main'
;------------------------------------------------------------
;------------------------------------------------------------
G$main$0$0 ==.
C$V3K_FRAMLCD_DEMO_SDCC.c$79$1$1 ==.
;C:/APP_ENG_Local/Demo_Programs/VRS51L3074/FRAM_LCD_DEMO_SDCC/V3K_FRAMLCD_DEMO_SDCC.c:79: void main (void) {
; -----------------------------------------
; function main
; -----------------------------------------
_main:
C$V3K_FRAMLCD_DEMO_SDCC.c$82$1$1 ==.
;C:/APP_ENG_Local/Demo_Programs/VRS51L3074/FRAM_LCD_DEMO_SDCC/V3K_FRAMLCD_DEMO_SDCC.c:82: DEVMEMCFG |= 0xC0; //Activate the FRAM
; genOr
orl _DEVMEMCFG,#0xC0
C$V3K_FRAMLCD_DEMO_SDCC.c$84$1$1 ==.
;C:/APP_ENG_Local/Demo_Programs/VRS51L3074/FRAM_LCD_DEMO_SDCC/V3K_FRAMLCD_DEMO_SDCC.c:84: PERIPHEN1 = 0x01; //Enable Timer 0
; genAssign
mov _PERIPHEN1,#0x01
C$V3K_FRAMLCD_DEMO_SDCC.c$85$1$1 ==.
;C:/APP_ENG_Local/Demo_Programs/VRS51L3074/FRAM_LCD_DEMO_SDCC/V3K_FRAMLCD_DEMO_SDCC.c:85: LCDPORTDIR = 0x00; //Config LCD port as output
; genAssign
mov _P0PINCFG,#0x00
C$V3K_FRAMLCD_DEMO_SDCC.c$86$1$1 ==.
;C:/APP_ENG_Local/Demo_Programs/VRS51L3074/FRAM_LCD_DEMO_SDCC/V3K_FRAMLCD_DEMO_SDCC.c:86: PWM0_Activate(); //Activate PWM0 to generate 5V supply for LCD module
; genCall
lcall _PWM0_Activate
C$V3K_FRAMLCD_DEMO_SDCC.c$90$1$1 ==.
;C:/APP_ENG_Local/Demo_Programs/VRS51L3074/FRAM_LCD_DEMO_SDCC/V3K_FRAMLCD_DEMO_SDCC.c:90: initlcd(); //Initialise the LCD Module
; genCall
lcall _initlcd
C$V3K_FRAMLCD_DEMO_SDCC.c$92$1$1 ==.
;C:/APP_ENG_Local/Demo_Programs/VRS51L3074/FRAM_LCD_DEMO_SDCC/V3K_FRAMLCD_DEMO_SDCC.c:92: sendlcdcmd(LCD_L1C1); //Place LCD cursor on Line 1, Column 1
; genAssign
mov dptr,#_LCD_L1C1
clr a
movc a,@a+dptr
; genCall
; Peephole 244.c loading dpl from a instead of r2
mov r2,a
mov dpl,a
lcall _sendlcdcmd
C$V3K_FRAMLCD_DEMO_SDCC.c$94$1$1 ==.
;C:/APP_ENG_Local/Demo_Programs/VRS51L3074/FRAM_LCD_DEMO_SDCC/V3K_FRAMLCD_DEMO_SDCC.c:94: V2KDelay1ms(1); // Put a 1ms delay
; genCall
; Peephole 182.b used 16 bit load of dptr
mov dptr,#0x0001
lcall _V2KDelay1ms
C$V3K_FRAMLCD_DEMO_SDCC.c$97$1$1 ==.
;C:/APP_ENG_Local/Demo_Programs/VRS51L3074/FRAM_LCD_DEMO_SDCC/V3K_FRAMLCD_DEMO_SDCC.c:97: cptr = 0x00;
; genAssign
mov r0,#_cptr
mov @r0,#0x00
C$V3K_FRAMLCD_DEMO_SDCC.c$98$1$1 ==.
;C:/APP_ENG_Local/Demo_Programs/VRS51L3074/FRAM_LCD_DEMO_SDCC/V3K_FRAMLCD_DEMO_SDCC.c:98: while( msg1[cptr] != '\0')
00101$:
; genPlus
mov r0,#_cptr
mov a,@r0
; Peephole 181 changed mov to clr
; genPointerGet
; genCodePointerGet
; Peephole 181 changed mov to clr
; Peephole 186.d optimized movc sequence
mov dptr,#_msg1
movc a,@a+dptr
; genCmpEq
; Peephole 112.b changed ljmp to sjmp
; Peephole 115.b jump optimization
mov r2,a
jz 00103$
00122$:
C$V3K_FRAMLCD_DEMO_SDCC.c$100$2$2 ==.
;C:/APP_ENG_Local/Demo_Programs/VRS51L3074/FRAM_LCD_DEMO_SDCC/V3K_FRAMLCD_DEMO_SDCC.c:100: *(framptr+cptr) = msg1[cptr++];
; genPlus
mov r0,#_cptr
mov a,@r0
add a,_framptr
mov r2,a
; Peephole 181 changed mov to clr
clr a
addc a,(_framptr + 1)
mov r3,a
; genAssign
mov r0,#_cptr
mov ar4,@r0
; genPlus
mov r0,#_cptr
; genPlusIncr
mov a,#0x01
; Peephole 236.a used r4 instead of ar4
add a,r4
mov @r0,a
; genPlus
; Peephole 236.g used r4 instead of ar4
mov a,r4
; Peephole 181 changed mov to clr
; genPointerGet
; genCodePointerGet
; Peephole 181 changed mov to clr
; Peephole 186.d optimized movc sequence
mov dptr,#_msg1
movc a,@a+dptr
; genPointerSet
; genFarPointerSet
; Peephole 136 removed redundant moves
mov r4,a
mov dpl,r2
mov dph,r3
movx @dptr,a
; Peephole 112.b changed ljmp to sjmp
sjmp 00101$
00103$:
C$V3K_FRAMLCD_DEMO_SDCC.c$102$1$1 ==.
;C:/APP_ENG_Local/Demo_Programs/VRS51L3074/FRAM_LCD_DEMO_SDCC/V3K_FRAMLCD_DEMO_SDCC.c:102: *(framptr+cptr) = '\0';
; genPlus
mov r0,#_cptr
mov a,@r0
add a,_framptr
mov dpl,a
; Peephole 181 changed mov to clr
clr a
addc a,(_framptr + 1)
mov dph,a
; genPointerSet
; genFarPointerSet
; Peephole 181 changed mov to clr
clr a
movx @dptr,a
C$V3K_FRAMLCD_DEMO_SDCC.c$105$1$1 ==.
;C:/APP_ENG_Local/Demo_Programs/VRS51L3074/FRAM_LCD_DEMO_SDCC/V3K_FRAMLCD_DEMO_SDCC.c:105: sendlcdcmd(LCD_L1C1); //Place LCD cursor on Line 1, Column 1
; genAssign
mov dptr,#_LCD_L1C1
clr a
movc a,@a+dptr
; genCall
; Peephole 244.c loading dpl from a instead of r2
mov r2,a
mov dpl,a
lcall _sendlcdcmd
C$V3K_FRAMLCD_DEMO_SDCC.c$106$1$1 ==.
;C:/APP_ENG_Local/Demo_Programs/VRS51L3074/FRAM_LCD_DEMO_SDCC/V3K_FRAMLCD_DEMO_SDCC.c:106: cptr = 0x00;
; genAssign
mov r0,#_cptr
mov @r0,#0x00
C$V3K_FRAMLCD_DEMO_SDCC.c$107$1$1 ==.
;C:/APP_ENG_Local/Demo_Programs/VRS51L3074/FRAM_LCD_DEMO_SDCC/V3K_FRAMLCD_DEMO_SDCC.c:107: while((*(framptr + cptr) != '\0') & (cptr < 16)) //Display "VRS51L2x
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -