Commit 930282df41e9894b7fd81ac4a54c8b8bb1a13204
1 parent
aadee417
Afficheur numérique
Par Thomas
Showing
2 changed files
with
71 additions
and
1 deletions
Show diff stats
... | ... | @@ -0,0 +1,53 @@ |
1 | +.equ PINA = 0x00 ; définition des adresses des ports | |
2 | +.equ DDRA = 0x01 | |
3 | +.equ PORTA = 0x02 | |
4 | +.equ PINC = 0x06 | |
5 | +.equ DDRC = 0x07 | |
6 | +.equ PORTC = 0x08 | |
7 | + | |
8 | +.equ RAMEND = 0x21FF | |
9 | +.equ SPH = 0x3E ; initialisation de la pile | |
10 | +.equ SPL = 0x3D | |
11 | + | |
12 | +.def compteur = r20 | |
13 | +.def seg = r21 | |
14 | + | |
15 | +.org 0x000 | |
16 | + ; Vecteur RESET | |
17 | + jmp debut | |
18 | + | |
19 | +.org 0x0080 | |
20 | + | |
21 | +afficheur: | |
22 | + .DB 0x3F, 0x30, 0x6D, 0x79, 0x72, 0x5B, 0x5F, 0x31, 0x7F, 0x7B | |
23 | + ; 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 | |
24 | + | |
25 | + | |
26 | +debut: | |
27 | + DDRA@IO <- 0xFF | |
28 | + DDRC@IO <- 0xFF | |
29 | + | |
30 | +boucle: | |
31 | + | |
32 | + ; On affiche compteur sur le 7 segments | |
33 | + seg <- afficheur@ROM[compteur] | |
34 | + out porta,seg | |
35 | + | |
36 | + ; On change de chiffre | |
37 | + inc compteur | |
38 | + si compteur > 9 alors compteur <- 0 | |
39 | + | |
40 | + ; On attend et on recommence | |
41 | + call tempo | |
42 | + call tempo | |
43 | + call tempo | |
44 | + saut boucle | |
45 | + | |
46 | +tempo: | |
47 | + ldi r24,8 | |
48 | +tempoA: | |
49 | + subi r22,1 | |
50 | + sbci r23,0 | |
51 | + sbci r24,0 | |
52 | + brcc tempoA | |
53 | + ret | ... | ... |
principal.txt
... | ... | @@ -10,6 +10,8 @@ |
10 | 10 | |
11 | 11 | .equ SREG = 0x3F |
12 | 12 | |
13 | +.equ WDTCSR = 0x60 | |
14 | + | |
13 | 15 | .equ EIMSK = 0x3D |
14 | 16 | .equ EICRA = 0x69 |
15 | 17 | .equ EICRB = 0x6A |
... | ... | @@ -26,6 +28,10 @@ |
26 | 28 | |
27 | 29 | .def etat = r19 |
28 | 30 | .def reference = r20 |
31 | +.def d3 = r20 ; Digit 3 (tout à gauche) | |
32 | +.def d2 = r20 ; Digit 2 | |
33 | +.def d1 = r20 ; Digit 1 | |
34 | +.def d0 = r20 ; Digit 0 (tout à droite) | |
29 | 35 | |
30 | 36 | ; Vecteurs d'interruptions |
31 | 37 | |
... | ... | @@ -47,9 +53,17 @@ |
47 | 53 | .org 0x0008 ; INT3 |
48 | 54 | jmp decrementer |
49 | 55 | |
56 | +.org 0x0080 | |
57 | + | |
50 | 58 | ; Tableaux de la mémoire du programme |
51 | 59 | |
52 | -.org 0x0080 | |
60 | +afficheurNombres: | |
61 | + .DB 0x7E, 0x0C, 0x37, 0x9F, 0x4D, 0xDB, 0xFB, 0x0E, 0xFF, 0xDF ; TODO Ce sont pas les bonnes valeurs | |
62 | + ; 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 | |
63 | + | |
64 | +;afficheurLettres: | |
65 | +; .DB ; TODO | |
66 | +; ; A, B, C, D, E, F, G, H ; TODO | |
53 | 67 | |
54 | 68 | ; Programme |
55 | 69 | |
... | ... | @@ -57,6 +71,9 @@ debut: |
57 | 71 | ; Configuration des composants |
58 | 72 | SREG <- 0b10000000 |
59 | 73 | |
74 | + ; Watchdog | |
75 | + WDTCSR <- | |
76 | + | |
60 | 77 | ; Interruptions externes |
61 | 78 | EIMSK <- 0b00001111 |
62 | 79 | EICRA <- 0b11111111 ; TODO Oscillations annulables ? | ... | ... |