Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <mega32.h> // Подключение заголовочных файлов
- #include <alcd.h> // в которых содержатся
- #include <stdio.h> // прототипы функций
- #include <delay.h>
- #include <sdcard.h>
- #define F_CPU 2000000 // Рабочая частота микроконтроллерa
- #define BAUD 9600L // Скорость обмена данными
- #define UBRRL_value (F_CPU/(BAUD*16))-1 // Согласно заданной скорости
- // подсчитываем значение для регистра UBRR
- void init_USART() { // Функция инициализации USART
- UBRRL = UBRRL_value; // Младшие 8 бит UBRRL_value
- UBRRH = UBRRL_value >> 8; // Старшие 8 бит UBRRL_value
- UCSRB = (1<<TXEN); // Бит разрешения передачи
- UCSRC = (1<< UCSZ0)|(1<< UCSZ1);
- } // Устанавливаем формат 8 бит данных
- void send_UART(char value) {
- while(!( UCSRA & (1 << UDRE))); // Ожидаем когда очистится буфер передачи
- UDR = value;
- } // Помещаем данные в буфер, начинаем передачу
- interrupt [TIM1_COMPA] void timer1_compa_isr(void)
- {
- disk_timerproc();
- } // Вызов функции синхронизации
- void main(void) // Основная функция программы
- {
- unsigned char Buff[512];
- unsigned char Buff3[512];
- int i;
- // Инициализация портов микроконтроллера
- // Port A
- DDRA=(0<<DDA7) | (0<<DDA6) | (0<<DDA5) | (0<<DDA4) | (0<<DDA3) | (0<<DDA2) | (0<<DDA1) | (0<<DDA0);
- PORTA=(0<<PORTA7) | (0<<PORTA6) | (0<<PORTA5) | (0<<PORTA4) | (0<<PORTA3) | (0<<PORTA2) | (0<<PORTA1) | (0<<PORTA0);
- // Port B
- DDRB=(1<<DDB7) | (0<<DDB6) | (1<<DDB5) | (1<<DDB4) | (0<<DDB3) | (0<<DDB2) | (0<<DDB1) | (0<<DDB0);
- PORTB=(0<<PORTB7) | (0<<PORTB6) | (0<<PORTB5) | (0<<PORTB4) | (0<<PORTB3) | (0<<PORTB2) | (0<<PORTB1) | (0<<PORTB0);
- // Port C
- DDRC=(1<<DDC7) | (1<<DDC6) | (1<<DDC5) | (1<<DDC4) | (1<<DDC3) | (1<<DDC2) | (1<<DDC1) | (1<<DDC0);
- PORTC=(0<<PORTC7) | (0<<PORTC6) | (0<<PORTC5) | (0<<PORTC4) | (0<<PORTC3) | (0<<PORTC2) | (0<<PORTC1) | (0<<PORTC0);
- // Port D
- DDRD=(1<<DDD7) | (1<<DDD6) | (1<<DDD5) | (1<<DDD4) | (1<<DDD3) | (1<<DDD2) | (1<<DDD1) | (1<<DDD0);
- PORTD=(0<<PORTD7) | (0<<PORTD6) | (0<<PORTD5) | (0<<PORTD4) | (0<<PORTD3) | (0<<PORTD2) | (0<<PORTD1) | (0<<PORTD0);
- // Инициализация таймера
- TCCR1A=0x00;
- TCCR1B=0x0D;
- TCNT1H=0x00;
- TCNT1L=0x00;
- OCR1AH=0x00;
- OCR1AL=0x4E;
- TIMSK=0x10;
- lcd_init(20); // Инициализация дисплея
- #asm("sei")
- // Проверка подключения карты памяти
- if((disk_initialize(0))==0) // Если карта подключена
- {
- lcd_puts("Card connected!"); // Вывод на экран дисплея сообщения ОК
- }
- else
- {
- lcd_puts("No card found! Please restart"); // Вывод сообщения об отсутствии подключения карты
- }
- init_USART(); // Инициализация USART
- disk_read (0, Buff, 0, 1); // Чтение с карты памяти текстового блока
- // и его запись в переменную Buff
- delay_ms(500); // Пауза длительностью 500 мс
- lcd_gotoxy(0,1); // Установка курсора в первую позицию второй строки дисплея
- for (i=0;i<33;i++)
- {
- send_UART(Buff[i]); // Вывод считанной с карты памяти информации на экран терминала
- lcd_putchar(Buff[i]); // Вывод считанной с карты памяти информации на экран дисплея
- }
- delay_ms(500);
- disk_read (0, Buff3, 0, 1); // Чтение информации с карты памяти
- // и её запись в переменную Buff3
- } // Вывод считанной с карты памяти информации
- // на экран терминала
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement