002.asm
1 | ; ******************************************************
| 2 | ; BASIC .ASM template file for AVR
| 3 | ; ******************************************************
| 4 |
| 5 | .include "D:\PROGRA~3\VMLAB\include\m8def.inc"
| 6 |
| 7 | ; Define here the variables
| 8 | ;
| 9 |
| 10 | .equ CLOCK = 14745600
| 11 | .equ BAUD = 9600
| 12 | .equ UBRRVAL = CLOCK/(BAUD*16)-1
| 13 |
| 14 | .equ INTERVAL = 0.25
| 15 | .equ PRESCALER = 1024
| 16 | .equ OCVAL = (INTERVAL*CLOCK)/PRESCALER
| 17 |
| 18 | .def temp = r16
| 19 | .def sumH = r25
| 20 | .def sumL = r24
| 21 |
| 22 | ; Define here Reset and interrupt vectors, if any
| 23 |
| 24 | .org 0x000 ; kommt ganz an den Anfang des Speichers
| 25 | rjmp start ; Interruptvektoren überspringen
| 26 | ; und zum Hauptprogramm
| 27 | reti ; IRQ0 Handler
| 28 | reti ; IRQ1 Handler
| 29 | reti
| 30 | reti
| 31 | reti ; Timer1 Capture Handler
| 32 | rjmp TIM1_COMPA ; Timer1 CompareA Handler
| 33 | reti ; Timer1 CompareB Handler
| 34 | reti ; Timer1 Overflow Handler
| 35 | reti ; Timer0 Overflow Handler
| 36 | reti ; SPI Transfer Complete Handler
| 37 | reti ; USART RX Complete Handler
| 38 | reti ; UDR Empty Handler
| 39 | reti ; USART TX Complete Handler
| 40 | reti ; ADC Conversion Complete Interrupt Handler
| 41 | reti ; EEPROM Ready Handler
| 42 | reti ; Analog Comparator Handler
| 43 | reti ; Two-wire Serial Interface Handler
| 44 | reti ; Store Program Memory Ready Handler
| 45 |
| 46 |
| 47 | start:
| 48 | ; stack
| 49 | ldi temp, LOW(RAMEND)
| 50 | out SPL, temp
| 51 | ldi temp, HIGH(RAMEND)
| 52 | out SPH, temp
| 53 |
| 54 | ldi temp, 0xFF
| 55 | out DDRD, temp
| 56 |
| 57 | ldi temp, 0xFF
| 58 | out PORTD, temp
| 59 |
| 60 | ;output compare werte
| 61 | ldi temp, HIGH(OCVAL)
| 62 | out OCR1AH, temp
| 63 | ldi temp, LOW(OCVAL)
| 64 | out OCR1AL, temp
| 65 |
| 66 | ; ctc und prescaler
| 67 | ldi temp, 0b00000000
| 68 | out TCCR1A, temp
| 69 | ldi temp, 0b00001101
| 70 | out TCCR1B, temp
| 71 |
| 72 | ; timer interrups
| 73 | ldi temp, 0b00010000
| 74 | out TIMSK, temp
| 75 |
| 76 | ; baudrate
| 77 | ldi temp, LOW(UBRRVAL)
| 78 | out UBRRL, temp
| 79 | ldi temp, HIGH(UBRRVAL)
| 80 | out UBRRH, temp
| 81 |
| 82 | ; frameformat
| 83 | ldi temp, (1<<URSEL)|(3<<UCSZ0)
| 84 | out UCSRC, temp
| 85 |
| 86 | ; tx aktivieren
| 87 | sbi UCSRB,TXEN
| 88 |
| 89 | sei
| 90 |
| 91 |
| 92 | loop:
| 93 | rjmp loop
| 94 |
| 95 |
| 96 | serout:
| 97 | sbis UCSRA,UDRE
| 98 | rjmp serout ; Warten
| 99 | out UDR, temp
| 100 | ret
| 101 |
| 102 |
| 103 | TIM1_COMPA:
| 104 | push temp
| 105 | ;adiw sumH:sumL, 1
| 106 | ;mov temp, sumH
| 107 | ;rcall serout
| 108 | ;mov temp, sumL
| 109 | ;rcall serout
| 110 | ldi temp, 'a'
| 111 | rcall serout
| 112 | ldi temp, 10
| 113 | rcall serout
| 114 | ldi temp, 13
| 115 | rcall serout
| 116 | pop temp
| 117 | reti
|
|