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

📄 boot.inc

📁 用于DSP中FLASH的擦除和编写程序
💻 INC
📖 第 1 页 / 共 3 页
字号:

.EQU  PT_BELL=0X1 
.EQU  PT_LCDC=0X2 

.EQU  PT_MOTORL=6 
.EQU  PT_MOTORB=7 

.EQU  PT_EXDCLR=2 
.EQU  PT_EXDCNT=3 

;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
RESET:           JMP  CRESET
ARESET:          JMP  DRESET
BRESET:          JMP  IAP
PRESET:          JMP  PRGM00
FVER:       .DB  0x00,0x01,0x00,0x00

;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
;* ;* 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 *
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
BOOT_DELAY:  
               PUSH R16 ;2T
BOOT_DELAY1: 
               PUSH R16 ;2T  
BOOT_DELAY2: 
               PUSH R16 ;2T
BOOT_DELAY3: 
               DEC R16 ;1T 
               BRNE BOOT_DELAY3 ;1T/2T

               POP R16 ;2T
               DEC R16 ;1T
               BRNE BOOT_DELAY2 ;1T/2T
               POP R16 ;2T
               DEC R16 ;1T
               BRNE BOOT_DELAY1 ;1T/2T
               POP R16 ;2T 
               RET ;4T
;- - - - - - - - - - - - - - - - - - - - - - - - -            
BOOT_GETC:
              NOP
BOOT_GETC1:        
              IN R17,UCSR0A 
              SBRS R17,7
              RJMP BOOT_GETC1     
              IN R16,UDR0
              RET 
;- - - - - - - - - - - - - - - - - - - - - - - - -            
BOOT_PUTC: 
              NOP
BOOT_PUTC1:       
              IN R17,UCSR0A
              SBRS R17,5
              RJMP BOOT_PUTC1     
              OUT UDR0,R16
              RET

;----------------------------------------
BOOT_U0INIT:     
              LDI R17,0
              LDI R16,11
                                          ; SET BAUD RATE
              STS UBRR0H, R17
              OUT UBRR0L, R16
                                          ; ENABLE RECEIVER AND TRANSMITTER
              LDI R16, (1<<RXEN0)|(1<<TXEN0)
              OUT UCSR0B,R16
                                           ; SET FRAME FORMAT: 8DATA, 1STOP BIT
              LDI R16, (3<<UCSZ00)
              STS UCSR0C,R16
              RET			   


;-----------------------------------------------------
BOOT_EEPROM_WRITE:
                  SBIC EECR,EEWE          
                  RJMP BOOT_EEPROM_WRITE  ; 等待上一次写操作结束
                  OUT  EEARH,R18
                  OUT  EEARL,R17     ; 设置地址寄存器(r18:r17)
                  OUT  EEDR,R16      ; 将数据写入数据寄存器(R16)
                  SBI  EECR,EEMWE    ; 置位EEMWE
                  SBI  EECR,EEWE     ; 置位EEWE 以启动写操作
                  RET
;----------------------------------------
BOOT_EEPROM_READ:
                  SBIC EECR,EEWE     
                  RJMP BOOT_EEPROM_READ   ; 等待上一次写操作结束
                  OUT  EEARH,R18     ; 设置地址寄存器(R18:R17)
                  OUT  EEARL,R17
                  SBI  EECR,EERE     ; ?设置EERE 以启动读操作
                  IN   R16,EEDR      ; 自数据寄存器读取数据
                  RET

;----------------------------------------
BOOT_EEPROM_RD: LDI   R18,0X0F
                LDI   R17,0XF4
                RCALL  BOOT_EEPROM_READ
			    RET
;----------------------------------
BOOT_EEPROM_WR: LDI   R18,0X0F
                LDI   R17,0XF4
                RCALL  BOOT_EEPROM_WRITE
			    RET
;-------------------------------------
DISP_FVER:    LDI  ZH,HIGH(BOOT_TC_FVER*2)
              LDI  ZL,LOW(BOOT_TC_FVER*2)
              LDI  R21,3
              LDI  R22,2
              LDI  R23,5
              RCALL BOOT_DISPCS
              
			  LDI  R16,1
              OUT  RAMPZ,R16
              
              LDI  ZH,HIGH(FVER*2)
              LDI  ZL,LOW(FVER*2)
 
              ELPM R16,Z+
			  STS  DBUF1,R16
 
              ELPM R16,Z+
			  STS  DBUF2,R16

              LDI  R16,0X2E
			  STS  DBUF3,R16

			  ELPM R16,Z+
			  STS  DBUF4,R16
 
              ELPM R16,Z+
			  STS  DBUF5,R16
 
              LDI  R16,0
              OUT  RAMPZ,R16
              
              LDS  R16,DBUF1
			  CPI  R16,0
			  BRNE DISP_FVER1
			  LDI  R16,0X20
			  STS  DBUF1,R16

DISP_FVER1:   LDI  ZH,HIGH(DBUF1)
              LDI  ZL,LOW(DBUF1)
              LDI  R21,3
              LDI  R22,11
              LDI  R23,5
              RCALL BOOT_DISPRES
              RET                 
;-------------------------------------
DISP_PVER:    LDI  ZH,HIGH(BOOT_TC_PVER*2)
              LDI  ZL,LOW(BOOT_TC_PVER*2)
              LDI  R21,5
              LDI  R22,2
              LDI  R23,5
              RCALL BOOT_DISPCS
              
			  LDI  ZH,HIGH(PVER*2)
              LDI  ZL,LOW(PVER*2)
 
              ELPM R16,Z+
			  STS  DBUF1,R16
 
              ELPM R16,Z+
			  STS  DBUF2,R16

              LDI  R16,0X2E
			  STS  DBUF3,R16

			  ELPM R16,Z+
			  STS  DBUF4,R16
 
              ELPM R16,Z+
			  STS  DBUF5,R16
 
              LDS  R16,DBUF1
			  CPI  R16,0
			  BRNE DISP_PVER1
			  LDI  R16,0X20
			  STS  DBUF1,R16

DISP_PVER1:   LDI  ZH,HIGH(DBUF1)
              LDI  ZL,LOW(DBUF1)
              LDI  R21,5
              LDI  R22,11
              LDI  R23,5
              RCALL BOOT_DISPRES
              RET
			  
;-------------------------------------
DISP_NEWPVER: LDI    ZL,LOW(BOOT_TE_20*2)
              LDI    ZH,HIGH(BOOT_TE_20*2)
              LDI    R21,5
              LDI    R22,20
              LDI    R23,12
		  	  RCALL  BOOT_DISPES

              LDI    ZL,LOW(BOOT_TE_2D*2)
              LDI    ZH,HIGH(BOOT_TE_2D*2)
              LDI    R21,5
              LDI    R22,17
              LDI    R23,2
		  	  RCALL  BOOT_DISPES

			  LDI  ZH,HIGH(PVER*2)
              LDI  ZL,LOW(PVER*2)
 
              ELPM R16,Z+
			  STS  DBUF1,R16
 
              ELPM R16,Z+
			  STS  DBUF2,R16

              LDI  R16,0X2E
			  STS  DBUF3,R16

			  ELPM R16,Z+
			  STS  DBUF4,R16
 
              ELPM R16,Z+
			  STS  DBUF5,R16
 
              LDS  R16,DBUF1
			  CPI  R16,0
			  BRNE DISP_NEWPVER1
			  LDI  R16,0X20
			  STS  DBUF1,R16

DISP_NEWPVER1:LDI  ZH,HIGH(DBUF1)
              LDI  ZL,LOW(DBUF1)
              LDI  R21,5
              LDI  R22,19
              LDI  R23,5
              RCALL BOOT_DISPRES
              RET                 			                   
;********************************************
DISP_MODEL:   LDI    ZL,LOW(BOOT_TE_MODEL*2)
              LDI    ZH,HIGH(BOOT_TE_MODEL*2)
              LDI    R21,1
              LDI    R22,2
              LDI    R23,11
		  	  RCALL  BOOT_DISPES
              RET
;*************************************
BOOT_SHOW_CRLF:   LDI  R16,0X0D   ;CR
             RCALL BOOT_PUTC
             
             LDI  R16,0X0A   ;LF
             RCALL BOOT_PUTC
             RET
;- - - - - - -- - -- - -- -- - -- - -- - - -
BOOT_SHOW_VID:    LDI  R16,0X53   ;S
             RCALL BOOT_PUTC 

             LDI  R16,0X48   ;H
             RCALL BOOT_PUTC
             
             LDI  R16,0X47   ;G
             RCALL BOOT_PUTC
             
             LDI  R16,0X55   ;U
             RCALL BOOT_PUTC
             
             LDI  R16,0X41   ;A
             RCALL BOOT_PUTC
             
             LDI  R16,0X4F   ;0
             RCALL BOOT_PUTC
             RET
     
;- - - - - - -- - -- - -- -- - -- - -- - - -
BOOT_SHOW_DID:    LDI  R16,0X47   ;G
             RCALL BOOT_PUTC

             LDI  R16,0X41   ;A
             RCALL BOOT_PUTC
             
			 LDI  R16,0X2D   ;-
             RCALL BOOT_PUTC

             LDI  R16,0X36   ;6
             RCALL BOOT_PUTC
             
			 LDI  R16,0X30   ;0
             RCALL BOOT_PUTC
             
             LDI  R16,0X30   ;0
             RCALL BOOT_PUTC
             
			 LDI  R16,0X42   ;B
             RCALL BOOT_PUTC

             RET
;- - - - - - -- - -- - -- -- - -- - -- - - -
BOOT_SHOW_FVER:    LDI  R16,1
              OUT  RAMPZ,R16
              LDI  R16,0X46              ;'F'
              RCALL BOOT_PUTC

              LDI ZH,HIGH(FVER*2)
              LDI ZL,LOW(FVER*2)
 
              ELPM R16,Z+
			  LDI  R17,0X30
              ADD  R16,R17
              RCALL BOOT_PUTC
 
              ELPM R16,Z+

              LDI  R17,0X30
              ADD  R16,R17
              RCALL BOOT_PUTC
 
              LDI R16,0X2E		; 
              RCALL BOOT_PUTC
 
              ELPM R16,Z+
              LDI R17,0X30
              ADD R16,R17
    	      RCALL BOOT_PUTC
 
              ELPM R16,Z+
              LDI R17,0X30
              ADD R16,R17
              RCALL BOOT_PUTC
			  LDI  R16,0
              OUT  RAMPZ,R16
              
              RET                             
;----------------------------------------------------
BOOT_SHOW_PVER:
               LDI R16,0X50		; 'P'
               RCALL BOOT_PUTC

               LDI ZH,HIGH(PVER*2)
               LDI ZL,LOW(PVER*2)
 
               LPM R16,Z+
               LDI R17,0X30
               ADD R16,R17
               RCALL BOOT_PUTC
 
               LPM R16,Z+
               LDI R17,0X30
               ADD R16,R17
               RCALL BOOT_PUTC
 
               LDI R16,0X2E		; 
               RCALL BOOT_PUTC
 
               LPM R16,Z+
               LDI R17,0X30
               ADD R16,R17
     	       RCALL BOOT_PUTC
 
               LPM R16,Z+
               LDI R17,0X30
               ADD R16,R17
               RCALL BOOT_PUTC
               RET 

;***************************************
BOOT_BELL:	  LDS   R16,PORTG 
			  CBR   R16,PT_BELL
              STS   PORTG,R16
			  LDI   R16,97
              RCALL BOOT_DELAY
			  LDS   R16,PORTG 
			  SBR   R16,PT_BELL
              STS   PORTG,R16 
              LDI   R16,97
              RCALL BOOT_DELAY
              LDS   R16,PORTG 
			  CBR   R16,PT_BELL
              STS   PORTG,R16
			  LDI   R16,97
              RCALL BOOT_DELAY
			  LDS   R16,PORTG 
			  SBR   R16,PT_BELL
              STS   PORTG,R16 
              RET 
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
;165key
BOOT_KEYC:         
              CLR R20
			  STS KEYV,R20
BOOT_KEY00C:   
              CBI PORTD,HC165_CLK

              CBI PORTD,HC165_PL
              NOP
              SBI PORTD,HC165_PL

              LDS R16,PING
			  SBRS R16,HC165_DAT
              SBR R20,0X1        
BOOT_KEY01C:   
              SBI PORTD,HC165_CLK
              LDS R16,PING
			  SBRS R16,HC165_DAT
              SBR R20,0X2        
BOOT_KEY02C:   
              CBI PORTD,HC165_CLK
              SBI PORTD,HC165_CLK
              LDS R16,PING
			  SBRS R16,HC165_DAT
              SBR R20,0X4        
BOOT_KEY03C: 
              CBI PORTD,HC165_CLK
              SBI PORTD,HC165_CLK
              LDS R16,PING
			  SBRS R16,HC165_DAT
              SBR R20,0X8                
BOOT_KEY04C:   
              CBI PORTD,HC165_CLK
              SBI PORTD,HC165_CLK
              LDS R16,PING
			  SBRS R16,HC165_DAT
              SBR R20,0X10        
BOOT_KEY05C:   
              CBI PORTD,HC165_CLK
              SBI PORTD,HC165_CLK
              LDS R16,PING
			  SBRS R16,HC165_DAT
              SBR R20,0X20       
BOOT_KEY06C:   
              CBI PORTD,HC165_CLK
              SBI  PORTD,HC165_CLK
              LDS R16,PING
			  SBRS R16,HC165_DAT
              SBR R20,0X40        
BOOT_KEY07C:  
              CBI PORTD,HC165_CLK
              SBI PORTD,HC165_CLK
              LDS R16,PING
			  SBRS R16,HC165_DAT
              SBR R20,0X80        
BOOT_KEY08C: 
              CBI PORTD,HC165_CLK        

              STS KEYV,R20              

              RET
;--------------------------------------
;1=智能/确认     2=清零/退出
;4=</清分        8=计数/>
;16=预置/+10     32=累加/+1
;64=菜单         128=启动
BOOT_KEY:   
            CALL  BOOT_KEYC
            LDS   R16,KEYV
            CPI   R16,13
            BRNE  BOOT_KEY09
			LDI   R16,100
            CALL  DELAY
            LDI   R18,0
 	        CALL  KEYC
BOOT_KEY09: 
            RET

;- - - - - - - - - - - - - - - - -
;LCD  
;- - - - - - - - - - - - - - - - -
BOOT_LCDBL_OFF:
               LDS R16,PORTG             
               SBR R16,PT_LCDC
               STS PORTG,R16
               RET
;- - - - - - - - - - - - - - - - -
BOOT_LCDBL_ON:
                LDS R16,PORTG             
                CBR R16,PT_LCDC
                STS PORTG,R16
                RET

;- - - - - - - - - - - - - - - - -
BOOT_LCD_RST:
                CBI PORTC,LCD_RES
                RCALL BOOT_DLLCD
                RCALL BOOT_DLLCD
				SBI PORTC,LCD_RES
                RET

;- - - - - - - - - - - - - - - - -
BOOT_OUTI:
              SBI PORTC,LCD_CS1
              SBI PORTC,LCD_CS2
              SBI PORTC,LCD_CS3
              SBI PORTC,LCD_CS4

              SBI PORTC,LCD_E
              CBI PORTC,LCD_RS
              CBI PORTC,LCD_RW
              OUT PORTA,R16
              RCALL BOOT_DLLCD
              CBI PORTC,LCD_E
              RCALL BOOT_DLLCD     
              CBI PORTC,LCD_CS1
              CBI PORTC,LCD_CS2
              CBI PORTC,LCD_CS3
              CBI PORTC,LCD_CS4
              RCALL BOOT_DLLCD     
              RET

;- - - - - - - - - - - - - - - - -
BOOT_OUTI1:
              SBI PORTC,LCD_CS1
              SBI PORTC,LCD_E
              CBI PORTC,LCD_RS
              CBI PORTC,LCD_RW
              RCALL BOOT_DLLCD     
              OUT PORTA,R16
              RCALL BOOT_DLLCD     
              CBI PORTC,LCD_E
              RCALL BOOT_DLLCD     
              CBI PORTC,LCD_CS1

              RCALL BOOT_DLLCD     
              RET
                   
;- - - - - - - - - - - - - - - - -
BOOT_OUTI2:
              SBI PORTC,LCD_CS2
              SBI PORTC,LCD_E
              CBI PORTC,LCD_RS
              CBI PORTC,LCD_RW
              OUT PORTA,R16
              RCALL BOOT_DLLCD     
 	          CBI PORTC,LCD_E
              RCALL BOOT_DLLCD     
	          CBI PORTC,LCD_CS2
              RCALL BOOT_DLLCD     

              RET

;- - - - - - - - - - - - - - - - -
BOOT_OUTI3:
              SBI PORTC,LCD_CS3
              SBI PORTC,LCD_E
              CBI PORTC,LCD_RS
              CBI PORTC,LCD_RW
              OUT PORTA,R16
              RCALL BOOT_DLLCD     
              CBI PORTC,LCD_E
              RCALL BOOT_DLLCD     
              CBI PORTC,LCD_CS3
              RCALL BOOT_DLLCD    

              RET

;- - - - - - - - - - - - - - - - -

⌨️ 快捷键说明

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