ssled.asm


1
.include "m328pdef.inc"
2
3
  ldi r16, 0b01111111 ; PB0-6 as outputs (7 segment display)
4
  out DDRB, r16       ;
5
6
loop:
7
8
  ldi r16, PINC       ;  Eing„nge einelesen   
9
10
  cpi r16, 0b00000000 ;  Eing„nge = 0?
11
  brne number1        ;  wenn nein: weiter mit Prfung auf Nummer 2
12
  ldi r17, 0b01111110 ;  sonst: 0 -> Segmente a, b, c, d, e, f aktivieren
13
  jmp ausgabe         ;  und ausgeben
14
15
number1:
16
  cpi r16, 0b00000001 ;
17
  brne number2        ;
18
  ldi r17, 0b00110000 ;  1 -> b, c
19
  jmp ausgabe         ;
20
21
number2:
22
  cpi r16, 0b00000010 ;
23
  brne number3        ;
24
  ldi r17, 0b01101101 ;  2 -> a, b, d, e, g
25
  jmp ausgabe         ;
26
27
number3:
28
  :
29
  :
30
31
number9:
32
  cpi r16, 0b00001001 ;  if(PINC == 9)
33
  breq nonumber       ;
34
  ldi r17, 0b01111011 ;  9 -> a, b, c, d, f, g
35
  jmp ausgabe         ;
36
37
nonumber:
38
  ldi r17, 0          ; alles aus
39
40
ausgabe:
41
  out PORTB, r17      ; Segmente updaten
42
43
  rjmp loop           ;