//RFM12 Transmitter //(c) 2012 www.loetstelle.net //Verwendung nur zum privaten Gebrauch. .include "m8def.inc" .equ FLAG_USART_RCV= 0 .equ FLAG_INT0 = 1 .equ FLAG_SENDING = 2 .equ FLAG_IRQ_COUNTER = 3 .equ FLAG_POWER_UP = 4 .equ FLAG_DO_INIT = 5 .equ FLAG_INITIALIZED = 6 .equ FLAG_TX_TIMEOUT = 7 .equ LED_DDR = DDRC .equ LED_PIN = 5 .EQU RFM12_CLOCK= 0 .EQU RFM12_DATA_IN = 1 .EQU RFM12_DATA_OUT = 2 .EQU RFM12_NSEL = 3 .EQU RFM12_PORT = PORTC .EQU RFM12_PINS = PINC .EQU RFM12_DDR = DDRC .EQU MAX_IRQ_COUNTER = 50 .EQU MAX_TX_WATCHDOG = 10 .def sreg_temp=r1 .def temp1=r16 .def temp2=r17 .def temp3 = r18 .def flags = r19 .def rcv_byte = r20 .def tx_ptr = r21 .def irq_counter = r22 .def tx_watchdog = r23 //Usart 115200 kBit per Second /7.37 MHz Quarz .equ BAUDRATE_REGISTER = 3 .org $0000 rjmp main .org INT0Addr rjmp INT0_Handler .org URXCADDR rjmp USART_RX_HANDLER .org OVF1Addr rjmp OVF1Handler .org int_vectors_size*2 main: ldi temp1,low(ramend) out spl,temp1 ldi temp1,high(ramend) out sph,temp1 clr flags rcall usart_init rcall int0_init rcall timer1_init; rcall RFM12_Port_INIT ldi zl,low(MESSAGE_HELLO*2) ldi zh,high(MESSAGE_HELLO*2) rcall usart_message rcall usart_crlf sei endless: sbrc flags,FLAG_USART_RCV rcall usart_rcv_handler nop sbrc flags,FLAG_INT0 rcall flaghandler_int0 nop sbrc flags,FLAG_IRQ_COUNTER rcall flaghandler_irq_counter nop sbrc flags,FLAG_DO_INIT rcall flaghandler_do_init nop sbrc flags,FLAG_TX_TIMEOUT rcall flaghandler_tx_timeout nop rjmp endless flaghandler_tx_timeout: cbr flags,(1<