单片机开发资料光盘-双龙-686M.zip

源代码在线查看: assembly.s

软件大小: 574027 K
上传用户: rllfllef
关键词: 686 zip 单片机 光盘
下载地址: 免注册下载 普通下载 VIP

相关代码

						.text
				
				SPMCR = 0x37 
				
				; void write_page (unsigned int adr, unsigned char function);
				_write_page::
				        in r20,SPMCR
						sbrc r20,0
						rjmp _write_page 
						MOV R31,R17        
				        MOV R30,R16         ;move adress to z pointer (R31=ZH R30=ZL)
				        OUT SPMCR,R18       ;argument 2 decides function
				        SPM                 ;perform pagewrite
						.dw $ffff
						NOP
				        RET
				
				; void fill_temp_buffer (unsigned int data, unsigned int adr);
				_fill_temp_buffer::
				        MOV R31,R19        
				        MOV R30,R18         ;move adress to z pointer (R31=ZH R30=ZL)
				        MOV R1,R17
				        MOV R0,R16          ;move data to reg 0 and 1      
				        LDI R18,0x01
				        OUT SPMCR,R18
				        SPM            ;Store program memory
				        RET      
				
				;unsigned int read_program_memory (unsigned int adr ,unsigned char cmd);
				_read_program_memory::
				        ldi  r20,0x11
						out	 SPMCR,r20
						SPM
						.dw $ffff
						nop		 	  		;重新使能RWW扇区
				        MOV R31,R17         ;R31=ZH R30=ZL
				        MOV R30,R16         ;move adress to z pointer
				        SBRC R18,0          ;read lockbits? (second argument=0x09)
				        OUT SPMCR,R18	    ;if so, place second argument in SPMEN register
				        LPM                 ;read LSB
				        MOV R16,R0         
				        INC R30
				        LPM
				        MOV R17,R0          ;read MSB (ignored when reading lockbits)
				        RET
				
				;void write_lock_bits (unsigned char val);
				_write_lock_bits::
				        in r20,SPMCR
						sbrc r20,0
						rjmp _write_lock_bits         
				        MOV R0,R16   
				        LDI R17,0x09     
				        OUT SPMCR,R17
				        SPM                ;write lockbits
						.dw $ffff
						NOP
				        RET			

相关资源