Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ; Should be the same as previous, but for now it's plain assembler compiled with avra
- ; The result is slightly different, now it's well seen that stackpointer is overwritten
- ; At the start it's trasnmit '\' = 0x5C but when I start transmit from the PC side
- ; quickly changed to something different, after a while even go into the trap for
- ; unused interrupts - at the start I'm disble interrupts globally.
- ;
- ;* *********************************************************************
- ;* avr-uart-test.asm
- ;* AVR uart handler for ATmega16
- ;* Plain assembler using avra
- ;* by tovis 2015
- ;* avra avr-uart-test.asm -l avr-uart-test.lst
- ;***********************************************************************
- .INCLUDE "rg_m16def.inc"
- ;***********************************************************************
- .ORG 0x0000
- JMP START0 ; RESET
- JMP ISR_TRAP ; INT0
- JMP ISR_TRAP ; INT1
- JMP ISR_TRAP ; TIMER2_COMPARE
- JMP ISR_TRAP ; TIMER2_OVERFLOW
- JMP ISR_TRAP ; TIMER1_CAPTURE
- JMP ISR_TRAP ; TIMER1_COMPARE_A
- JMP ISR_TRAP ; TIMER1_COMPARE_B
- JMP ISR_TRAP ; TIMER1_OVERFLOW
- JMP ISR_TRAP ; TIMER0_OVERFLOW
- JMP ISR_TRAP ; SPI_TRASNFER_COMPLETE
- JMP ISR_TRAP ; USART_RX_COMPLETE
- JMP ISR_TRAP ; USART_TX_COMPLETE
- JMP ISR_TRAP ; ADC_CONVERSION_COMPLETE
- JMP ISR_TRAP ; EEPROM_READY
- JMP ISR_TRAP ; ANALOG_COMPARATOR
- JMP ISR_TRAP ; TWI_INTERFACE
- JMP ISR_TRAP ; INT2
- JMP ISR_TRAP ; TIMER0_COMPARE_MATCH
- JMP ISR_TRAP ; STORE_PROGRAM_MEMORY_READY
- ISR_TRAP:
- CALL toggle_A7
- RJMP ISR_TRAP
- ;***********************************************************************
- .ORG 0x0100
- START0:
- CLR R16 ; Clear R16
- OUT SREG, R16 ; Disable interrupt
- LDI R16, LOW(RAMEND) ; Stack pouinter to RAMEND = 0x045F
- OUT SPL, R16
- ; ??? LDI R16, HIGH(RAMEND)
- LDI R16, 0x02
- OUT SPH, R16
- ;-------
- SER R16
- OUT DDRA, R16 ; PORTA all pins are output
- CALL uart_setup
- ; ??? SEI ; Global interrupt enable
- main_loop:
- CALL uart_get
- CALL uart_put
- CALL toggle_A0
- RJMP main_loop
- ;***********************************************************************
- uart_get:
- SBIS UCSRA,RXC ; check if received data available
- RJMP uart_get_notready
- CALL toggle_A2 ; ???
- PUSH R16
- IN R16, UDR ; read data from receiver buffer
- POP R16
- uart_get_notready:
- RET
- ;-----------------------------------------------------------------------
- uart_put:
- SBIS UCSRA, UDRE ; check if UDR is empty
- RJMP uart_put_notready
- CALL toggle_A1 ; ???
- ; LDI R16, 'o'
- IN R16, SPL
- OUT UDR, R16
- uart_put_notready:
- RET
- ;-----------------------------------------------------------------------
- uart_setup:
- EOR R16, R16 ; Clear R16
- OUT UCSRB, R16 ; Disable USART interrupts
- ; Disable receive/transmit
- ; and UCSZ2 = 0 for 8 bit data
- LDI R16, LOW(103) ; Setup Baud rate 9600
- OUT UBRRL, R16
- LDI R16, HIGH(103)
- ANDI R16, 0x7F ; URSEL = 0 - access UBRRH
- OUT UBRRH, R16
- OUT UCSRA, R16 ; Clrear status and U2X, MPCM
- LDI R16, 0b10000110 ; Asynchronous 8n1 and URSEL = 1
- OUT UCSRC, R16 ; Set ssynchronous 8n1
- ;---
- SBI UCSRB, TXEN ; Transmitter enable
- SBI UCSRB, RXEN ; Receiver enable
- RET
- ;***********************************************************************
- toggle_A0:
- IN R16, PORTA
- LDI R17, 0x01
- EOR R16, R17
- OUT PORTA, R16
- RET
- ;-----------------------------------------------------------------------
- toggle_A1:
- IN R16, PORTA
- LDI R17, 0x02
- EOR R16, R17
- OUT PORTA, R16
- RET
- ;-----------------------------------------------------------------------
- toggle_A2:
- IN R16, PORTA
- LDI R17, 0x04
- EOR R16, R17
- OUT PORTA, R16
- RET
- ;-----------------------------------------------------------------------
- toggle_A3:
- IN R16, PORTA
- LDI R17, 0x08
- EOR R16, R17
- OUT PORTA, R16
- RET
- ;-----------------------------------------------------------------------
- toggle_A7:
- IN R16, PORTA
- LDI R17, 0x80
- EOR R16, R17
- OUT PORTA, R16
- RET
- ;/***********************************************************************
- ;* avr-uart-test.asm
- ; **********************************************************************/
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement