📄 eeprom_boot.a51
字号:
;--------------------------------------------------------; Hand tweaked minimal eeprom boot code;-------------------------------------------------------- .module eeprom_boot .optsdcc -mmcs51 --model-small ;--------------------------------------------------------; Public variables in this module;-------------------------------------------------------- .globl _eeprom_init .globl _EP8FIFOBUF .globl _EP6FIFOBUF .globl _EP4FIFOBUF .globl _EP2FIFOBUF .globl _EP1INBUF .globl _EP1OUTBUF .globl _EP0BUF .globl _CT4 .globl _CT3 .globl _CT2 .globl _CT1 .globl _USBTEST .globl _TESTCFG .globl _DBUG .globl _UDMACRCQUAL .globl _UDMACRCL .globl _UDMACRCH .globl _GPIFHOLDAMOUNT .globl _FLOWSTBHPERIOD .globl _FLOWSTBEDGE .globl _FLOWSTB .globl _FLOWHOLDOFF .globl _FLOWEQ1CTL .globl _FLOWEQ0CTL .globl _FLOWLOGIC .globl _FLOWSTATE .globl _GPIFABORT .globl _GPIFREADYSTAT .globl _GPIFREADYCFG .globl _XGPIFSGLDATLNOX .globl _XGPIFSGLDATLX .globl _XGPIFSGLDATH .globl _EP8GPIFTRIG .globl _EP8GPIFPFSTOP .globl _EP8GPIFFLGSEL .globl _EP6GPIFTRIG .globl _EP6GPIFPFSTOP .globl _EP6GPIFFLGSEL .globl _EP4GPIFTRIG .globl _EP4GPIFPFSTOP .globl _EP4GPIFFLGSEL .globl _EP2GPIFTRIG .globl _EP2GPIFPFSTOP .globl _EP2GPIFFLGSEL .globl _GPIFTCB0 .globl _GPIFTCB1 .globl _GPIFTCB2 .globl _GPIFTCB3 .globl _GPIFADRL .globl _GPIFADRH .globl _GPIFCTLCFG .globl _GPIFIDLECTL .globl _GPIFIDLECS .globl _GPIFWFSELECT .globl _SETUPDAT .globl _SUDPTRCTL .globl _SUDPTRL .globl _SUDPTRH .globl _EP8FIFOBCL .globl _EP8FIFOBCH .globl _EP6FIFOBCL .globl _EP6FIFOBCH .globl _EP4FIFOBCL .globl _EP4FIFOBCH .globl _EP2FIFOBCL .globl _EP2FIFOBCH .globl _EP8FIFOFLGS .globl _EP6FIFOFLGS .globl _EP4FIFOFLGS .globl _EP2FIFOFLGS .globl _EP8CS .globl _EP6CS .globl _EP4CS .globl _EP2CS .globl _EP1INCS .globl _EP1OUTCS .globl _EP0CS .globl _EP8BCL .globl _EP8BCH .globl _EP6BCL .globl _EP6BCH .globl _EP4BCL .globl _EP4BCH .globl _EP2BCL .globl _EP2BCH .globl _EP1INBC .globl _EP1OUTBC .globl _EP0BCL .globl _EP0BCH .globl _FNADDR .globl _MICROFRAME .globl _USBFRAMEL .globl _USBFRAMEH .globl _TOGCTL .globl _WAKEUPCS .globl _SUSPEND .globl _USBCS .globl _XAUTODAT2 .globl _XAUTODAT1 .globl _I2CTL .globl _I2DAT .globl _I2CS .globl _PORTECFG .globl _PORTCCFG .globl _PORTACFG .globl _INTSETUP .globl _INT4IVEC .globl _INT2IVEC .globl _CLRERRCNT .globl _ERRCNTLIM .globl _USBERRIRQ .globl _USBERRIE .globl _GPIFIRQ .globl _GPIFIE .globl _EPIRQ .globl _EPIE .globl _USBIRQ .globl _USBIE .globl _NAKIRQ .globl _NAKIE .globl _IBNIRQ .globl _IBNIE .globl _EP8FIFOIRQ .globl _EP8FIFOIE .globl _EP6FIFOIRQ .globl _EP6FIFOIE .globl _EP4FIFOIRQ .globl _EP4FIFOIE .globl _EP2FIFOIRQ .globl _EP2FIFOIE .globl _OUTPKTEND .globl _INPKTEND .globl _EP8ISOINPKTS .globl _EP6ISOINPKTS .globl _EP4ISOINPKTS .globl _EP2ISOINPKTS .globl _EP8FIFOPFL .globl _EP8FIFOPFH .globl _EP6FIFOPFL .globl _EP6FIFOPFH .globl _EP4FIFOPFL .globl _EP4FIFOPFH .globl _EP2FIFOPFL .globl _EP2FIFOPFH .globl _EP8AUTOINLENL .globl _EP8AUTOINLENH .globl _EP6AUTOINLENL .globl _EP6AUTOINLENH .globl _EP4AUTOINLENL .globl _EP4AUTOINLENH .globl _EP2AUTOINLENL .globl _EP2AUTOINLENH .globl _EP8FIFOCFG .globl _EP6FIFOCFG .globl _EP4FIFOCFG .globl _EP2FIFOCFG .globl _EP8CFG .globl _EP6CFG .globl _EP4CFG .globl _EP2CFG .globl _EP1INCFG .globl _EP1OUTCFG .globl _REVCTL .globl _REVID .globl _FIFOPINPOLAR .globl _UART230 .globl _BPADDRL .globl _BPADDRH .globl _BREAKPT .globl _FIFORESET .globl _PINFLAGSCD .globl _PINFLAGSAB .globl _IFCONFIG .globl _CPUCS .globl _RES_WAVEDATA_END .globl _GPIF_WAVE_DATA;--------------------------------------------------------; special function registers;--------------------------------------------------------_IOA = 0x0080_SP = 0x0081_DPL = 0x0082_DPH = 0x0083_DPL1 = 0x0084_DPH1 = 0x0085_DPS = 0x0086_PCON = 0x0087_TCON = 0x0088_TMOD = 0x0089_TL0 = 0x008a_TL1 = 0x008b_TH0 = 0x008c_TH1 = 0x008d_CKCON = 0x008e_IOB = 0x0090_EXIF = 0x0091_MPAGE = 0x0092_SCON0 = 0x0098_SBUF0 = 0x0099_APTR1H = 0x009a_APTR1L = 0x009b_AUTODAT1 = 0x009c_AUTOPTRH2 = 0x009d_AUTOPTRL2 = 0x009e_AUTODAT2 = 0x009f_IOC = 0x00a0_INT2CLR = 0x00a1_INT4CLR = 0x00a2_IE = 0x00a8_EP2468STAT = 0x00aa_EP24FIFOFLGS = 0x00ab_EP68FIFOFLGS = 0x00ac_AUTOPTRSETUP = 0x00af_IOD = 0x00b0_IOE = 0x00b1_OEA = 0x00b2_OEB = 0x00b3_OEC = 0x00b4_OED = 0x00b5_OEE = 0x00b6_IP = 0x00b8_EP01STAT = 0x00ba_GPIFTRIG = 0x00bb_GPIFSGLDATH = 0x00bd_GPIFSGLDATLX = 0x00be_GPIFSGLDATLNOX = 0x00bf_SCON1 = 0x00c0_SBUF1 = 0x00c1_T2CON = 0x00c8_RCAP2L = 0x00ca_RCAP2H = 0x00cb_TL2 = 0x00cc_TH2 = 0x00cd_PSW = 0x00d0_EICON = 0x00d8_ACC = 0x00e0_EIE = 0x00e8_B = 0x00f0_EIP = 0x00f8;--------------------------------------------------------; special function bits ;--------------------------------------------------------_SEL = 0x0086_IT0 = 0x0088_IE0 = 0x0089_IT1 = 0x008a_IE1 = 0x008b_TR0 = 0x008c_TF0 = 0x008d_TR1 = 0x008e_TF1 = 0x008f_RI = 0x0098_TI = 0x0099_RB8 = 0x009a_TB8 = 0x009b_REN = 0x009c_SM2 = 0x009d_SM1 = 0x009e_SM0 = 0x009f_EX0 = 0x00a8_ET0 = 0x00a9_EX1 = 0x00aa_ET1 = 0x00ab_ES0 = 0x00ac_ET2 = 0x00ad_ES1 = 0x00ae_EA = 0x00af_PX0 = 0x00b8_PT0 = 0x00b9_PX1 = 0x00ba_PT1 = 0x00bb_PS0 = 0x00bc_PT2 = 0x00bd_PS1 = 0x00be_RI1 = 0x00c0_TI1 = 0x00c1_RB81 = 0x00c2_TB81 = 0x00c3_REN1 = 0x00c4_SM21 = 0x00c5_SM11 = 0x00c6_SM01 = 0x00c7_CP_RL2 = 0x00c8_C_T2 = 0x00c9_TR2 = 0x00ca_EXEN2 = 0x00cb_TCLK = 0x00cc_RCLK = 0x00cd_EXF2 = 0x00ce_TF2 = 0x00cf_P = 0x00d0_FL = 0x00d1_OV = 0x00d2_RS0 = 0x00d3_RS1 = 0x00d4_F0 = 0x00d5_AC = 0x00d6_CY = 0x00d7_INT6 = 0x00db_RESI = 0x00dc_ERESI = 0x00dd_SMOD1 = 0x00df_EIUSB = 0x00e8_EI2C = 0x00e9_EIEX4 = 0x00ea_EIEX5 = 0x00eb_EIEX6 = 0x00ec_PUSB = 0x00f8_PI2C = 0x00f9_EIPX4 = 0x00fa_EIPX5 = 0x00fb_EIPX6 = 0x00fc_bitS_CLK = 0x0080_bitS_OUT = 0x0081_bitS_IN = 0x0082_bitALTERA_DATA0 = 0x00a1_bitALTERA_DCLK = 0x00a3;--------------------------------------------------------; overlayable register banks ;-------------------------------------------------------- .area REG_BANK_0 (REL,OVR,DATA) .ds 8;--------------------------------------------------------; internal ram data;-------------------------------------------------------- .area DSEG (DATA);--------------------------------------------------------; overlayable items in internal ram ;-------------------------------------------------------- .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);--------------------------------------------------------; external ram data;-------------------------------------------------------- .area XSEG (XDATA)_GPIF_WAVE_DATA = 0xe400_RES_WAVEDATA_END = 0xe480_CPUCS = 0xe600_IFCONFIG = 0xe601_PINFLAGSAB = 0xe602_PINFLAGSCD = 0xe603_FIFORESET = 0xe604_BREAKPT = 0xe605_BPADDRH = 0xe606_BPADDRL = 0xe607_UART230 = 0xe608_FIFOPINPOLAR = 0xe609_REVID = 0xe60a_REVCTL = 0xe60b_EP1OUTCFG = 0xe610_EP1INCFG = 0xe611_EP2CFG = 0xe612_EP4CFG = 0xe613_EP6CFG = 0xe614_EP8CFG = 0xe615_EP2FIFOCFG = 0xe618_EP4FIFOCFG = 0xe619_EP6FIFOCFG = 0xe61a_EP8FIFOCFG = 0xe61b_EP2AUTOINLENH = 0xe620_EP2AUTOINLENL = 0xe621_EP4AUTOINLENH = 0xe622_EP4AUTOINLENL = 0xe623_EP6AUTOINLENH = 0xe624_EP6AUTOINLENL = 0xe625_EP8AUTOINLENH = 0xe626_EP8AUTOINLENL = 0xe627_EP2FIFOPFH = 0xe630_EP2FIFOPFL = 0xe631_EP4FIFOPFH = 0xe632_EP4FIFOPFL = 0xe633_EP6FIFOPFH = 0xe634_EP6FIFOPFL = 0xe635_EP8FIFOPFH = 0xe636_EP8FIFOPFL = 0xe637_EP2ISOINPKTS = 0xe640_EP4ISOINPKTS = 0xe641_EP6ISOINPKTS = 0xe642_EP8ISOINPKTS = 0xe643_INPKTEND = 0xe648_OUTPKTEND = 0xe649_EP2FIFOIE = 0xe650_EP2FIFOIRQ = 0xe651_EP4FIFOIE = 0xe652_EP4FIFOIRQ = 0xe653_EP6FIFOIE = 0xe654_EP6FIFOIRQ = 0xe655_EP8FIFOIE = 0xe656_EP8FIFOIRQ = 0xe657_IBNIE = 0xe658_IBNIRQ = 0xe659_NAKIE = 0xe65a_NAKIRQ = 0xe65b_USBIE = 0xe65c_USBIRQ = 0xe65d_EPIE = 0xe65e_EPIRQ = 0xe65f_GPIFIE = 0xe660_GPIFIRQ = 0xe661_USBERRIE = 0xe662_USBERRIRQ = 0xe663_ERRCNTLIM = 0xe664_CLRERRCNT = 0xe665_INT2IVEC = 0xe666_INT4IVEC = 0xe667_INTSETUP = 0xe668_PORTACFG = 0xe670_PORTCCFG = 0xe671_PORTECFG = 0xe672_I2CS = 0xe678_I2DAT = 0xe679_I2CTL = 0xe67a_XAUTODAT1 = 0xe67b_XAUTODAT2 = 0xe67c_USBCS = 0xe680_SUSPEND = 0xe681_WAKEUPCS = 0xe682_TOGCTL = 0xe683_USBFRAMEH = 0xe684_USBFRAMEL = 0xe685_MICROFRAME = 0xe686_FNADDR = 0xe687_EP0BCH = 0xe68a_EP0BCL = 0xe68b_EP1OUTBC = 0xe68d_EP1INBC = 0xe68f_EP2BCH = 0xe690_EP2BCL = 0xe691_EP4BCH = 0xe694_EP4BCL = 0xe695_EP6BCH = 0xe698_EP6BCL = 0xe699_EP8BCH = 0xe69c_EP8BCL = 0xe69d_EP0CS = 0xe6a0_EP1OUTCS = 0xe6a1_EP1INCS = 0xe6a2_EP2CS = 0xe6a3_EP4CS = 0xe6a4_EP6CS = 0xe6a5_EP8CS = 0xe6a6_EP2FIFOFLGS = 0xe6a7_EP4FIFOFLGS = 0xe6a8_EP6FIFOFLGS = 0xe6a9_EP8FIFOFLGS = 0xe6aa_EP2FIFOBCH = 0xe6ab_EP2FIFOBCL = 0xe6ac_EP4FIFOBCH = 0xe6ad_EP4FIFOBCL = 0xe6ae_EP6FIFOBCH = 0xe6af_EP6FIFOBCL = 0xe6b0_EP8FIFOBCH = 0xe6b1_EP8FIFOBCL = 0xe6b2_SUDPTRH = 0xe6b3_SUDPTRL = 0xe6b4_SUDPTRCTL = 0xe6b5_SETUPDAT = 0xe6b8_GPIFWFSELECT = 0xe6c0_GPIFIDLECS = 0xe6c1_GPIFIDLECTL = 0xe6c2_GPIFCTLCFG = 0xe6c3_GPIFADRH = 0xe6c4_GPIFADRL = 0xe6c5_GPIFTCB3 = 0xe6ce_GPIFTCB2 = 0xe6cf_GPIFTCB1 = 0xe6d0_GPIFTCB0 = 0xe6d1_EP2GPIFFLGSEL = 0xe6d2_EP2GPIFPFSTOP = 0xe6d3_EP2GPIFTRIG = 0xe6d4_EP4GPIFFLGSEL = 0xe6da_EP4GPIFPFSTOP = 0xe6db_EP4GPIFTRIG = 0xe6dc_EP6GPIFFLGSEL = 0xe6e2_EP6GPIFPFSTOP = 0xe6e3_EP6GPIFTRIG = 0xe6e4_EP8GPIFFLGSEL = 0xe6ea_EP8GPIFPFSTOP = 0xe6eb_EP8GPIFTRIG = 0xe6ec_XGPIFSGLDATH = 0xe6f0_XGPIFSGLDATLX = 0xe6f1_XGPIFSGLDATLNOX = 0xe6f2_GPIFREADYCFG = 0xe6f3_GPIFREADYSTAT = 0xe6f4_GPIFABORT = 0xe6f5_FLOWSTATE = 0xe6c6_FLOWLOGIC = 0xe6c7_FLOWEQ0CTL = 0xe6c8_FLOWEQ1CTL = 0xe6c9_FLOWHOLDOFF = 0xe6ca_FLOWSTB = 0xe6cb_FLOWSTBEDGE = 0xe6cc_FLOWSTBHPERIOD = 0xe6cd_GPIFHOLDAMOUNT = 0xe60c_UDMACRCH = 0xe67d_UDMACRCL = 0xe67e_UDMACRCQUAL = 0xe67f_DBUG = 0xe6f8_TESTCFG = 0xe6f9_USBTEST = 0xe6fa_CT1 = 0xe6fb_CT2 = 0xe6fc_CT3 = 0xe6fd_CT4 = 0xe6fe_EP0BUF = 0xe740_EP1OUTBUF = 0xe780_EP1INBUF = 0xe7c0_EP2FIFOBUF = 0xf000_EP4FIFOBUF = 0xf400_EP6FIFOBUF = 0xf800_EP8FIFOBUF = 0xfc00;--------------------------------------------------------; external initialized ram data;--------------------------------------------------------;--------------------------------------------------------; interrupt vector ;-------------------------------------------------------- .area CSEG (CODE)__interrupt_vect: ljmp __sdcc_gsinit_startup;--------------------------------------------------------; global & static initialisations;-------------------------------------------------------- .area GSINIT (CODE) .area GSFINAL (CODE) .area GSINIT (CODE)__sdcc_gsinit_startup: mov sp,#__start__stack - 1 lcall __sdcc_external_startup mov a,dpl jz __sdcc_init_data ljmp __sdcc_program_startup__sdcc_init_data: .area GSFINAL (CODE) ljmp __sdcc_program_startup;--------------------------------------------------------; Home;-------------------------------------------------------- .area HOME (CODE) .area CSEG (CODE);--------------------------------------------------------; code;-------------------------------------------------------- .area CSEG (CODE)__sdcc_program_startup: lcall _eeprom_init; return from _eeprom_init will spin here sjmp . .area CSEG (CODE)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -