Семисегмент с общим анодом, порядок подключения не спутан. Прикладываю схемку и код. Надеюсь на вашу помощь. Заранее спасибо!
P.S. Код может быть написан и криво, но я только учусь
Схема в Proteus Код
Спойлер
Код: Выделить всё
.include "m8def.inc"
.def temp = r16 ;задаем символические имена регистрам
.def priznak1 = r17
.def allint = r19
.def vivod=r20
.CSEG ;сегмент кода программы
rjmp RESET ;переход на начало программы
.org $0b00000000 ;адрес начала программы
.org INT0addr ;адрес прерывания по нажатию первой кнопки
rjmp EXT_INT0 ;переход на подпрограмму обработки прерывания
.org INT1addr ;адрес прерывания по нажатию первой кнопки
rjmp EXT_INT1 ;переход на подпрограмму обработки прерывания
.ORG INT_VECTORS_SIZE
RESET:
ldi temp, high(RAMEND) ;инициализация стека
out SPH, temp
ldi temp, low(RAMEND)
out SPL, temp
ldi priznak1,0b00000000
ldi allint,0b11000000
ldi temp, 0b10110000
ldi priznak1, 0b00000011
out PORTB, temp
ldi vivod, 0b11111111
out DDRB, vivod ;конфигурирование порта B как выходного
cbi DDRD, DDD2 ;конфигурирование порта D как входного
sbi PIND,PD2
cbi DDRD, DDD3
sbi PIND,PD3
sei ;общее разрешение прерываний
ldi temp, ((1<<ISC11)|(1<<ISC10)|(1<<ISC01)|(1<<ISC00) )
out MCUCR, temp
out GIMSK, allint ;разрешение прерываний по нажатию клавиш
MAIN: ;главный цикл
rjmp MAIN
EXT_INT0: ;обработка прерываний по нажатию первой кнопки
cpi priznak1, 0b00000011
breq yes2
rjmp no2
yes2:
ldi priznak1,0b00000101 ;пятерка
ldi temp, 0b10010010
rjmp Exit
no2:
cpi priznak1,0b00000101
breq yes3
rjmp no3
yes3:
ldi priznak1, 0b00000111 ;семерка
ldi temp, 0b11111000
rjmp Exit
no3:
cpi priznak1, 0b00000111
breq yes4
rjmp no4
yes4:
ldi priznak1,0b00001001 ;девятка
ldi temp, 0b10010000
rjmp Exit
no4:
cpi priznak1,0b00001001
breq yes5
rjmp no5
yes5:
ldi priznak1,0b00000001 ;еденица
ldi temp,0b11111001
rjmp Exit
no5:
cpi priznak1,0b00000001
breq yes6
rjmp no6
yes6:
ldi priznak1, 0b00000011 ;тройка
ldi temp,0b10110000
rjmp Exit
no6:
cpi priznak1,0b00000011
breq yes2
rjmp no7
no7:
cpi priznak1, 0b00000100 ;шестерка
breq yes8
rjmp no8
yes8:
ldi priznak1, 0b00000110
ldi temp,0b10000010
rjmp Exit
no8:
cpi priznak1, 0b00000110 ;восьмерка
breq yes9
rjmp no9
yes9:
ldi priznak1, 0b00001000
ldi temp,0b10000000
rjmp Exit
no9:
cpi priznak1, 0b00000000 ;двойка
breq yes10
rjmp no10
yes10:
ldi priznak1, 0b00000010
ldi temp,0b10100100
rjmp Exit
no10:
cpi priznak1, 0b00000010 ;четверка
breq yes
rjmp no25
yes:
ldi priznak1, 0b00000100
ldi temp,0b10011001
rjmp Exit
no25:
cpi priznak1, 0b00010000 ;двойка
breq yes25
rjmp no26
yes25:
ldi priznak1, 0b00000010
ldi temp,0b10100100
rjmp Exit
no26:
cpi priznak1, 0b00001000 ;ноль
breq yes26
yes26:
ldi priznak1, 0b00010000
ldi temp,0b11000000
rjmp Exit
EXT_INT1: ;обработка прерываний по нажатию второй кнопки
cpi priznak1, 0b00000000 ;ноль
breq yes19
rjmp no
no:
cpi priznak1, 0b00010000
breq yes11
rjmp no11
yes11:
ldi priznak1, 0b00001001 ;девятка
ldi temp,0b10010000
rjmp Exit
no11:
cpi priznak1, 0b00001001
breq yes12
rjmp no12
yes12:
ldi priznak1, 0b00001000 ;восьмерка
ldi temp,0b10000000
rjmp Exit
no12:
cpi priznak1, 0b00001000
breq yes13
rjmp no13
yes13:
ldi priznak1, 0b00000111 ;семерка
ldi temp,0b11111000
rjmp Exit
no13:
cpi priznak1, 0b00000111
breq yes14
rjmp no14
yes14:
ldi priznak1, 0b00000110 ;шестерка
ldi temp,0b10000010
rjmp Exit
no14:
cpi priznak1, 0b00000110
breq yes15
rjmp no15
yes15:
ldi priznak1, 0b00000101 ;пятерка
ldi temp, 0b10010010
rjmp Exit
no15:
cpi priznak1, 0b00000101
breq yes16
rjmp no16
yes16:
ldi priznak1, 0b00000100 ;четверка
ldi temp, 0b10011001
rjmp Exit
no16:
cpi priznak1, 0b00000100
breq yes17
rjmp no17
yes17:
ldi priznak1, 0b00000011 ;тройка
ldi temp,0b10110000
rjmp Exit
no17:
cpi priznak1, 0b00000011
breq yes18
rjmp no18
yes18:
ldi priznak1, 0b00000010 ;двойка
ldi temp, 0b10100100
rjmp Exit
no18:
cpi priznak1, 0b00000010
breq yes19
rjmp no19
yes19:
ldi priznak1, 0b00000001 ;еденица
ldi temp,0b11111001
rjmp Exit
no19:
cpi priznak1, 0b00000001
breq yes20
yes20:
ldi priznak1, 0b00010000 ;еденица
ldi temp,0b11000000
rjmp Exit
Exit:
out PORTB, temp ;вывод значения на порт B
reti ;возвращение в программу


