; season - junior ; ; author: hackbard@hackdaworld.dyndns.org ; ; at90s2313 ; setup: ; 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 icp (pd6) ; i/o cam --- atmel int1 (pd3) .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: ; ; reset rjmp INIT ; int0 rjmp RST_CAM ; int1 rjmp REC_CAM ; timer/counter capt 1 rjmp REC_CARD ; timer/counter compare reti ; timer/counter overflow 1 rjmp CLK_OVERFLOW ; timer/counter overflow 0 reti ; uart rx complete reti ; uart data register empty rjmp UART_OUT ; uart tx complete reti ; analog comparator reti ; ; init routine ; INIT: ; set stackpointer ldi tmp,low(RAMEND) out SPL,tmp ; enable interrupts int0,int1 ldi tmp,((1<