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

📄 sstdownload.a51

📁 通过对单片机编程可组成音乐
💻 A51
📖 第 1 页 / 共 3 页
字号:
;sst89c58下载器,使用keilc51的debug调试器下载。
;将本程序编译后写入sst89c58,并编程为remap 4kbytes。该芯片即有了keil环境下载功能。
;当p1.0拉低时,启动时进入下载程序,进入下载程序后将会自动删除block0。p1.0高电平时进入用户程序。
;进入下载程序后,可以通过串口和keil的仿真环境连通,波特率自动调节。
;选择load HEX文件,即可将程序下载到sst89c58的低端32keeprom中。除了7e00-7fffh被占用了。
;程序编写:丁丁 2000.12.26
;个人主页:http://www.mcu51.com
        sfcf data 0b1h
	sfcm data 0b2h	
	sfal data 0b3h
	sfah data 0b4h
	sfdt data 0b5h
	sfst data 0b6h

        ORG    0F000H
	ljmp disremap ;千万不要删除这句看似没用的程序,至于为什么就想想吧。
disremap:mov sfcf,#11000000b ;disable remap
	
	;jb p1.0,user  ;在这里设置你要用来控制进入iap的管脚

	clr p3.1  ;led指示正在擦除
	lcall clearuser
	 setb p3.1
	ljmp LF026;main
user:   ljmp 0000h
writebyte:  	push acc ;这个子程序是用来写一个eeprom字节的,如果你仅仅是用来iap,也可以将它简化,后面那一大段就可以删了。
		push psw
		push dph
		push dpl
		push b
		push 02h
		push 00h
		push acc    ;保存要写入的数据
		CLR    A   ;测试是否为空0ffh
            	MOVC   A, @A+DPTR
		inc a
		jnz clear_save
w_b_:	pop acc	;如果该位置是空的就直接写入,不用擦除
w1byte:	mov sfah,dph
	mov sfal,dpl
	mov sfdt,a
	mov sfcm,#0eh
t_over:	mov a,sfst
	jb acc.2,T_over
	ajmp endend

clear_save: 	;清除用来暂时保存的rom
		mov sfah,#7fh  
		mov sfal,#00h
		mov sfcm,#0bh
t_c7f_over:	mov a,sfst
		jb acc.2,t_c7f_over 

		;将高端内存搬到暂时保存rom
		mov r2,#00h ;将高端ram搬到7f00rom
		mov r0,#80h ;指向高端ram
t_w1_next:	mov sfah,#7fh
		mov sfal,r2
		mov sfdt,@r0
		mov sfcm,#06h   ;burst write
t_w1_over:	mov a,sfst			
		jb acc.3,t_w1_over
		inc r2
		inc r0
		cjne r0,#0c0h,t_w1_n1 ;write 64
t_w1_over1:	mov a,sfst
		jb acc.2,t_w1_over1
		ajmp t_w1_next
t_w1_n1:	cjne r0,#00h,t_w1_next
t_w1_over2:	mov a,sfst
		jb acc.2,t_w1_over2


		;将被写字节所在扇搬到高端内存
		mov b,dpl  ;save dpl当前字节所在地低端位置b 
		anl dpl,#80h
		mov r0,#80h
save_w0:	clr a
		movc a,@a+dptr
		mov @r0,a
		inc r0
		inc dpl
		cjne r0,#00h,save_w0
		
		;写入当前字节到高端内存
		mov a,b
		orl a,#80h
		mov r0,a
		pop acc
		mov @r0,a

		;擦除原位置扇区
		mov sfah,dph
		mov sfal,b
		mov sfcm,#0bh
t_w1_c1:	mov a,sfst
		jb acc.2,t_w1_c1
		
		
		;将高端内存搬到原位置扇区
		anl b,#80h
		mov r0,#80h ;指向高端ram
t1_w1_next:	mov sfah,dph
		mov sfal,b
		mov sfdt,@r0
		mov sfcm,#06h   ;burst write
t1_w1_over:	mov a,sfst			
		jb acc.3,t1_w1_over
		inc b
		inc r0
		cjne r0,#0c0h,t1_w1_n1 ;write 64
t1_w1_over1:	mov a,sfst
		jb acc.2,t1_w1_over1
		ajmp t1_w1_next
t1_w1_n1:	cjne r0,#00h,t1_w1_next
t1_w1_over2:	mov a,sfst
		jb acc.2,t1_w1_over2

		;将保存区的内容搬回到高端ram
		mov r0,#80h
		mov dptr,#7f00h
t_w1_b:		clr a
		movc a,@a+dptr
		mov @r0,a
		inc r0
		inc dpl
		cjne r0,#0,t_w1_b

endend:		pop 00h
		pop 02h
		pop b
		pop dpl
		pop dph
		pop psw
		pop acc
		ret


			org 0f200h  ;//////////////////////
LF200:  PUSH   DPL
        PUSH   DPH
        MOV    DPTR, #7E08H
        lcall writebyte
        MOV    A, PSW
        INC    DPTR
        lcall writebyte
        CLR    A
        MOV    PSW, A
        XCH    A, IE
        INC    DPTR
        lcall writebyte
        POP    ACC
        INC    DPTR
        lcall writebyte
        POP    ACC
        INC    DPTR
        lcall writebyte
        POP    ACC
        INC    DPTR
        lcall writebyte
        POP    ACC
        INC    DPTR
        lcall writebyte
        INC    DPTR
        CLR    A
        MOVC   A, @A+DPTR
        XCH    A, SP
        lcall writebyte
        MOV    A, B
        INC    DPTR
        lcall writebyte
        MOV    A, R0
        INC    DPTR
        lcall writebyte
        MOV    R0, #00H
LF232:  INC    R0
        INC    DPTR
        CLR    A
        MOVC   A, @A+DPTR
        XCH    A, @R0
        lcall writebyte
        MOV    A, R0
        CJNE   A, #6FH, LF232
        LCALL  LF0AF
        LCALL  LF2A0
        LCALL  LFBD0
        LCALL  LFAD4
        LCALL  LF9EC
        LCALL  LF9EC
        LCALL  LF9EC
LF251:  LCALL  LFAD4
        MOV    DPTR, #7E0DH
        MOV    A, R0
        lcall writebyte
        INC    DPTR
        MOV    A, R1
        lcall writebyte
        LCALL  LF0A2
        RET    
LF260:  MOV    R2, #01H
LF262:  LCALL  LFBD0
        MOV    R6, 01H
        MOV    R5, 00H
LF269:  LCALL  LFB0C
        CJNE   A, #01H, LF29B
        PUSH   DPH
        PUSH   DPL
        LCALL  LFACA
        CLR    C
        MOV    A, R6
        SUBB   A, R1
        MOV    R4, A
        MOV    A, R5
        SUBB   A, R0
        JNZ    LF28A
        CJNE   R4, #02H, LF281
LF281:  JNC    LF28A
        MOV    28H, #08H
        MOV    A, #01H
        SJMP   LF296
LF28A:  MOV    A, #12H
        LCALL  LFADF
        MOV    A, #0F1H
        LCALL  LFADF
        MOV    A, #03H
LF296:  POP    DPL
        POP    DPH
        lcall writebyte
LF29B:  INC    R2
        CJNE   R2, #0CH, LF269
        RET    
LF2A0:  MOV    R2, #0BH
LF2A2:  LCALL  LFB0C
        CJNE   A, #03H, LF2B4
        MOV    A, #01H
        lcall writebyte
        LCALL  LFACA
        LCALL  LFADD
        LCALL  LFADD
LF2B4:  DJNZ   R2, LF2A2
LF2B6:  MOV    A, #81H
LF2B8:  SETB   10H
        MOV    R0, A
        SJMP   LF2C1
LF2BD:  MOV    R0, #81H
LF2BF:  CLR    10H
LF2C1:  MOV    DPTR, #7E08H
        CJNE   R0, #0E0H, LF2C9
        SJMP   LF2ED
LF2C9:  INC    DPTR
        CJNE   R0, #0D0H, LF2CF
        SJMP   LF2ED
LF2CF:  INC    DPTR
        CJNE   R0, #0A8H, LF2D5
        SJMP   LF2ED
LF2D5:  INC    DPTR
        CJNE   R0, #83H, LF2DB
        SJMP   LF2ED
LF2DB:  INC    DPTR
        CJNE   R0, #82H, LF2E1
        SJMP   LF2ED
LF2E1:  MOV    DPTR, #7E0FH
        CJNE   R0, #81H, LF2E9
        SJMP   LF2ED
LF2E9:  INC    DPTR
        CJNE   R0, #0F0H, LF2F5
LF2ED:  JB     10H, LF2F2
        lcall writebyte
        RET    
LF2F2:  CLR    A
        MOVC   A, @A+DPTR
        RET    
LF2F5:  MOV    R1, #0E5H
        JB     10H, LF2FC
        MOV    R1, #88H
LF2FC:  PUSH   ACC
        MOV    DPTR, #7EC3H
        MOV    A, R1
        LCALL  LF8F4
        MOV    R1, DPL
        MOV    A, DPH
        XCH    A, R0
        INC    DPTR
        LCALL  LFAF0
        MOV    A, #22H
        LCALL  LFAF0
        MOV    DPL, R1
        MOV    DPH, R0
        CLR    A
        POP    00H
        JMP    @A+DPTR
LF31B:  MOV    A, #0E0H
        LCALL  LF2B8
        MOV    DPL, 2CH    ;///????????
        MOV    DPH, 2BH
        MOVC   A, @A+DPTR
        MOV    R0, #0E0H
        LJMP   LF2BF
LF32C:  LCALL  LF2B6
        PUSH   06H
        MOV    R1, A
        MOV    A, 2CH
        LCALL  LF918
        MOV    A, 2BH
        LCALL  LF918
        MOV    A, R1
        POP    06H
        LJMP   LF2BD
Lf342:			;f342h  data area
        db 01h,06h;AJMP   LF006
        db 0fh;INC    R7
        db 01h,01h;AJMP   0F001H
        db 02h,01h,01h;LJMP   0101H
        db 01h,01h;AJMP   0F001H
        db 01h,01h;AJMP   0F001H
        db 01h,01h;AJMP   0F001H
        db 01h,01h;AJMP   0F001H
        db 23h;RL     A
        db 0ah;INC    R2
        db 13h;RRC    A
        db 01h,01h;AJMP   0F001H
        db 02h,01h,01h;LJMP   0101H
        db 01h,01h;AJMP   0F001H
        db 01h,01h;AJMP   0F001H
        db 01h,01h;AJMP   0F001H
        db 01h,01h;AJMP   0F001H
        db 23h;RL     A
        db 06h;INC    @R0
        db 15h,01h;DEC    01H
        db 02h,02h,01h;LJMP   0201H
        db 01h,01h;AJMP   0F001H
        db 01h,01h;AJMP   0F001H
        db 01h,01h;AJMP   0F001H
        db 01h,01h;AJMP   0F001H
        db 01h,23h;AJMP   LF023
        db 0ah;INC    R2
        db 19h;DEC    R1
        db 01h,02h;AJMP   0F002H
        db 02h,01h,01h;LJMP   0101H
        db 01h,01h;AJMP   0F001H
        db 01h,01h;AJMP   0F001H
        db 01h,01h;AJMP   0F001H
        db 01h,01h;AJMP   0F001H
        db 1eh;DEC    R6
        db 06h;INC    @R0
        db 02h,03h,02h;LJMP   0302H
        db 02h,01h,01h;LJMP   0101H
        db 01h,01h;AJMP   0F001H
        db 01h,01h;AJMP   0F001H
        db 01h,01h;AJMP   0F001H
        db 01h,01h;AJMP   0F001H
        db 1eh;DEC    R6
        db 0ah;INC    R2
        db 02h,03h,02h;LJMP   0302H
        db 02h,01h,01h;LJMP   0101H
        db 01h,01h;AJMP   0F001H
        db 01h,01h;AJMP   0F001H
        db 01h,01h;AJMP   0F001H
        db 01h,01h;AJMP   0F001H
        db 1eh;DEC    R6
        db 06h;INC    @R0
        db 02h,03h,02h;LJMP   0302H
        db 02h,01h,01h;LJMP   0101H
        db 01h,01h;AJMP   0F001H
        db 01h,01h;AJMP   0F001H
        db 01h,01h;AJMP   0F001H
        db 01h,01h;AJMP   0F001H
        db 1eh;DEC    R6
        db 0ah;INC    R2
        db 02h,29h,02h;LJMP   2902H
        db 03h;RR     A
        db 02h,02h,02h;LJMP   0202H
        db 02h,02h,02h;LJMP   0202H
        db 02h,02h,02h;LJMP   0202H
        db 02h,1eh,06h;LJMP   1E06H
        db 02h,25h,01h;LJMP   2501H
        db 03h;RR     A
        db 02h,02h,02h;LJMP   0202H
        db 02h,02h,02h;LJMP   0202H
        db 02h,02h,02h;LJMP   0202H
        db 02h,03h,0ah;LJMP   030AH
        db 02h,01h,02h;LJMP   0102H
        db 02h,01h,01h;LJMP   0101H
        db 01h,01h;AJMP   0F001H
        db 01h,01h;AJMP   0F001H
        db 01h,01h;AJMP   0F001H
        db 01h,01h;AJMP   0F001H
        db 02h,06h,02h;LJMP   0602H
        db 01h,01h;AJMP   0F001H
        db 01h,02h;AJMP   0F002H
        db 02h,02h,02h;LJMP   0202H
        db 02h,02h,02h;LJMP   0202H
        db 02h,02h,02h;LJMP   0202H
        db 02h,0ah,02h;LJMP   0A02H
        db 01h,23h;AJMP   LF023
        db 23h;RL     A
        db 23h;RL     A
        db 23h;RL     A
        db 23h;RL     A
        db 23h;RL     A
        db 23h;RL     A
        db 23h;RL     A
        db 23h;RL     A
        db 23h;RL     A
        db 23h;RL     A
        db 23h;RL     A
        db 02h,06h,02h;LJMP   0602H
        db 01h,01h;AJMP   0F001H
        db 02h,01h,01h;LJMP   0101H
        db 01h,01h;AJMP   0F001H
        db 01h,01h;AJMP   0F001H
        db 01h,01h;AJMP   0F001H
        db 01h,01h;AJMP   0F001H
        db 02h,0ah,02h;LJMP   0A02H
        db 01h,01h;AJMP   0F001H
        db 23h;RL     A
        db 01h,01h;AJMP   0F001H
        db 1eh;DEC    R6
        db 1eh;DEC    R6
        db 1eh;DEC    R6
        db 1eh;DEC    R6
        db 1eh;DEC    R6
        db 1eh;DEC    R6
        db 1eh;DEC    R6
        db 1eh;DEC    R6
        db 01h,06h;AJMP   LF006
        db 01h,01h;AJMP   0F001H
        db 01h,02h;AJMP   0F002H
        db 01h,01h;AJMP   0F001H
        db 01h,01h;AJMP   0F001H
        db 01h,01h;AJMP   0F001H
        db 01h,01h;AJMP   0F001H
        db 01h,01h;AJMP   0F001H
        db 01h,0ah;AJMP   LF00A
        db 01h,01h;AJMP   0F001H
        db 01h,02h;AJMP   0F002H
        db 01h,01h;AJMP   0F001H
        db 01h,01h;AJMP   0F001H
        db 01h,01h;AJMP   0F001H
        db 01h,01h;AJMP   0F001H
        db 01h,01h;AJMP   0F001H
Lf442: db 56h,33h,2eh,30h    ;,75h,81h,07h,90h,7eh,08h,0e4h,78h,05h				;f442h code area
Lf446: 	mov sp,#07h ;program start
	mov dptr,#7e08h
	clr a
	mov r0,#05h
LF44F:  lcall writebyte
        INC    DPTR
        DJNZ   R0, LF44F
        MOV    A, #00H
        lcall writebyte
        INC    DPTR
        MOV    A, #00H
        lcall writebyte
        INC    DPTR
        MOV    A, #07H
        lcall writebyte
        INC    DPTR
        CLR    A
        lcall writebyte
        MOV    23H, A
        INC    A
        MOV    24H, A
        MOV    DPTR, #7E00H
        MOV    R1, #00H
        MOV    R0, #0A5H
        LCALL  LF4C3
        MOV    R0, #33H
        LCALL  LF4C3
        MOV    R0, #0CCH
        LCALL  LF4C3
        MOV    A, R1
        JZ     LF48D
        MOV    R2, #0BH
        MOV    R5, #00H
        LCALL  LFB83
        CLR    A
        MOV    30H, A
        MOV    31H, A
        MOV    DPTR, #7E07H
        lcall writebyte
LF48D:  LCALL  LF2A0
LF490:  LCALL  LF890
        CJNE   A, #11H, LF4A0
        MOV    A, 23H
        LCALL  LF884
        CPL    A
        MOV    23H, A
        SJMP   LF490
LF4A0:  CJNE   A, #01H, LF4AA
        MOV    A, 24H
        LCALL  LF884
        SJMP   LF490
LF4AA:  LCALL  LF4AF
        SJMP   LF490
LF4AF:  MOV    25H, A
        DEC    A
        DEC    A
        ANL    A, #0EH
        MOV    DPTR, #Lf8c0
        MOV    R7, A
        MOVC   A, @A+DPTR
        XCH    A, R7
        INC    DPTR
        MOVC   A, @A+DPTR
        MOV    DPH, R7
        MOV    DPL, A
        CLR    A
        JMP    @A+DPTR
LF4C3:  CLR    A
        MOVC   A, @A+DPTR
        XRL    A, R0
        ORL    A, R1
        MOV    R1, A
        MOV    A, R0
        lcall writebyte
        INC    DPTR
        RET    
LF4CC:  MOV    A, #06H
        LCALL  LF884
        MOV    A, 28H
        LCALL  LF884
        MOV    DPTR, #7E03H
        MOV    R0, #04H
LF4DB:  CLR    A
        MOVC   A, @A+DPTR
        LCALL  LF884
        INC    DPTR
        DJNZ   R0, LF4DB
        MOV    A, #04H
        LCALL  LF884
        RET    
        MOV    28H, #00H
        LCALL  LF89C
        MOV    26H, A
        JZ     LF51A
        LCALL  LF89C
        MOV    DPH, A
        LCALL  LF89C
        MOV    DPL, A
        LCALL  LF89C
        MOV    27H, A
LF502:  LCALL  LF89C
        LCALL  LF8D0
        INC    DPTR
        DJNZ   27H, LF502
LF50C:  LCALL  LF89C
        MOV    A, 25H
        JZ     LF516
        MOV    28H, #02H
LF516:  LCALL  LF4CC
        RET    
LF51A:  LCALL  LF89C
        MOV    DPTR, #7E0DH
        lcall writebyte
        INC    DPTR
        LCALL  LF89C
        lcall writebyte
        LCALL  LF89C
        SJMP   LF50C
        MOV    28H, #00H
        LCALL  LF89C
        MOV    26H, A
        LCALL  LF89C
        MOV    DPH, A
        LCALL  LF89C
        MOV    DPL, A
        LCALL  LF89C
        MOV    27H, A
        LCALL  LF89C
        MOV    A, 25H
        JZ     LF550
        MOV    28H, #02H
LF54C:  LCALL  LF4CC
        RET    
LF550:  MOV    25H, #00H
        MOV    A, #02H
        LCALL  LF8B0
        MOV    A, 26H
        JZ     LF56E
LF55C:  LCALL  LF96B
        LCALL  LF8B0
        INC    DPTR
        DJNZ   27H, LF55C
LF566:  CLR    A
        CLR    C
        SUBB   A, 25H
        LCALL  LF8B0
        RET    
LF56E:  MOV    DPTR, #7E0DH
        CLR    A
        MOVC   A, @A+DPTR
        LCALL  LF8B0
        INC    DPTR
        CLR    A
        MOVC   A, @A+DPTR
        LCALL  LF8B0
        SJMP   LF566
        MOV    28H, #00H
        LCALL  LF89C
        MOV    29H, A
        LCALL  LF89C
        MOV    27H, A
        LCALL  LF89C
        MOV    26H, A
        LCALL  LF89C
        MOV    DPH, A
        LCALL  LF89C
        MOV    DPL, A
        LCALL  LF89C
        MOV    A, 25H
        JZ     LF5A8
        MOV    28H, #02H
        LCALL  LF4CC
        RET    
LF5A8:  CLR    A
        CJNE   A, 29H, LF5B2
        LCALL  LFB52
        LJMP   LF4CC
LF5B2:  INC    A
        CJNE   A, 29H, LF5BC
        LCALL  LFB76
        LJMP   LF4CC
LF5BC:  INC    A
        CJNE   A, 29H, LF5C6
        LCALL  LFB72
        LJMP   LF4CC
LF5C6:  INC    A
        CJNE   A, 29H, LF5D0

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -