📄 v3k_fram_uart_demo1_sdcc.asm
字号:
_WriteReadFramUart0_PARM_2::
.ds 1
;--------------------------------------------------------
; overlayable items in internal ram
;--------------------------------------------------------
.area OSEG (OVR,DATA)
.area OSEG (OVR,DATA)
.area OSEG (OVR,DATA)
.area OSEG (OVR,DATA)
LWriteFram$value$1$1==.
_WriteFram_PARM_2::
.ds 1
.area OSEG (OVR,DATA)
.area OSEG (OVR,DATA)
;--------------------------------------------------------
; Stack segment in internal ram
;--------------------------------------------------------
.area SSEG (DATA)
__start__stack:
.ds 1
;--------------------------------------------------------
; indirectly addressable internal ram data
;--------------------------------------------------------
.area ISEG (DATA)
;--------------------------------------------------------
; bit data
;--------------------------------------------------------
.area BSEG (BIT)
;--------------------------------------------------------
; paged external ram data
;--------------------------------------------------------
.area PSEG (PAG,XDATA)
;--------------------------------------------------------
; external ram data
;--------------------------------------------------------
.area XSEG (XDATA)
G$frambase$0$0 == 0x8000
_frambase = 0x8000
;--------------------------------------------------------
; external initialized ram data
;--------------------------------------------------------
.area XISEG (XDATA)
.area CSEG (CODE)
.area GSINIT0 (CODE)
.area GSINIT1 (CODE)
.area GSINIT2 (CODE)
.area GSINIT3 (CODE)
.area GSINIT4 (CODE)
.area GSINIT5 (CODE)
;--------------------------------------------------------
; interrupt vector
;--------------------------------------------------------
.area CSEG (CODE)
__interrupt_vect:
ljmp __sdcc_gsinit_startup
ljmp _INT0Interrupt
.ds 5
reti
.ds 7
reti
.ds 7
reti
.ds 7
reti
.ds 7
ljmp _UART0Interrupt
;--------------------------------------------------------
; global & static initialisations
;--------------------------------------------------------
.area CSEG (CODE)
.area GSINIT (CODE)
.area GSFINAL (CODE)
.area GSINIT (CODE)
.globl __sdcc_gsinit_startup
.globl __sdcc_program_startup
.globl __start__stack
.globl __mcs51_genXINIT
.globl __mcs51_genXRAMCLEAR
.globl __mcs51_genRAMCLEAR
G$FramInit$0$0 ==.
C$V3K_FRAM_UART_Demo1_SDCC.c$62$1$1 ==.
;C:/APP_ENG_Local/Demo_Programs/VRS51L3074/V3K_FRAM_UART_Demo1_SDCC/V3K_FRAM_UART_Demo1_SDCC.c:62: xdata unsigned char * data framptr = &frambase ; //Init a pointer in IRAM pointing to the frambase var.
; genAddrOf
mov _framptr,#_frambase
mov (_framptr + 1),#(_frambase >> 8)
G$FramInit$0$0 ==.
C$V3K_FRAM_UART_Demo1_SDCC.c$66$1$1 ==.
;C:/APP_ENG_Local/Demo_Programs/VRS51L3074/V3K_FRAM_UART_Demo1_SDCC/V3K_FRAM_UART_Demo1_SDCC.c:66: char msg[] = "FRAM Memory Demo \0";
; genPointerSet
; genNearPointerSet
; genDataPointerSet
mov _msg,#0x46
; genPointerSet
; genNearPointerSet
; genDataPointerSet
mov (_msg + 0x0001),#0x52
; genPointerSet
; genNearPointerSet
; genDataPointerSet
mov (_msg + 0x0002),#0x41
; genPointerSet
; genNearPointerSet
; genDataPointerSet
mov (_msg + 0x0003),#0x4D
; genPointerSet
; genNearPointerSet
; genDataPointerSet
mov (_msg + 0x0004),#0x20
; genPointerSet
; genNearPointerSet
; genDataPointerSet
mov (_msg + 0x0005),#0x4D
; genPointerSet
; genNearPointerSet
; genDataPointerSet
mov (_msg + 0x0006),#0x65
; genPointerSet
; genNearPointerSet
; genDataPointerSet
mov (_msg + 0x0007),#0x6D
; genPointerSet
; genNearPointerSet
; genDataPointerSet
mov (_msg + 0x0008),#0x6F
; genPointerSet
; genNearPointerSet
; genDataPointerSet
mov (_msg + 0x0009),#0x72
; genPointerSet
; genNearPointerSet
; genDataPointerSet
mov (_msg + 0x000a),#0x79
; genPointerSet
; genNearPointerSet
; genDataPointerSet
mov (_msg + 0x000b),#0x20
; genPointerSet
; genNearPointerSet
; genDataPointerSet
mov (_msg + 0x000c),#0x44
; genPointerSet
; genNearPointerSet
; genDataPointerSet
mov (_msg + 0x000d),#0x65
; genPointerSet
; genNearPointerSet
; genDataPointerSet
mov (_msg + 0x000e),#0x6D
; genPointerSet
; genNearPointerSet
; genDataPointerSet
mov (_msg + 0x000f),#0x6F
; genPointerSet
; genNearPointerSet
; genDataPointerSet
mov (_msg + 0x0010),#0x20
; genPointerSet
; genNearPointerSet
; genDataPointerSet
mov (_msg + 0x0011),#0x00
; genPointerSet
; genNearPointerSet
; genDataPointerSet
mov (_msg + 0x0012),#0x00
G$FramInit$0$0 ==.
C$V3K_FRAM_UART_Demo1_SDCC.c$67$1$1 ==.
;C:/APP_ENG_Local/Demo_Programs/VRS51L3074/V3K_FRAM_UART_Demo1_SDCC/V3K_FRAM_UART_Demo1_SDCC.c:67: char msgint0[] = "EXT INT0 received";
; genPointerSet
; genNearPointerSet
; genDataPointerSet
mov _msgint0,#0x45
; genPointerSet
; genNearPointerSet
; genDataPointerSet
mov (_msgint0 + 0x0001),#0x58
; genPointerSet
; genNearPointerSet
; genDataPointerSet
mov (_msgint0 + 0x0002),#0x54
; genPointerSet
; genNearPointerSet
; genDataPointerSet
mov (_msgint0 + 0x0003),#0x20
; genPointerSet
; genNearPointerSet
; genDataPointerSet
mov (_msgint0 + 0x0004),#0x49
; genPointerSet
; genNearPointerSet
; genDataPointerSet
mov (_msgint0 + 0x0005),#0x4E
; genPointerSet
; genNearPointerSet
; genDataPointerSet
mov (_msgint0 + 0x0006),#0x54
; genPointerSet
; genNearPointerSet
; genDataPointerSet
mov (_msgint0 + 0x0007),#0x30
; genPointerSet
; genNearPointerSet
; genDataPointerSet
mov (_msgint0 + 0x0008),#0x20
; genPointerSet
; genNearPointerSet
; genDataPointerSet
mov (_msgint0 + 0x0009),#0x72
; genPointerSet
; genNearPointerSet
; genDataPointerSet
mov (_msgint0 + 0x000a),#0x65
; genPointerSet
; genNearPointerSet
; genDataPointerSet
mov (_msgint0 + 0x000b),#0x63
; genPointerSet
; genNearPointerSet
; genDataPointerSet
mov (_msgint0 + 0x000c),#0x65
; genPointerSet
; genNearPointerSet
; genDataPointerSet
mov (_msgint0 + 0x000d),#0x69
; genPointerSet
; genNearPointerSet
; genDataPointerSet
mov (_msgint0 + 0x000e),#0x76
; genPointerSet
; genNearPointerSet
; genDataPointerSet
mov (_msgint0 + 0x000f),#0x65
; genPointerSet
; genNearPointerSet
; genDataPointerSet
mov (_msgint0 + 0x0010),#0x64
; genPointerSet
; genNearPointerSet
; genDataPointerSet
mov (_msgint0 + 0x0011),#0x00
.area GSFINAL (CODE)
ljmp __sdcc_program_startup
;--------------------------------------------------------
; Home
;--------------------------------------------------------
.area HOME (CODE)
.area CSEG (CODE)
;--------------------------------------------------------
; code
;--------------------------------------------------------
.area CSEG (CODE)
__sdcc_program_startup:
lcall _main
; return from main will lock up
sjmp .
;------------------------------------------------------------
;Allocation info for local variables in function 'main'
;------------------------------------------------------------
;letter Allocated to registers r2
;cptr Allocated to registers r3 r4
;------------------------------------------------------------
G$main$0$0 ==.
C$V3K_FRAM_UART_Demo1_SDCC.c$74$0$0 ==.
;C:/APP_ENG_Local/Demo_Programs/VRS51L3074/V3K_FRAM_UART_Demo1_SDCC/V3K_FRAM_UART_Demo1_SDCC.c:74: void main (void){
; -----------------------------------------
; function main
; -----------------------------------------
_main:
ar2 = 0x02
ar3 = 0x03
ar4 = 0x04
ar5 = 0x05
ar6 = 0x06
ar7 = 0x07
ar0 = 0x00
ar1 = 0x01
C$V3K_FRAM_UART_Demo1_SDCC.c$79$1$1 ==.
;C:/APP_ENG_Local/Demo_Programs/VRS51L3074/V3K_FRAM_UART_Demo1_SDCC/V3K_FRAM_UART_Demo1_SDCC.c:79: PERIPHEN1 = 0x09; //Enable UART0 + Timer0
; genAssign
mov _PERIPHEN1,#0x09
C$V3K_FRAM_UART_Demo1_SDCC.c$80$1$1 ==.
;C:/APP_ENG_Local/Demo_Programs/VRS51L3074/V3K_FRAM_UART_Demo1_SDCC/V3K_FRAM_UART_Demo1_SDCC.c:80: PERIPHEN2 = 0x08; //Enable IO Ports
; genAssign
mov _PERIPHEN2,#0x08
C$V3K_FRAM_UART_Demo1_SDCC.c$82$1$1 ==.
;C:/APP_ENG_Local/Demo_Programs/VRS51L3074/V3K_FRAM_UART_Demo1_SDCC/V3K_FRAM_UART_Demo1_SDCC.c:82: uart0config(); //Configure Uart0
; genCall
lcall _uart0config
C$V3K_FRAM_UART_Demo1_SDCC.c$87$1$1 ==.
;C:/APP_ENG_Local/Demo_Programs/VRS51L3074/V3K_FRAM_UART_Demo1_SDCC/V3K_FRAM_UART_Demo1_SDCC.c:87: GENINTEN = 0x02; //Set the PININTCFG bit before configuring the INT0 pin event
; genAssign
mov _GENINTEN,#0x02
C$V3K_FRAM_UART_Demo1_SDCC.c$91$1$1 ==.
;C:/APP_ENG_Local/Demo_Programs/VRS51L3074/V3K_FRAM_UART_Demo1_SDCC/V3K_FRAM_UART_Demo1_SDCC.c:91: INTSRC1 = 0x01; //INT0 vector source = INT0 pin
; genAssign
mov _INTSRC1,#0x01
C$V3K_FRAM_UART_Demo1_SDCC.c$92$1$1 ==.
;C:/APP_ENG_Local/Demo_Programs/VRS51L3074/V3K_FRAM_UART_Demo1_SDCC/V3K_FRAM_UART_Demo1_SDCC.c:92: IPINSENS1 = 0x01; //Set INT0 sensitive on edge(1) or Level(0)
; genAssign
mov _IPINSENS1,#0x01
C$V3K_FRAM_UART_Demo1_SDCC.c$93$1$1 ==.
;C:/APP_ENG_Local/Demo_Programs/VRS51L3074/V3K_FRAM_UART_Demo1_SDCC/V3K_FRAM_UART_Demo1_SDCC.c:93: IPININV1 = 0x00; //Set INT0 Pin sensitivity on Low Level/Inversion
; genAssign
mov _IPININV1,#0x00
C$V3K_FRAM_UART_Demo1_SDCC.c$94$1$1 ==.
;C:/APP_ENG_Local/Demo_Programs/VRS51L3074/V3K_FRAM_UART_Demo1_SDCC/V3K_FRAM_UART_Demo1_SDCC.c:94: INTEN1 = 0x21; //Enable INT0 (bit0) and UART0 (bit5) Interrupt
; genAssign
mov _INTEN1,#0x21
C$V3K_FRAM_UART_Demo1_SDCC.c$95$1$1 ==.
;C:/APP_ENG_Local/Demo_Programs/VRS51L3074/V3K_FRAM_UART_Demo1_SDCC/V3K_FRAM_UART_Demo1_SDCC.c:95: GENINTEN = 0x01; //Enable Global interrupt
; genAssign
mov _GENINTEN,#0x01
C$V3K_FRAM_UART_Demo1_SDCC.c$97$1$1 ==.
;C:/APP_ENG_Local/Demo_Programs/VRS51L3074/V3K_FRAM_UART_Demo1_SDCC/V3K_FRAM_UART_Demo1_SDCC.c:97: DEVMEMCFG |= 0xC0; //Activate the FRAM
; genOr
orl _DEVMEMCFG,#0xC0
C$V3K_FRAM_UART_Demo1_SDCC.c$101$1$1 ==.
;C:/APP_ENG_Local/Demo_Programs/VRS51L3074/V3K_FRAM_UART_Demo1_SDCC/V3K_FRAM_UART_Demo1_SDCC.c:101: letter = 'A';
; genAssign
mov r2,#0x41
C$V3K_FRAM_UART_Demo1_SDCC.c$102$1$1 ==.
;C:/APP_ENG_Local/Demo_Programs/VRS51L3074/V3K_FRAM_UART_Demo1_SDCC/V3K_FRAM_UART_Demo1_SDCC.c:102: for(cptr = 0; cptr < 0x400; cptr++)
; genAssign
mov r3,#0x00
mov r4,#0x00
00131$:
; genCmpLt
; genCmp
clr c
mov a,r3
subb a,#0x00
mov a,r4
xrl a,#0x80
subb a,#0x84
; genIfxJump
; Peephole 108 removed ljmp by inverse jump logic
jnc 00134$
00203$:
C$V3K_FRAM_UART_Demo1_SDCC.c$104$2$2 ==.
;C:/APP_ENG_Local/Demo_Programs/VRS51L3074/V3K_FRAM_UART_Demo1_SDCC/V3K_FRAM_UART_Demo1_SDCC.c:104: *(framptr+cptr) = letter;
; genPlus
; Peephole 236.g used r3 instead of ar3
mov a,r3
add a,_framptr
mov dpl,a
; Peephole 236.g used r4 instead of ar4
mov a,r4
addc a,(_framptr + 1)
mov dph,a
; genPointerSet
; genFarPointerSet
mov a,r2
movx @dptr,a
C$V3K_FRAM_UART_Demo1_SDCC.c$106$2$2 ==.
;C:/APP_ENG_Local/Demo_Programs/VRS51L3074/V3K_FRAM_UART_Demo1_SDCC/V3K_FRAM_UART_Demo1_SDCC.c:106: if(letter == 'A')
; genCmpEq
; Peephole 112.b changed ljmp to sjmp
; Peephole 199 optimized misc jump sequence
cjne r2,#0x41,00102$
;00204$:
; Peephole 200 removed redundant sjmp
00205$:
C$V3K_FRAM_UART_Demo1_SDCC.c$107$2$2 ==.
;C:/APP_ENG_Local/Demo_Programs/VRS51L3074/V3K_FRAM_UART_Demo1_SDCC/V3K_FRAM_UART_Demo1_SDCC.c:107: letter = 'Z';
; genAssign
mov r2,#0x5A
; Peephole 112.b changed ljmp to sjmp
sjmp 00133$
00102$:
C$V3K_FRAM_UART_Demo1_SDCC.c$109$2$2 ==.
;C:/APP_ENG_Local/Demo_Programs/VRS51L3074/V3K_FRAM_UART_Demo1_SDCC/V3K_FRAM_UART_Demo1_SDCC.c:109: letter = 'A';
; genAssign
mov r2,#0x41
00133$:
C$V3K_FRAM_UART_Demo1_SDCC.c$102$1$1 ==.
;C:/APP_ENG_Local/Demo_Programs/VRS51L3074/V3K_FRAM_UART_Demo1_SDCC/V3K_FRAM_UART_Demo1_SDCC.c:102: for(cptr = 0; cptr < 0x400; cptr++)
; genPlus
; genPlusIncr
inc r3
; Peephole 112.b changed ljmp to sjmp
; Peephole 243 avoided branch to sjmp
cjne r3,#0x00,00131$
inc r4
00206$:
sjmp 00131$
00134$:
C$V3K_FRAM_UART_Demo1_SDCC.c$113$1$1 ==.
;C:/APP_ENG_Local/Demo_Programs/VRS51L3074/V3K_FRAM_UART_Demo1_SDCC/V3K_FRAM_UART_Demo1_SDCC.c:113: letter = 'B';
; genAssign
mov r2,#0x42
C$V3K_FRAM_UART_Demo1_SDCC.c$114$1$1 ==.
;C:/APP_ENG_Local/Demo_Programs/VRS51L3074/V3K_FRAM_UART_Demo1_SDCC/V3K_FRAM_UART_Demo1_SDCC.c:114: for(cptr = 0x400; cptr < 0x800; cptr++)
; genAssign
mov r3,#0x00
mov r4,#0x04
00135$:
; genCmpLt
; genCmp
clr c
mov a,r3
subb a,#0x00
mov a,r4
xrl a,#0x80
subb a,#0x88
; genIfxJump
; Peephole 108 removed ljmp by inverse jump logic
jnc 00138$
00207$:
C$V3K_FRAM_UART_Demo1_SDCC.c$116$2$3 ==.
;C:/APP_ENG_Local/Demo_Programs/VRS51L3074/V3K_FRAM_UART_Demo1_SDCC/V3K_FRAM_UART_Demo1_SDCC.c:116: *(framptr+cptr) = letter;
; genPlus
; Peephole 236.g used r3 instead of ar3
mov a,r3
add a,_framptr
mov dpl,a
; Peephole 236.g used r4 instead of ar4
mov a,r4
addc a,(_framptr + 1)
mov dph,a
; genPointerSet
; genFarPointerSet
mov a,r2
movx @dptr,a
C$V3K_FRAM_UART_Demo1_SDCC.c$118$2$3 ==.
;C:/APP_ENG_Local/Demo_Programs/VRS51L3074/V3K_FRAM_UART_Demo1_SDCC/V3K_FRAM_UART_Demo1_SDCC.c:118: if(letter == 'B')
; genCmpEq
; Peephole 112.b changed ljmp to sjmp
; Peephole 199 optimized misc jump sequence
cjne r2,#0x42,00105$
;00208$:
; Peephole 200 removed redundant sjmp
00209$:
C$V3K_FRAM_UART_Demo1_SDCC.c$119$2$3 ==.
;C:/APP_ENG_Local/Demo_Programs/VRS51L3074/V3K_FRAM_UART_Demo1_SDCC/V3K_FRAM_UART_Demo1_SDCC.c:119: letter = 'Y';
; genAssign
mov r2,#0x59
; Peephole 112.b changed ljmp to sjmp
sjmp 00137$
00105$:
C$V3K_FRAM_UART_Demo1_SDCC.c$121$2$3 ==.
;C:/APP_ENG_Local/Demo_Programs/VRS51L3074/V3K_FRAM_UART_Demo1_SDCC/V3K_FRAM_UART_Demo1_SDCC.c:121: letter = 'B';
; genAssign
mov r2,#0x42
00137$:
C$V3K_FRAM_UART_Demo1_SDCC.c$114$1$1 ==.
;C:/APP_ENG_Local/Demo_Programs/VRS51L3074/V3K_FRAM_UART_Demo1_SDCC/V3K_FRAM_UART_Demo1_SDCC.c:114: for(cptr = 0x400; cptr < 0x800; cptr++)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -