X-Git-Url: https://hackdaworld.org/gitweb/?a=blobdiff_plain;f=beginners%2Fseason_junior.asm;h=e6a46067d459aaf6c6aa0bd249c0921370a2f84a;hb=d33a33e018bbcaa09907be8fa03b965fe411a974;hp=78c79627da6b99d76037ea8687a0ccb8bc8cbb0d;hpb=065354af55b9bb4593071eb3717ef508bd80f516;p=my-code%2Fatmel.git diff --git a/beginners/season_junior.asm b/beginners/season_junior.asm index 78c7962..e6a4606 100644 --- a/beginners/season_junior.asm +++ b/beginners/season_junior.asm @@ -6,6 +6,7 @@ ; at90s2313 ; setup: +; ; vcc card --- atmel vcc ; vcc cam --- ; rst cam --- atmel int0 (pd2) @@ -19,22 +20,10 @@ .include "../include/2313def.inc" -; functions by now: -; -; stupid mode only by now. just see what cam/card do and redirect -; this to card/cam. -; -; next implementation: -; -; try to read one byte of card/cam communication and output via uart. -; output time information in some way. -; -; future: -; -; buffer/parse whole strings and decide whether to send to card or not. -; some defines -; ------------ +; ####### +; defines +; ####### ; baudrate = clock freq / etu ; std smartcard etu: 372 @@ -45,24 +34,55 @@ .define etu_h 312 .define baudrate 5 ; UBRR value for 76800 bits/s (8mhz clock) -; names for registers -.define tmp r16 -.define bitcount r17 -.define tmp1 r18 -.define tmp2 r19 -.define byte r20 -.define overflow_counter r21 -.define one r1 -.define zero r0 - +; sizes +.define uart_data_len 4 -; +; names for registers +.def tmp = r16 +.def bitcount = r17 +.def tmp1 = r18 +.def tmp2 = r19 +.def byte = r20 +.def overflow_counter = r21 +.def counter_l = r22 +.def counter_h = r23 +.def state = r24 +.def state_m = r25 +.def mode = r26 +.def counter_l_tmp = r27 +.def counter_h_tmp = r28 +.def address_h = r31 +.def address_l = r30 +.def one = r1 +.def zero = r0 + +; state +.define LOW (1<<0) +.define LOW_F 1 +.define HIGH (1<<1) +.define HIGH_F 2 +; mode +.define STUPID (1<<0) ; forward cam <-> card communication +.define STUPID_F 1 +.define COOL (1<<1) ; send time (clocks) & state via uart +.define COOL_F 2 +.define ELITE (1<<2) ; create bytes, maybe even whole command arrays +.define ELITE_F 3 +.define GODLIKE (1<<3) ; filter and mask for commands to card - send rejected via uart only +.define GODLIKE_F 4 +.define INCREDIBLE_HACK (1<<4) ; destroy all your hardware +.define INCREDIBLE_HACK_F 5 + +; but there is only stupid and cool mode right now %) + + +; ############# ; programm code -; ------------- +; ############# -; +; ------------------ ; interrupt vectors: -; +; ------------------ ; reset rjmp INIT @@ -80,7 +100,7 @@ rjmp REC_CARD reti ; timer/counter overflow 1 -rjmp CLK_OVERFLOW +rjmp T1_OVERFLOW ; timer/counter overflow 0 reti @@ -97,12 +117,16 @@ reti ; analog comparator reti -; +; ------------ ; init routine -; +; ------------ INIT: +; output low on rst to card while init +sbi DDRD,DDD4 +cbi PORTD,PD4 + ; set stackpointer ldi tmp,low(RAMEND) out SPL,tmp @@ -115,10 +139,10 @@ ldi tmp,((1<