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

📄 boot.asm

📁 实现语音信号AD转换的FIR滤波
💻 ASM
字号:

*BOOTLOAD
;boot module
;======================== boot.asm =========================
;       
		.mmregs
		.def erase_flash,prog_flash,boot_table
	
		.text
		
*******************************************************
		.bss  io_map,1
		.bss  adder,1
		.bss  byte_h,1
		.bss  byte_l,1
		.bss  x,1
erase_flash:
		ST #0,*(io_map)
		PORTW *(io_map)	,0x8000	;A[19:15]=00000
		                   ;由CPLD中的代码控制
		
	    ST #0xaa,*(0xd555)		;AAH--->5555H
                                ;地址的高位减8	    
	    nop
	    nop
	    ST #0x55,*(0xaaaa)		;55H--->2AAAH

	    nop
	    nop
	    ST #0x80,*(0xd555)		;80H--->5555H

	    nop
	    nop
	    ST #0xaa,*(0xd555)		;AAH--->5555H

	    nop
	    nop
	    ST #0x55,*(0xaaaa)		;55H--->2AAAH
	    
	    nop
	    nop
	    ST #0x10,*(0xd555)		;10H--->5555H
	    
	    STM #200,AR1
erase_loop:
	    RPT #(50000-1)
	    NOP
	    BANZ erase_loop,*AR1-
	    RET
	    
********************************************************
prog_flash:
		ST #(0x2000-8),*(adder)     ;*(adder)=0x1ff8
		STM #(0x1000+8+2),AR3		;前面加了8个,后面加了两 个0
		STM #0x8000,AR2
	

prog1:		
	    LD *(adder),A               ;A=0x1ff8
	    ADDM #1,*(adder)			;*(adder)=0x1ff9
	    READA *(byte_l)				;*(byte_l)=0x08AA
	    
	    LD *(byte_l),A				;A=0x08AA
	    ANDM #0xff,*(byte_l)		;*(byte_l)=0x00AA
	    
	    STL A,-8,*(byte_h)			;*(byte_h)=0x0008
	    ANDM #0xff,*(byte_h)		;*(byte_h)=0x0008
	    
	    nop                     ;开始写FLASH
	    nop
	    ST #0xaa,*(0xd555)		;AAH--->5555H
	    
	    nop
	    nop
	    ST #0x55,*(0xaaaa)		;55H--->2AAAH

	    nop
	    nop
	    ST #0xa0,*(0xd555)		;A0H--->5555H
	    
	   
prog_hw:    
		MVKD *(byte_h),*AR2		;*(0x8000)=0x0008
	    RPT #(1000-1)
	    NOP
	    NOP
	    NOP
	    NOP
prog_hr:    
		MVDK *AR2,*(x)			;*(x)=0x0008
	    LD *(byte_h),A 			;A=0x0008
	    XOR *(x),A				;A=0x0000
	    AND #0x80,A
	    BC prog_hr,ANEQ
*-------------------------------------------------------	    
		LD *AR2+,A 				;AR2++ A=0x0008
		
		nop
	    nop
	    ST #0xaa,*(0xd555)		;AAH--->5555H
	    
	    nop
	    nop
	    ST #0x55,*(0xaaaa)		;55H--->2AAAH

	    nop
	    nop
	    ST #0xa0,*(0xd555)		;A0H--->5555H
	   
prog_lw:    
		MVKD *(byte_l),*AR2		;*(0x8001)=0x00AA
	    RPT #(1000-1)
	    NOP
prog_lr:    
		MVDK *AR2,*(x)
	    LD *(byte_l),A
	    XOR *(x),A
	    AND #0x80,A
	    BC prog_lr,ANEQ
	    
	    LD *AR2+,A 				;AR2++(开始在FLASH中写入下个固定的值)
*------------------------------------------------------
		BANZ prog1,*AR3-
		
		
		RET

*********************************************************
boot_table:
		STM #(0x2000-8),AR3
		RPT #(8-1)
		MVPD #boot1,*AR3+
		
		STM #(0x2000+0x1000),AR3
		RPT #(2-1)
		ST #0,*AR3+
		
		RET 
boot1:		
		.data 
		.word 0x08aa,0x7e08,0xf800,0x0000
		.word 0x2000,0x1000,0x0000,0x2000
		
    
	    
	    
	    
	    

⌨️ 快捷键说明

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