X-Git-Url: http://git.smho.de/gw/?p=owSlave2.git;a=blobdiff_plain;f=programmer_atmega328%2Fprogrammer_atmega328%2Fprogrammer_atmega328.asm;fp=programmer_atmega328%2Fprogrammer_atmega328%2Fprogrammer_atmega328.asm;h=816731ca72dd73373659b62ad0753c05d03b981f;hp=0000000000000000000000000000000000000000;hb=81a79648a168a1167c5ad97d4068621c1751a353;hpb=6467d8138460abffd9ddabc7b0a9f00c764af19c diff --git a/programmer_atmega328/programmer_atmega328/programmer_atmega328.asm b/programmer_atmega328/programmer_atmega328/programmer_atmega328.asm new file mode 100644 index 0000000..816731c --- /dev/null +++ b/programmer_atmega328/programmer_atmega328/programmer_atmega328.asm @@ -0,0 +1,497 @@ + +.def srbyte = r12 ;byty for search rom algorithm +.def writelow = r13; marker for send low +.def zero =r14; always zero +.def smode=r15; if 1 then send +.def temp = r16 ; +.def temp2 = r17; +.def mode = r18 ; +.def bitp = r19 ; bit counter ... shift... +.def rwbyte = r21; +.def param = r22; +.def bytep = r23 ;byte counter +#define spmcrval param + + +.equ OWM_READ_ROM_COMMAND=0 ; 0 wegen schnellen test ist dieser wert 0! Daturch wird die Sprungdabelle nicht verwendet +.equ OWM_SLEEP=1 ; Warten auf Reset +.equ OWM_MATCH_ROM=2 +.equ OWM_SEARCH_ROM_S=3 ;send bit +.equ OWM_SEARCH_ROM_R=4 ;resive master +.equ OWM_READ_COMMAND=5 +.equ OWM_WRITE_SCRATCHPAD=6 +.equ OWM_READ_SCRATCHPAD=7 +.equ OWM_PROGRAMM_PAGE=8 +.equ OWM_RECALL_FLASH=9 + + + +.equ OW_DDR = DDRD +.equ OW_PIN = PORTD2 +.equ OW_PORT = PORTD +.equ OW_PINN = PIND + +//.equ SPMEN = 0 + +;.equ SRAM_START = 0x60 + +.macro set_clock + ldi temp,0x80; + sts CLKPR,temp + ldi temp,@0 + sts CLKPR,temp +.endmacro + +.macro owwl + sbic OW_PINN,OW_PIN + rjmp pc-1 +.endmacro + +.macro owwh + sbis OW_PINN,OW_PIN + rjmp pc-1 +.endmacro + + + + + ;--------------------------------------------------- +; START of PROG +;--------------------------------------------------- + + +.CSEG +.ORG 0x000 +jreset: + jmp start ; Reset-Vector + reti ; + reti ; + reti ; + reti ; + reti ; + reti ; + reti ; + reti ; + reti ; + reti ; + reti ; + reti ; + reti ; + reti ; + reti ; + reti ; + reti ; + reti ; + reti ; + reti ; + + +.ORG 0x3E00 +start: + cli + ldi temp,0 + mov zero,temp + set_clock 0x01 ;4mhz + ldi mode,OWM_SLEEP + ldi temp,(1<