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

📄 iap.inc

📁 用于DSP中FLASH的擦除和编写程序
💻 INC
📖 第 1 页 / 共 4 页
字号:
Rdloop:
            elpm   r0, Z+
            ld     r1, x+
            cpse   r0, r1
            rjmp    Error
            sbiw   r25:r24, 1   ;use subi for PAGESIZEB<=256
            brne   Rdloop
			rjmp    Return       ; return to RWW section

Error:                          ; verify that RWW section 
           ldi     r16,3
		   sts     ERR_IAP,r16
		   rjmp    Return
         
Return:
            ;lds   r16, SPMCSR
            in     r16, SPMCSR
            sbrs   r16, RWWSB   ; If RWWSB is set, the RWW section is not ready yet
            ret
                              ; re-enable the RWW section
            ldi    r20, (1<<RWWSRE) | (1<<SPMEN)
            rcall   Do_spm
            rjmp   Return
;- - - - - - - - - - -- - - - - - - - - - 
Do_spm:                                       ; check for previous SPM complete
Wait_spm:
             ;lds   r16, SPMCSR
			 in     r16, SPMCSR
             sbrc   r16, SPMEN
             rjmp   Wait_spm
                                     ; input: spmcsrval determines SPM action
                                     ; disable interrupts if enabled, store status
             in     r17, SREG
             cli
                                     ; check that no EEPROM write access is present
Wait_ee:
             sbic   EECR, EEPE
             rjmp   Wait_ee
                                     ; SPM timed sequence
            ;sts    SPMCSR, r20
			 out    SPMCSR, r20
             spm
                                     ; restore SREG (to enable interrupts if originally enabled)
             out    SREG, r17
             ret
;-----------------------------------------------------
bbell:    
             ret
       
;********************************************************************
;* ;* if fos=8mhz time (3.5us------1s) *
;* r16 time *
;* 22 1ms *
;* 29 2ms *
;* 40 5ms *
;* 51 10ms *
;* 65 20ms *
;* 90 50ms *
;* 114 100ms *
;* 144 200ms *
;* 197 500ms * 
;* 249 1s *
;********************************************************************
;bdelay:  push r16 ;2t

bdelay1: push  r16 ;2t  

bdelay2: push  r16 ;2t
 
bdelay3: dec   r16 ;1t
         brne  bdelay3 ;1t/2t

         pop   r16 ;2t
         dec   r16 ;1t
         brne  bdelay2 ;1t/2t
         pop   r16 ;2t
         dec   r16 ;1t
         brne  bdelay1 ;1t/2t
         pop   r16 ;2t 
bdelay:
         ret ;4t

;- - - - - - -- - -- - -- -- - -- - -- - - -
show_vid:
             ldi    r16,0x53		; 'S'
             rcall  putc_IAP
             ldi    r16,0x48		; 'H'
             rcall  putc_IAP
             ldi    r16,0x47		; 'G'
             rcall  putc_IAP
             ldi    r16,0x55		; 'U '
             rcall  putc_IAP
             ldi    r16,0x41		; 'A'
             rcall  putc_IAP
             ldi    r16,0x4f		; 'O '
             rcall  putc_IAP
             ret                             
;- - - - - - -- - -- - -- -- - -- - -- - - -
show_did:
              ldi   r16,0x47		; 'G'
              rcall	putc_IAP
              ldi	r16,0x41		; 'A'
              rcall	putc_IAP
              ldi	r16,'2'		; '6'
              rcall	putc_IAP
              ldi	r16,'0'		; '0'
              rcall	putc_IAP
              ldi	r16,'0'		; '8'
              rcall	putc_IAP
              ret                             

;- - - - - - -- - -- - -- -- - -- - -- - - -
show_fver:
              ldi   r16,0x46              ;'F'
              rcall putc_IAP

              ldi   r16,1
              out   rampz,r16 

              ldi   zh,high(fver*2)
              ldi   zl,low(fver*2)
 
              elpm  r16,z+
              ldi   r17,0x30
              add   r16,r17
              rcall putc_IAP
 
              elpm  r16,z+
              ldi   r17,0x30
              add   r16,r17
              rcall putc_IAP
 
              ldi   r16,0x2E		; 
              rcall putc_IAP
 
              elpm  r16,z+
              ldi   r17,0x30
              add   r16,r17
              rcall putc_IAP
 
              elpm  r16,z+
              ldi   r17,0x30
              add   r16,r17
              rcall putc_IAP
  
              clr   r16
              out   rampz,r16 

	          ret                             

;- - - - - - -- - -- - -- -- - -- - -- - - -
show_pver:
              ldi    r16,0x50		; 'P'
              rcall  putc_IAP

              ldi    zh,high(pver*2)
              ldi    zl,low(pver*2)
 
              lpm    r16,z+
              ldi    r17,0x30
              add    r16,r17
              rcall  putc_IAP
 
              lpm    r16,z+
              ldi    r17,0x30
              add    r16,r17
              rcall  putc_IAP
 
              ldi    r16,0x2E		; 
              rcall  putc_IAP
 
              lpm    r16,z+
              ldi    r17,0x30
              add    r16,r17
              rcall  putc_IAP
 
              lpm    r16,z+
              ldi    r17,0x30
              add    r16,r17
              rcall  putc_IAP
              
              ret                             

;- - - - - - -- - -- - -- -- - -- - -- - - -
show_ok:
               ldi    r16,0x4f		; 'O'
               rcall  putc_IAP
               ldi    r16,0x4b		; 'K'
               rcall  putc_IAP
               ret 
;- - - - - - -- - -- - -- -- - -- - -- - - -
show_crlf:
               ldi    r16,0x0d		; cr
               rcall  putc_IAP
               ldi    r16,0x0a		; lf
               rcall  putc_IAP
               ret 

;- - - - - - - - - - - - - - - - - - - - - - - - -            
getc_IAP:
              nop
getc_IAP1:        
              lds     r17 ,ucsr1a 
              sbrs    r17 ,7
              rjmp    getc_IAP1     
              lds     r16,udr1;;暂存收到的数据
              ret 
;- - - - - - - - - - - - - - - - - -             
;    ldi  r16,0x47   ;g
;    rcall putc_IAP
;- - - - - - - - - - - - - - - - - - 
putc_IAP:;;发送一个字符
              nop
putc_IAP1:       
              lds    r17,ucsr1a
              sbrs   r17,5
              rjmp   putc_IAP1     
              sts    udr1,r16
              ret

UART1_INIT_IAP:     
              ldi    r17,0
              ldi    r16,11
                                  ; Set baud rate
              sts    UBRR1H, r17
              sts    UBRR1L, r16
            ; Enable receiver and transmitter 接受中断
              ldi    r16, (1<<RXEN1)|(1<<TXEN1)|(0<<UCSZ12);|(1<<RXCIE1);
              sts    UCSR1B,r16
                                 ;  异步              无奇偶/               1stop bit   8位长度
              ldi    r16, (0<<UMSEL11)|(0<<UMSEL10)|(0<<UPM11)|(0<<UPM10)|(0<<USBS1)|(1<<UCSZ11)|(1<<UCSZ10)|(0<<UCPOL1); 
              sts    UCSR1C,r16       
              ret

;- - - - - - - - - - - - - - - - - - - - - - - -
keyc_IAP:     
              clr   r20
			  sts   keyf,r20
key_IAP00c:   
              cbi  porta,hc165_clk
			  nop
			  nop
              cbi  porta,hc165_pl
              nop
			  nop
              sbi  porta,hc165_pl
              nop
			  nop
			  in   r16,ping
              sbrs r16,hc165_dat
              sbr  r20,0x1        
key_IAP01c:   
              sbi  porta,hc165_clk
			  nop
			  nop
              nop
			  nop
              nop
			  nop
              
			  in   r16,ping
              sbrs r16,hc165_dat
              sbr  r20,0x2        
key_IAP02c:   
              cbi  porta,hc165_clk
			  nop
			  nop
			  nop
			  nop
              nop
			  nop
              
              sbi  porta,hc165_clk
			  nop
			  nop
			  nop
			  nop
              nop
			  nop
              
              in   r16,ping
              sbrs r16,hc165_dat
              sbr  r20,0x4        
key_IAP03c: 
              cbi  porta,hc165_clk
			  nop
			  nop
			  nop
			  nop
              nop
			  nop
              
              sbi  porta,hc165_clk
			  nop
			  nop
			  nop
			  nop
              nop
			  nop
              
              in   r16,ping
              sbrs r16,hc165_dat
              sbr  r20,0x8                
key_IAP04c:   
              cbi  porta,hc165_clk
			  nop
			  nop
			  nop
			  nop
              nop
			  nop
              
              sbi  porta,hc165_clk
			  nop
			  nop
			  nop
			  nop
              nop
			  nop
              
              in   r16,ping
              sbrs r16,hc165_dat
              sbr  r20,0x10        
key_IAP05c:   
              cbi  porta,hc165_clk
			  nop
			  nop
              sbi  porta,hc165_clk
		      nop
			  nop
			  nop
			  nop
              nop
			  nop
              
              in   r16,ping
              sbrs r16,hc165_dat
              sbr  r20,0x20       
key_IAP06c:   
              cbi  porta,hc165_clk
			  nop
			  nop
			  nop
			  nop
              nop
			  nop
              
              sbi  porta,hc165_clk
			  nop
			  nop
			  nop
			  nop
              nop
			  nop
              
              in   r16,ping
              sbrs r16,hc165_dat
              sbr  r20,0x40        
key_IAP07c:  
              cbi  porta,hc165_clk
			  nop
			  nop
			  nop
			  nop
              nop
			  nop
              
              sbi  porta,hc165_clk
			  nop
			  nop
			  nop
			  nop
              nop
			  nop
              
              in   r16,ping
              sbrs r16,hc165_dat
              sbr  r20,0x80        
key_IAP08c: 
              cbi  porta,hc165_clk 
			  nop
			  nop
              nop
			  nop  

              sts  keyf,r20    
              ret

;z
;r21 d_x
;r22 d_y
;r23 cnt
dispes_IAP:
              sts   d_x,r21
              sts   d_y,r22
              
              ldi   r16,8
              sts   d_b ,r16
dispes_IAP1:   
              lds   r16,d_x
              sts   d_dx,r16

              lds   r16,d_y
              andi  r16,0b00000111
              sts   d_dy,r16

              lds   r16,d_y
              lsr   r16
              lsr   r16
              lsr   r16
              inc   r16
              sts   d_dz,r16


              Elpm  r16,z+

              push  zl
              push  zh 
              push  r23

              clr   r17
              clc
              rol   r16
              rol   r17

              clc
              rol   r16
              rol   r17

              clc
              rol   r16
              rol   r17

              clc
              rol   r16
              rol   r17

 			  

              ldi    zl,low(tabec_IAP*2)
              ldi    zh,high(tabec_IAP*2)
              add    zl,r16
              adc    zh,r17
			   
              ldi    r16,1
              out    rampz,r16 

              rcall  dispcc_IAP
              pop    r23
              pop    zh
              pop    zl
			                   
              lds    r16,d_y
              inc    r16
              sts    d_y,r16
  
              dec    r23
              brne   dispes_IAP1

              ret 
              
              
       ;- - - - - - - - - - - - - - - - - - - - - - - - -

dispcc_IAP:
              lds     r16,d_dx
              ori     r16,0b10111000
              sts     d_dx,r16

              lds     r16,d_dy
              lsl     r16
              lsl     r16
              lsl     r16

⌨️ 快捷键说明

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