Ну или может кто придумает, как это организовать на простых логических элементах, без использования микроконтроллера.
000->110
001->011
010->101
011->111
100->110
101->100
110->010
111->111
Код: Выделить всё
SER ZL
OUT DDRD,ZL
CLR ZH
GO:
IN R22,PINB ;PB2 PB1 PB0 входы
ANDI R22,0b00000111
LDI ZL,LOW(DC*2)
ADD ZL,R22
LPM R22,Z
OUT PORTD,R22 ;PD2 PD1 PD0 выходы
RJMP GO
DC:
.DB 0b00000110,0b00000011
.DB 0b00000101,0b00000111
.DB 0b00000110,0b00000100
.DB 0b00000010,0b00000111
Эх программисты...faraddin писал(а):Ну или может кто придумает, как это организовать на простых логических элементах, без использования микроконтроллера.
Код: Выделить всё
//==================
ldi r16, 0b00000111
out DDRD, r16
clr r2
Main:
wdr
in r16, PINB
andi r16, 0b00000111
ldi ZL, LOW (Table*2)
ldi ZH, HIGH (Table*2)
add ZL, r16
adc ZH, r2
lpm r16, Z
// in r17, PORTD
// andi r17, 0b00000111
// or r16, r17
out PORTD, r16
rjmp Main
Table:
.db 0b00000110, 0b00000011
.db 0b00000101, 0b00000111
.db 0b00000110, 0b00000100
.db 0b00000010, 0b00000111
//==================
Код: Выделить всё
.CSEG
.ORG 0x00
RJMP START
.ORG 0x02
DC:
.DB 0b00000110,0b00000011
.DB 0b00000101,0b00000111
.DB 0b00000110,0b00000100
.DB 0b00000010,0b00000111
DC_END:
START:
LDI R19,0b00000111
OUT DDRD,R19
LDI ZL,0b11111000
OUT DDRB,ZL
CLR ZH
LDI ZL,LOW(DC*2)
RAM_TB:
LPM R22,Z
ST Z+,R22
CPI ZL,(DC_END*2)
BRLO RAM_TB ; занесение таблицы в регистровый файл R4...R11
GO:
IN R22,PINB ;PB2 PB1 PB0 входы
LDI ZL,LOW(DC*2)
ADD ZL,R22
LD R22,Z
OUT PORTD,R22 ;PD2 PD1 PD0 выходы
RJMP GO
.EXITКод: Выделить всё
ldi ZL,0xFE
GO:
IN ZH,PINB ;PB2 PB1 PB0 входы
IJMP
.ORG 0x00FE
OUT PORTD,R0 ;PD2 PD1 PD0 выходы
RJMP GO
.ORG 0x01FE
OUT PORTD,R1
RJMP GO
.ORG 0x02FE
OUT PORTD,R2
RJMP GO
.ORG 0x03FE
OUT PORTD,R3
RJMP GO
.ORG 0x04FE
OUT PORTD,R4
RJMP GO
.ORG 0x05FE
OUT PORTD,R5
RJMP GO
.ORG 0x06FE
OUT PORTD,R6
RJMP GO
.ORG 0x07FE
OUT PORTD,R7
RJMP GO Примерно такfaraddin писал(а):как это организовать на простых логических элементах, без использования микроконтроллера
Верно. Поправил табличку и выходakl писал(а):Осталось D2 и D0 в таблице, Q2 и Q0 в таблице