資源簡介
atmega64bootload,avr單片機自動升級程序,本程序是通過串口發送升級程序代碼到單片機,來實現更新升級單片機自身程序.
代碼片段和文件信息
/**********************************************************************************/
//NOTE?:
// 函數使用寄存器返回它的值(從?LSB?到?MSB?):
// R30?-?字符型和無符號字符型
// R30?,R31?-?整型和無符號整型
// R30?,R31?,R22?,R23?-?長整型和無符號長整型?
// 寄存器?R0?R1?R22?R23?R24?R25?R26?R27?R30?和?R31?可以在匯編子程序中自由使
// 用。如果在中斷過程使用這些寄存器,就必須在進入時保存,返回時恢復??
// 編譯器使用了其中的?R0?R1?R22?R23?R24?R25
// R26?R27?R28?R29?R30?和?R31。?R2?到?R15?中的一些寄存器可能會用來存放全局位變
// 量。剩下的寄存器會分配給全局字符型變量和全局整型變量。?R16?到?R21?分配給局部字符型變量
// 和局部整型變量??
//??auto?:?zzz
/**********************************************************************************/
#asm
.EQU SPMCR?= 0x57
#endasm
#pragma warn-?
//Flash?write?or?erasure?
//write?:funtion?=?0x05
//erasure:?funtion?=?0x03
void?WritePage?(unsigned?int?adrunsigned?char?funtion)
{?
#asm?
; PUSH R18
write_page?:
LDS R27SPMCR
SBRC R270???
RJMP write_page? ;judge?state?of?the?current?block?
LDD R31Y+2
LDD R30Y+1 ;designation?address?of??current?block
LD R27Y
STS SPMCRR27 ;argument?2?decides?function
SPM ;perform?appointed?funtion
; POP R18
#endasm?
}
//fill?the??temporary??buffer
void?FillTempBuffer?(unsigned?int?adrunsigned?int?Content)
{
#asm
; PUSH R18?
filltemp?:
LDS R27SPMCR
SBRC R270???
RJMP filltemp? ;judge?state?of?the?current?block?
LDD R31Y+3
LDD R30Y+2 ;designation?address?of?current?block(R30?=?ZLR31?=?ZH)
LDD R1?Y+1
LD R0?Y ;fill-in?data
LDI R270x01
STS SPMCRR27 ;enable?the?memorizer? ?
SPM?
; POP R18
#endasm
}
//read?data?form?memorymaybe?it?is?datalock?bits?or?fuse?bits
//cmd?=?0?read?dataothers?express?that?read?lock?bits?or?fuse?bitsas?0x09
unsigned?int?ReadProgramMemory?(unsigned?int?adrunsigned?char?cmd)
{
#asm
; PUSH R17
; PUSH R18
; PUSH R0?
LDD R31Y+2
LDD R30Y+1 ;designation?address?of?current?block
LD R27Y
SBRS R270 ;read?lockbits?or?fuse?bits?(second?argument?is?0x09)
STS SPMCRR27
LPM
MOV R26R0
INC R30
LPM
MOV R27R0
MOV R30R27
MOV R31R26
; POP R0
; POP R18
; POP R17
#endasm?
}
/*
void?WriteLockBits?(unsigned?char?val)
{
#asm?
; PUSH R18
write_lock:
LDS R27SPMCR
SBRC R270
RJMP write_lock
LD R0Y
LDI R270x09
STS SPMCRR27
SPM?
POP R18
#endasm
}?*/
unsigned?char?ReadFlash?(unsigned?int?adr)
{
#asm
LDD R31Y+1
LD R30Y
LPM R30Z
#endasm
}???
void?EnableRWW?(void)
{
????????#asm
?En_RWW:
????????LDS?????R27SPMCR
????????SBRC????R270
????????RJMP????En_RWW
????????LDI?????R270x11
????????STS?????SPMCRR27
????????SPM
????????#endasm
}
#pragma warn+
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????1176??2005-11-03?23:45??MEGA64LOAD\1.bin
?????文件??????13829??2005-05-19?08:20??MEGA64LOAD\assmbly.asm
?????文件???????2761??2005-11-03?23:51??MEGA64LOAD\assmbly.c~
?????文件????????358??2005-11-03?23:50??MEGA64LOAD\assmbly.h
?????文件?????????30??2005-05-19?08:20??MEGA64LOAD\assmbly.inc
?????文件????????283??2005-05-19?08:20??MEGA64LOAD\assmbly.map
?????文件????????875??2005-05-19?08:20??MEGA64LOAD\assmbly.sym
?????文件???????2204??2005-09-22?00:22??MEGA64LOAD\assmbly.txt
?????文件????????147??2005-05-19?08:20??MEGA64LOAD\assmbly.vec
?????文件??????38876??2005-11-06?01:04??MEGA64LOAD\bootload.asm
?????文件??????20477??2005-10-31?21:20??MEGA64LOAD\bootload.cof
?????文件??????????0??2005-11-06?01:04??MEGA64LOAD\bootload.eep
?????文件???????3327??2005-11-06?01:04??MEGA64LOAD\bootload.hex
?????文件?????????53??2005-11-06?01:04??MEGA64LOAD\bootload.inc
?????文件??????61676??2005-11-06?01:04??MEGA64LOAD\bootload.lst
?????文件????????424??2005-11-06?01:04??MEGA64LOAD\bootload.map
?????文件???????5358??2005-11-06?01:04??MEGA64LOAD\bootload.obj
?????文件???????7644??2005-11-06?01:04??MEGA64LOAD\bootload.rom
?????文件???????3835??2005-11-06?01:04??MEGA64LOAD\bootload.sym
?????文件????????319??2005-11-06?01:04??MEGA64LOAD\bootload.vec
?????文件??????10913??2005-10-31?21:20??MEGA64LOAD\bootload__.c
?????文件???????3403??2005-10-31?21:22??MEGA64LOAD\bootload_cof.aps
?????文件???????3977??2007-12-11?08:59??MEGA64LOAD\BootLoadFor64.prj
?????文件??????????0??2007-12-11?08:59??MEGA64LOAD\BootLoadFor64.txt
?????文件??????32880??2005-05-31?10:37??MEGA64LOAD\main.asm
?????文件???????5978??2005-05-31?10:36??MEGA64LOAD\main.c
?????文件?????????66??2005-05-31?10:37??MEGA64LOAD\main.inc
?????文件????????280??2005-05-31?10:37??MEGA64LOAD\main.map
?????文件???????2097??2005-05-31?10:37??MEGA64LOAD\main.sym
?????文件????????319??2005-05-31?10:37??MEGA64LOAD\main.vec
............此處省略11個文件信息
- 上一篇:基于51單片機的智能溫控器
- 下一篇:二分搜索(算法 代碼)
評論
共有 條評論