Я пытаюсь создать 4-битный сумматор. Я установил порты ввода и вывода, но не уверен, куда идти.
Мой входной порт «B» - это порт D, мой входной порт «A», а также мой «Cin» - это порт B, а мой выходной порт «S» и мой «Cout» - это порт C. Я возникают проблемы с выяснением того, как изолировать отдельные порты (например, пульсация переноса), и у меня почти нет идей, кроме вложенных операторов if.
Мой код в настоящее время выглядит следующим образом:
#include <avr/io.h>//library used to access the pin addresses
int main () {
DDRD &= ~(0b00111100);//B inputs
DDRB &= ~(0b00011111);//Carry-in + A inputs
DDRC |= 0b00011111;//Carry-out + S outputs
while (1) {
//PORTC |= PIND + PINB;
//PORTC &= ~(PIND + PINB);
if ((PIND & 0b00000000)&&(PINB & 0b00000000)) {
PORTC |= 0b00000000;
PORTC &= ~(0b00000000);
}
else if ((((PIND & 0b00000100)||(PIND & 0b00001000)||(PIND & 0b00010000)||(PIND & 0b00100000))&&(PINB & 0b00000000))||(((PINB & 0b00000100)||(PINB & 0b00001000)||(PINB & 0b00010000)||(PINB & 0b00100000))&&(PIND & 0b00000000)))
PORTC |= 0b00000001;
PORTC &= ~(0b11111110);
}
}
return 0;
}