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 @@ | @@ -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,6 +10,8 @@ | ||
10 | 10 | ||
11 | .equ SREG = 0x3F | 11 | .equ SREG = 0x3F |
12 | 12 | ||
13 | +.equ WDTCSR = 0x60 | ||
14 | + | ||
13 | .equ EIMSK = 0x3D | 15 | .equ EIMSK = 0x3D |
14 | .equ EICRA = 0x69 | 16 | .equ EICRA = 0x69 |
15 | .equ EICRB = 0x6A | 17 | .equ EICRB = 0x6A |
@@ -26,6 +28,10 @@ | @@ -26,6 +28,10 @@ | ||
26 | 28 | ||
27 | .def etat = r19 | 29 | .def etat = r19 |
28 | .def reference = r20 | 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 | ; Vecteurs d'interruptions | 36 | ; Vecteurs d'interruptions |
31 | 37 | ||
@@ -47,9 +53,17 @@ | @@ -47,9 +53,17 @@ | ||
47 | .org 0x0008 ; INT3 | 53 | .org 0x0008 ; INT3 |
48 | jmp decrementer | 54 | jmp decrementer |
49 | 55 | ||
56 | +.org 0x0080 | ||
57 | + | ||
50 | ; Tableaux de la mémoire du programme | 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 | ; Programme | 68 | ; Programme |
55 | 69 | ||
@@ -57,6 +71,9 @@ debut: | @@ -57,6 +71,9 @@ debut: | ||
57 | ; Configuration des composants | 71 | ; Configuration des composants |
58 | SREG <- 0b10000000 | 72 | SREG <- 0b10000000 |
59 | 73 | ||
74 | + ; Watchdog | ||
75 | + WDTCSR <- | ||
76 | + | ||
60 | ; Interruptions externes | 77 | ; Interruptions externes |
61 | EIMSK <- 0b00001111 | 78 | EIMSK <- 0b00001111 |
62 | EICRA <- 0b11111111 ; TODO Oscillations annulables ? | 79 | EICRA <- 0b11111111 ; TODO Oscillations annulables ? |