; main file of the monolyzer project ; ; author: hackbard@hackdaworld.org ; ; device specific definition file .include "../include/tn2313def.inc" ; defines .def zero = r1 .def one = r2 .def tmp1 = r16 .def tmp2 = r17 .def uart_rxtx = r18 .def count = r19 .def state = r20 ; ; interrupts ; ; RESET rjmp INIT ; INT0 rjmp INT0_IR ; INT1 reti ; T1 CAPT1 reti ; T1 COMP A reti ; T1 OVF1 reti ; T0 OVF0 reti ; UART RX reti ; UART UDRE reti ; UART TX reti ; ANA COMP reti ; PCINT reti ; T1 COMP B reti ; T0 COMP A reti ; T0 COMP B reti ; USI START reti ; USI OVF reti ; EE READY reti ; WDT OVF reti ; ; init and main code ; RESET: INIT: ; gio port init rcall PORT_INIT ; timer1 init rcall TIMER1_INIT ; uart init rcall UART_INIT ; zero and one initialization ldi tmp1,0 mov zero,tmp1 ldi tmp1,1 mov one,tmp1 ; set stackpointer ldi tmp1,low(RAMEND) out SPL,tmp1 ; more init ldi count,0 ldi state,1 ; storage pointer ldi ZL,low(STORAGE) ldi ZH,high(STORAGE) ; counter ldi tmp1,0 out TCNT1H,tmp1 out TCNT1L,tmp1 ; signal ready output ldi uart_rxtx,0x72 rcall UART_TX ; external interrupt enable rcall INT0_IR_CONF rcall INT0_IR_ENABLE ; global interrupt enable sei MAIN: SAMPLE: ; sample as long as there is storage capacity sbrc state,0 rjmp SAMPLE ; external interrupt enable rcall INT0_IR_DISABLE ; signal finish ldi uart_rxtx,0x66 rcall UART_TX IDLE: ; wait for commands via uart rcall UART_RX ; decode instruction cpi uart_rxtx,0x52 breq RESET cpi uart_rxtx,0x54 breq TRANSFER rjmp IDLE TRANSFER: ; reset storage pointer ldi ZL,low(STORAGE) ldi ZH,high(STORAGE) ldi count,0 TRANSFER_LOOP: ; transmit storage ld uart_rxtx,Z+ rcall UART_TX ; count sent data add count,one ; check amount of sent data cpi count,110 breq IDLE rjmp TRANSFER_LOOP ; include subroutines .include "port.asm" .include "timer.asm" .include "uart.asm" ; ; interrupt routines ; INT0_IR: ; debug output ; cbi PORTD,3 ; write timer value into sram in tmp1,TCNT1L in tmp2,TCNT1H st Z+,tmp2 st Z+,tmp1 ; inc counter add count,one ; check for left capacity cpi count,55 brne EXIT_IR ; exit sampling ldi state,0 EXIT_IR: ; debug output ; sbi PORTD,3 reti ; ; sram ; .dseg STORAGE: .byte 110