
Лабораторные работы готовые / Лабораторная работа 3 Статическая индикация. SPI
.docxПрограмма:
#define F_CPU 8000000UL
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
void main()
{
DDRD=0x00;
PORTD=0xFF;
DDRB=0xFF;
DDRC=0xFF;
unsigned char keystr = 0b11111011;
DDRB |= ((1<<PORTB3)|(1<<PORTB4)|(1<<PORTB5)|(1<<PORTB7));
PORTB &= ~((0<<PORTB3)|(1<<PORTB4)|(1<<PORTB5)|(1<<PORTB7));
SPCR = ((1<<SPE)|(1<<MSTR)); //Включение шины SPI ,назначение устройства ведущим
while (1)
{
PORTC = keystr;
if( !(PIND & (1<<PIND2)) )// Буква при нажатии на 3
{
SPDR = 0b00010001;
while (!(SPSR&(1<<SPIF)));
PORTB |= (1<<PORTB4);
PORTB &= ~(1<<PORTB4);
_delay_ms(5);
PORTB |= (1<<PORTB4);
PORTB &= ~(1<<PORTB3);
SPDR = 0b11110011;
while (!(SPSR&(1<<SPIF)));
PORTB |= (1<<PORTB3);
PORTB &= ~(1<<PORTB3);
_delay_ms(5);
}
}
}
Вывод первых букв имени: