X-Git-Url: https://hackdaworld.org/gitweb/?a=blobdiff_plain;f=beginners%2Fseason_junior.asm;h=78c79627da6b99d76037ea8687a0ccb8bc8cbb0d;hb=065354af55b9bb4593071eb3717ef508bd80f516;hp=94ba21c6ccf34330ea351fc4b7e798329e8d8213;hpb=448a02069232f473cbdde6b2aa698d062bd3876a;p=my-code%2Fatmel.git diff --git a/beginners/season_junior.asm b/beginners/season_junior.asm index 94ba21c..78c7962 100644 --- a/beginners/season_junior.asm +++ b/beginners/season_junior.asm @@ -6,16 +6,60 @@ ; at90s2313 ; setup: -; vcc card --- vcc cam -; rst card --- rst cam --- atmel t0 (pd4) -; clk card --- clk cam --- atmel t1 (pd5) +; vcc card --- atmel vcc +; vcc cam --- +; rst cam --- atmel int0 (pd2) +; rst card --- atmel (pd4) +; clk card -\ +; - atmel t1 (pd5) +; clk cam -/ ; gnd card --- gnd cam --- atmel gnd -; i/o card --- atmel int0 (pd2) +; i/o card --- atmel icp (pd6) ; i/o cam --- atmel int1 (pd3) -include "../include/2313def.inc" +.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 +; ------------ + +; baudrate = clock freq / etu +; std smartcard etu: 372 +; other smartcards: 625 +.define clock 8000000 +.define clk_h 4000000 +.define etu 625 +.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 +; +; programm code +; ------------- + ; ; interrupt vectors: ; @@ -24,19 +68,19 @@ include "../include/2313def.inc" rjmp INIT ; int0 -rjmp REC_CARD +rjmp RST_CAM ; int1 rjmp REC_CAM ; timer/counter capt 1 -reti +rjmp REC_CARD ; timer/counter compare reti ; timer/counter overflow 1 -rjmp T1_OVERFLOW +rjmp CLK_OVERFLOW ; timer/counter overflow 0 reti @@ -45,7 +89,7 @@ reti reti ; uart data register empty -reti +rjmp UART_OUT ; uart tx complete reti @@ -60,34 +104,193 @@ reti INIT: ; set stackpointer -ldi r16,low(RAMEND) -out SPL,r16 +ldi tmp,low(RAMEND) +out SPL,tmp ; enable interrupts int0,int1 -ldi r16,((1<