X-Git-Url: http://git.smho.de/gw/?a=blobdiff_plain;f=programmer%2Fprogrammer%2Fprogrammer_8MHz.asm;fp=programmer%2Fprogrammer%2Fprogrammer_8MHz.asm;h=3bf5f2dcfa2f2ddf745ad1f878b98518ba0ddf15;hb=c612a6c03106176eb24430e254ea8a1dfd8e1343;hp=0000000000000000000000000000000000000000;hpb=cd30cdb18cadc2525618a111ca657d2ed18bc3f3;p=owSlave2.git diff --git a/programmer/programmer/programmer_8MHz.asm b/programmer/programmer/programmer_8MHz.asm new file mode 100644 index 0000000..3bf5f2d --- /dev/null +++ b/programmer/programmer/programmer_8MHz.asm @@ -0,0 +1,489 @@ +.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 = DDRB +.equ OW_PIN = PORTB2 +.equ OW_PORT = PORTB +.equ OW_PINN = PINB + +;.equ SRAM_START = 0x60 + +.macro set_clock + ldi temp,0x80; + out CLKPR,temp + ldi temp,@0 + out 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: + rjmp start ; Reset-Vector + reti ; + reti ; + reti ; + reti ; + reti ; + reti ; + reti ; + reti ; + reti ; + reti ; + reti ; + reti ; + reti ; + reti ; + reti ; + reti ; + reti ; + reti ; + reti ; + reti ; + + +.ORG 0x0EC0 + +start: + cli + ldi temp,0 + mov zero,temp + set_clock 0x00 ;8mhz + ldi mode,OWM_SLEEP + ldi temp,(1<