Код: Выделить всё
rjmp start
.equ portb = 0x05
.equ ddrb = 0x04
.equ pinb = 0x03
.equ ddrc = 0x07
.equ portc = 0x08
.equ pinc = 0x06
.equ ddrd = 0x0A
.equ portd = 0x0B
.equ pind = 0x09
Table: .db 0xc0,0x00,0xf9,0xa4,0x00,0xb0,0x99,0x92,0x00,0x82,0xf8,0x80,0x00,0x90
start:
ldi r16, 0xFF
out ddrd, r16
ldi r16, 0xc7
out ddrb, r16
ldi r16, 0x30
out ddrc, r16
nullcount:
ldi r21, -1
ldi r20, 0
ldi r17, 0xFE
check:
out portd, r17
in r16, pinc
andi r16,0x02
breq segment1check
inc r20
in r16,pinc
andi r16, 0x04
breq segment1check
inc r20
cpi r20,15
breq nullcount
rol r17
rjmp check
segment1check:
mov r18,r17
ldi r23,2
sub r23,r18
cp r23,r20
brne segment1
rjmp segment1check
segment1:
ldi r31,high(Table*2)
add r21,r20
mov r30,r21
lpm r29,z+
out portd, r29
sbi portb,0
cbi portb,0
ldi r25,255
loop:
ldi r27,100
loop2:
dec r27
cpi r27,0
brne loop2
dec r25
cpi r25,0
brne loop
rjmp nullcount
суть когда в том, что нажимая на макете на кнопочки, на циферблате появляются цифры от 0 до 9.
