Stap 1: Broncode, geluid generatie
START:. OMVATTEN "tn26def.inc"
CLR r23
CLR r24
CLR r25
CLR r26
CLR r27
CLR-r28
CLR r29
CLR r30
CLR r31
LDI r25, 0b10000000; hier is waar ik heb de verkeerde uitgang pin gedefinieerd... Het shoud worden
LDI r26, 0b00000000; 0b00000001 die ik denk. Gewoon gebruik maken van 0b11111111 voor het testen als onzeker.
uit DDRA, r25
NOP
uit PORTA, r26
NOP
uit DDRB, r26
NOP
INGANG:
96 notities mogelijk, plus stilte (nul)
uit PORTA, r26; Stilte als geen input
NOP
in r28, PINB
MOV r31, r28
CPI r28, 0b00000000
breq INPUT
D8S:
; 5.1 khz
CPI r28, 0b00000001
Brně D8
LDI r29, 0b00010000
LDI r30, 0b00000001
D8:
; 4,63 khz
CPI r28, 0b00000010
Brně C8S
LDI r29, 0b00010010
LDI r30, 0b00000001
C8S:
; 4,42 khz
CPI r28, 0b00000011
Brně C8
LDI r29, 0b00010011
LDI r30, 0b00000001
C8:
; 4.24 khz
CPI r28, 0b00000100
Brně B7
LDI r29, 0b00010100
LDI r30, 0b00000001
rjmp B7
INPUT91:
rjmp INPUT
B7:
; 3,91 khz
CPI r28, 0b00000101
Brně A7S
LDI r29, 0b00010110
LDI r30, 0b00000001
A7S:
; 3.70 khz
CPI r28, 0b00000110
Brně A7
LDI r29, 0b00010111
LDI r30, 0b00000001
A7:
; 3.57 khz
CPI r28, 0b00000111
Brně G7
LDI r29, 0b00011001
LDI r30, 0b00000001
G7:
; 3.13 khz
CPI r28, 0b00001000
Brně F7S
LDI r29, 0b00011010
LDI r30, 0b00000001
F7S:
; 2,94 khz
CPI r28, 0b00001001
Brně F7
LDI r29, 0b00011110
LDI r30, 0b00000001
F7:
; 2,78 khz
CPI r28, 0b00001010
Brně E7
LDI r29, 0b00100000
LDI r30, 0b00000001
E7:
; 2,63 khz
CPI r28, 0b00001011
Brně D7S
LDI r29, 0b00100010
LDI r30, 0b00000001
D7S:
; 2,50 khz
CPI r28, 0b00001100
Brně D7
LDI r29, 0b00100101
LDI r30, 0b00000001
D7:
; 2,33 khz
CPI r28, 0b00001101
Brně C7S
LDI r29, 0b00100111
LDI r30, 0b00000001
C7S:
; 2.22 khz
CPI r28, 0b00001110
Brně C7
LDI r29, 0b00101010
LDI r30, 0b00000001
C7:
; 2.08 khz
CPI r28, 0b00001111
Brně B6
LDI r29, 0b00101100
LDI r30, 0b00000001
rjmp B6
INPUT92:
rjmp INPUT91
B6:
; 1. 96 khz
CPI r28, 0b00010000
Brně A6S
LDI r29, 0b00101111
LDI r30, 0b00000001
A6S:
; 1,85 khz
CPI r28, 0b00010001
Brně A6
LDI r29, 0b00110010
LDI r30, 0b00000001
A6:
; 1,75 khz
CPI r28, 0b00010010
Brně G6S
LDI r29, 0b00110101
LDI r30, 0b00000001
G6S:
; 1,67 khz
CPI r28, 0b00010011
Brně G6
LDI r29, 0b00111001
LDI r30, 0b00000001
G6:
; 1.56 khz
CPI r28, 0b00010100
Brně F6S
LDI r29, 0b00111100
LDI r30, 0b00000001
F6S:
; 1.47 khz
CPI r28, 0b00010101
Brně F6
LDI r29, 0b01000000
LDI r30, 0b00000001
F6:
; 1.39 khz
CPI r28, 0b00010110
Brně E6
LDI r29, 0b01000100
LDI r30, 0b00000001
E6:
; 1,32 khz
CPI r28, 0b00010111
Brně D6S
LDI r29, 0b01001000
LDI r30, 0b00000001
D6S:
; 1,25 khz
CPI r28, 0b00011000
Brně D6
LDI r29, 0b01001101
LDI r30, 0b00000001
D6:
; 1.18 khz
CPI r28, 0b00011001
Brně C6S
LDI r29, 0b01010010
LDI r30, 0b00000001
C6S:
; 1.11 khz
CPI r28, 0b00011010
Brně C6
LDI r29, 0b01010111
LDI r30, 0b00000001
C6:
; 1.04 khz
CPI r28, 0b00011011
Brně B5
LDI r29, 0b01011100
LDI r30, 0b00000001
rjmp B5
INPUT93:
rjmp INPUT92
B5:
990Hz
CPI r28, 0b00011100
Brně A5S
LDI r29, 0b01100010
LDI r30, 0b00000001
A5S:
935Hz
CPI r28, 0b00011101
Brně A5
LDI r29, 0b01101000
LDI r30, 0b00000001
A5:
877Hz
CPI r28, 0b00011110
Brně G5S
LDI r29, 0b01101110
LDI r30, 0b00000001
G5S:
833Hz
CPI r28, 0b00011111
Brně G5
LDI r29, 0b01110101
LDI r30, 0b00000001
G5:
781Hz
CPI r28, 0b00100000
Brně F5S
LDI r29, 0b01111100
LDI r30, 0b00000001
F5S:
741Hz
CPI r28, 0b00100001
Brně F5
LDI r29, 0b10000100
LDI r30, 0b00000001
F5:
699Hz
CPI r28, 0b00100010
Brně E5
LDI r29, 0b10001100
LDI r30, 0b00000001
E5:
658Hz
CPI r28, 0b00100011
Brně D5S
LDI r29, 0b10010100
LDI r30, 0b00000001
D5S:
621Hz
CPI r28, 0b00100100
Brně D5
LDI r29, 0b10011101
LDI r30, 0b00000001
D5:
588Hz
CPI r28, 0b00100101
Brně C5S
LDI r29, 0b10100111
LDI r30, 0b00000001
C5S:
555Hz
CPI r28, 0b00100110
Brně C5
LDI r29, 0b10110001
LDI r30, 0b00000001
C5:
524Hz
CPI r28, 0b00100111
Brně B4
LDI r29, 0b10111100
LDI r30, 0b00000001
rjmp B4
INPUT94:
rjmp INPUT93
B4:
;
CPI r28, 0b00101000
Brně A4S
LDI r29, 0b11000111
LDI r30, 0b00000001
A4S:
;
CPI r28, 0b00101001
Brně A4
LDI r29, 0b11010011
LDI r30, 0b00000001
A4:
;
CPI r28, 0b00101010
Brně G4S
LDI r29, 0b11100000
LDI r30, 0b00000001
G4S:
;
CPI r28, 0b00101011
Brně G4
LDI r29, 0b11101101
LDI r30, 0b00000001
G4:
;
CPI r28, 0b00101100
Brně F4S
LDI r29, 0b11111100
LDI r30, 0b00000001
F4S:
;
CPI r28, 0b00101101
Brně F4
LDI r29, 0b00101011
LDI r30, 0b00000101
F4:
;
CPI r28, 0b00101110
Brně E4
LDI r29, 0b00101101
LDI r30, 0b00000101
E4:
;
CPI r28, 0b00101111
Brně D4S
LDI r29, 0b00110000
LDI r30, 0b00000101
D4S:
;
CPI r28, 0b00110000
Brně D4
LDI r29, 0b00110011
LDI r30, 0b00000101
D4:
;
CPI r28, 0b00110001
Brně C4S
LDI r29, 0b00110110
LDI r30, 0b00000101
C4S:
;
CPI r28, 0b00110010
Brně C4
LDI r29, 0b00111010
LDI r30, 0b00000101
C4:
;
CPI r28, 0b00110011
Brně B3
LDI r29, 0b00111101
LDI r30, 0b00000101
rjmp B3
INPUT95:
rjmp INPUT94
B3:
;
CPI r28, 0b00110100
Brně A3S
LDI r29, 0b01000001
LDI r30, 0b00000101
A3S:
;
CPI r28, 0b00110101
Brně A3
LDI r29, 0b01000101
LDI r30, 0b00000101
A3:
;
CPI r28, 0b00110110
Brně G3S
LDI r29, 0b01001001
LDI r30, 0b00000101
G3S:
;
CPI r28, 0b00110111
Brně G3
LDI r29, 0b01001110
LDI r30, 0b00000101
G3:
;
CPI r28, 0b00111000
Brně F3S
LDI r29, 0b01010011
LDI r30, 0b00000101
F3S:
;
CPI r28, 0b00111001
Brně F3
LDI r29, 0b01011000
LDI r30, 0b00000101
F3:
;
CPI r28, 0b00111010
Brně E3
LDI r29, 0b01011101
LDI r30, 0b00000101
E3:
;
CPI r28, 0b00111011
Brně D3S
LDI r29, 0b01100011
LDI r30, 0b00000101
D3S:
;
CPI r28, 0b00111100
Brně D3
LDI r29, 0b01101000
LDI r30, 0b00000101
D3:
;
CPI r28, 0b00111101
Brně C3S
LDI r29, 0b01101111
LDI r30, 0b00000101
C3S:
;
CPI r28, 0b00111110
Brně C3
LDI r29, 0b01110101
LDI r30, 0b00000101
C3:
;
CPI r28, 0b01111111
Brně B2
LDI r29, 0b01111101
LDI r30, 0b00000101
rjmp B2
INPUT96:
rjmp INPUT95
B2:
;
CPI r28, 0b01000000
Brně A2S
LDI r29, 0b10000101
LDI r30, 0b00000101
A2S:
;
CPI r28, 0b01000001
Brně A2
LDI r29, 0b10001101
LDI r30, 0b00000101
A2:
;
CPI r28, 0b01000010
Brně G2S
LDI r29, 0b10010101
LDI r30, 0b00000101
G2S:
;
CPI r28, 0b01000011
Brně G2
LDI r29, 0b10011110
LDI r30, 0b00000101
G2:
;
CPI r28, 0b01000100
Brně F2S
LDI r29, 0b10101000
LDI r30, 0b00000101
F2S:
;
CPI r28, 0b01000101
Brně F2
LDI r29, 0b10110010
LDI r30, 0b00000101
F2:
;
CPI r28, 0b01000110
Brně E2
LDI r29, 0b10111100
LDI r30, 0b00000101
E2:
;
CPI r28, 0b01000111
Brně D2S
LDI r29, 0b11001000
LDI r30, 0b00000101
D2S:
;
CPI r28, 0b01001000
Brně D2
LDI r29, 0b11010100
LDI r30, 0b00000101
D2:
;
CPI r28, 0b01001001
Brně C2S
LDI r29, 0b11100001
LDI r30, 0b00000101
C2S:
;
CPI r28, 0b01001010
Brně C2
LDI r29, 0b11101110
LDI r30, 0b00000101
C2:
;
CPI r28, 0b01001011
Brně B1
LDI r29, 0b11111100
LDI r30, 0b00000101
rjmp B1
INPUT97:
rjmp INPUT96
B1:
;
CPI r28, 0b01001011
Brně A1S
LDI r29, 0b00111111
LDI r30, 0b00011001
A1S:
;
CPI r28, 0b01001100
Brně A1
LDI r29, 0b01000010
LDI r30, 0b00011001
A1:
;
CPI r28, 0b01001101
Brně G1S
LDI r29, 0b01000110
LDI r30, 0b00011001
G1S:
;
CPI r28, 0b01001110
Brně G1
LDI r29, 0b01001011
LDI r30, 0b00011001
G1:
;
CPI r28, 0b01001111
Brně F1S
LDI r29, 0b01001111
LDI r30, 0b00011001
F1S:
;
CPI r28, 0b01010000
Brně F1
LDI r29, 0b01010100
LDI r30, 0b00011001
F1:
;
CPI r28, 0b01010001
Brně E1
LDI r29, 0b01011001
LDI r30, 0b00011001
E1:
;
CPI r28, 0b01010010
Brně D1S
LDI r29, 0b01011111
LDI r30, 0b00011001
D1S:
;
CPI r28, 0b01010011
Brně D1
LDI r29, 0b01100101
LDI r30, 0b00011001
D1:
;
CPI r28, 0b01010100
Brně C1S
LDI r29, 0b01101011
LDI r30, 0b00011001
C1S:
;
CPI r28, 0b01010101
Brně C1
LDI r29, 0b01110001
LDI r30, 0b00011001
C1:
;
CPI r28, 0b01010110
Brně B0
LDI r29, 0b01111000
LDI r30, 0b00011001
rjmp B0
INPUT98:
rjmp INPUT97
B0:
;
CPI r28, 0b01010111
Brně A0S
LDI r29, 0b01111111
LDI r30, 0b00011001
A0S:
;
CPI r28, 0b01011000
Brně A0
LDI r29, 0b10000111
LDI r30, 0b00011001
A0:
;
CPI r28, 0b01011001
Brně G0S
LDI r29, 0b10001111
LDI r30, 0b00011001
G0S:
;
CPI r28, 0b01011010
Brně G0
LDI r29, 0b10011000
LDI r30, 0b00011001
G0:
;
CPI r28, 0b01011011
Brně F0S
LDI r29, 0b10100001
LDI r30, 0b00011001
F0S:
;
CPI r28, 0b01011100
Brně F0
LDI r29, 0b10101011
LDI r30, 0b00011001
F0:
;
CPI r28, 0b01011101
Brně E0
LDI r29, 0b10110101
LDI r30, 0b00011001
E0:
;
CPI r28, 0b01011110
Brně D0S
LDI r29, 0b11000000
LDI r30, 0b00011001
D0S:
;
CPI r28, 0b01011111
Brně D0
LDI r29, 0b11001011
LDI r30, 0b00011001
D0:
;
CPI r28, 0b01100000
Brně C0S
LDI r29, 0b11011000
LDI r30, 0b00011001
C0S:
;
CPI r28, 0b01100001
Brně C0
LDI r29, 0b11100101
LDI r30, 0b00011001
C0:
;
CPI r28, 0b01100010
Brně hi
LDI r29, 0b11110010
LDI r30, 0b00011001
rjmp hi
INPUT99:
rjmp INPUT98
Hallo:
uit PORTA, r25
CLR r27
NOP; Om te compenseren voor Ingang1 functie, waardoor hi/lo gelijke lengtes
NOP
NOP
NOP
NOP
TIMER0h:; 5 cpu-cycli per tellen
Inc r24
NOP
CP r24, r29
Brně TIMER0h
rjmp TIMER1h
TIMER1h:; 6 cpu-cycli per tellen
CLR r24
Inc r27
CP r27, r30
NOP
Brně TIMER0h
rjmp lo
Lo:
uit PORTA, r26
CLR r27
TIMER0l:; 5 cpu-cycli per tellen
Inc r24
NOP
CP r24, r29
Brně TIMER0l
rjmp TIMER1l
TIMER1l:; 6 cpu-cycli per tellen
Inc r27
NOP
CLR r24
CP r27, r30
Brně TIMER0l
rjmp Ingang1
INGANG1:; Controleren om te zien als input is veranderd, zo niet, blijven uitvoer
in r28, PINB; 5 cycli in deze functie
CP r28, r31
Brně INPUT99
rjmp hi