Blame view

tests/chen.txt 1.12 KB
2962f7e6   Geoffrey PREUD'HOMME   Outils pour compi...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
  .equ PINA = 0x00 ; définition des adresses des ports
  .equ DDRA = 0x01
  .equ PORTA = 0x02
  .equ PINB = 0x03
  .equ DDRB = 0x04
  .equ PORTB = 0x05
  
  .equ RAMEND = 0x21FF
  .equ SPH = 0x3E ; initialisation de la pile
  .equ SPL = 0x3D
  
  .org 0x000
      ; Vecteur RESET
      jmp debut
  
  .org 0x0080
  
  debut:
      ldi r16,0xFF ; On configure les ports A et B en sortie
      out DDRA,r16
      out DDRB,r16
      r17 <- 0b00000001 ; 8 places de chenillard
  
  
  boucleA:
  	; On affiche l'état courant
  	out porta,r17
  
  	call tempo
      
      ; On calcule l'état suivant
      lsl r17
      si r17 > 0 saut boucleA
      
      ; Si le bit "volant" est sorti de l'octet, on passe à l'autre partie du programme sur le port B
      out porta,r17 ; On éteint le port A
      ; On configure le registre pour qu'il commence de l'autre coté
      r17 <- 0b10000000
      saut boucleB ; (pas nécessaire)
  
  boucleB:
  	out portb,r17
  
  	call tempo;
      
      lsr r17
      si r17 > 0 saut boucleB
  
      out portb,r17
      r17 <- 0b00000001
      saut boucleA
  
  ; Programme pour faire une pause
  tempo:
  	; On fait une pause
      ldi r24,8
  tempoA:
      subi r22,1
      sbci r23,0
      sbci r24,0
      brcc tempoA
      ret