Вообще я неправильно выразился. Мне надо написать программку для AVR микроконтроллера модель 2313. Всю эту модель надо прогнать в проге AVR Studio. Суть задания не во входных и выходных показаниях, а отображения самого процесса. У меня есть уже два написанных модуля для ввода данных с входа и вывода их на семисегментный индикатор, они работаю независимо друг от друга и надо их связать, а вот как? И цель задания, следующая если всё правильно, то я могу вручную задать значения двоичных сигналов на входе и автоматически получу соответствующие десятичные значения на выходе.
Для выхода:
Код
.include "2313def.inc"
LDI R16, 0b00001000;
DIND:clr r30;
ser r31;
out DDRB, R31;
out PORTB,r30;
LSR R16;
BRCC M1;
LDI R16, 0b00001000;
MOV R0,R4;
M1: SBRC R16,2;
MOV R0,R3;
SBRC R16,1;
MOV R0,R2;
SBRC R16,0;
MOV R0,R1;
INR0: ldi r30,low(tab0);
ldi r31,high(tab0);
lsl r30;
rol r31;
add r30,r0;
clr r0;
adc r31,r0;
lpm;
out PORTD, r16;
out PORTB, r0;
RJMP DIND
TAB0: .DB 0b00111111, 0b00010010, 0b01011011, 0b01001111, 0b01110010, 0b01111001, 0b01111101, 0b00000111, 0b01111111, 0b01101111;
.exit
Для входа:
Код
.include "2313def.inc"
LDI R16, 0xdf;
STS 0x5d, R16;
LDI R16, 0b11110111;
out PORTD, r16;
LDI R16, 0x0F;
out DDRD, R16;
ser r16;
out DDRB, R16;
DIND:clr r16;
rcall k0;
out PORTB, r16;
in r16, PORTD;
LSR R16;
BRCS M1;
LDI R16, 0b11110111;
MOV R0, R4;
M1: SBRC R16, 2;
MOV R0,R3;
SBRC R16, 1;
MOV R0, R2;
SBRC R16, 0;
MOV R0, R1;
RCALL INR0;
out PORTD, r16;
out PORTB, r0;
RJMP DIND
INR0:ldi r30,low(tab0);
ldi r31,high(tab0);
rcall k0;
rol r31;
add r30, r0;
clr r0;
adc r31, r0;
lpm;
RET;
k0: rcall k1;
ret;
TAB0: .DB 0b00111111, 0b00010010, 0b01011011,0b01001111, 0b01110010, 0b01111001, 0b01111101, 0b00000111, 0b01111111, 0b01101111;
k1: ret;
.exit
Отрадно спать, отрадней камнем быть, О, этот век, преступный и постыдный, Не жить, не чувствовать - удел завидный. Прошу, молчи, не смей меня будить!