Перейти к содержанию

Thor88

Members
  • Постов

    3
  • Зарегистрирован

  • Посещение

Информация

  • Город
    Новочеркасск

Электроника

  • Стаж в электронике
    Менее года

Посетители профиля

Блок последних пользователей отключён и не показывается другим пользователям.

Достижения Thor88

Новичок

Новичок (1/14)

  • Неделя на форуме
  • Месяц на форуме
  • Год на форуме

Последние значки

0

Репутация

  1. нужно разработать программу на atmega8 за подрробностями телеграмм @Thor14
  2. Имеются 2 атмеги, 1 мастер, 2 слэйв. На 1 в свою очередь задается таймер, визуализированный на lcd. Как передать инфу о времени на 2 Atmega те slave??!!!? Те самые abcdef?!?!?! Chip type : ATmega8 Program type : Application AVR Core Clock frequency: 4,000000 MHz Memory model : Small External RAM size : 0 Data Stack size : 256 *****************************************************/ #include <mega8.h> #asm .equ __lcd_port=0x12 ;PORTD #endasm #include <lcd.h> #include <delay.h> unsigned char a=0, b=0, c=0, d=0, e=0, f=0, help=0; // ab : cd : ef char hours, minuts, seconds; #define SIGNAL PORTD.3 #define ON 1 #define OFF 0 #define MPLUS PINB.2 #define MMINUS PINB.3 #define SPLUS PINB.4 #define SMINUS PINB.5 #define PUSK PINC.0 #define STOP PINC.2 // ФУНКЦИЯ ОТОБРАЖЕНИЯ ВРЕМЕНИ void time(void) // Подготовка регистров для заполнения данными { a = 0; b = 0; c = 0; d = 0; e = 0; f = 0; //============================================================================= help = hours; // Разложение значения ЧАСов по разрядам ab : __ : __ while (help > 9) { help -= 10; a++; }; b = help; //============================================================================= help = minuts; // Разложение значения МИНут по разрядам __ : cd : __ while (help > 9) { help -= 10; c++; }; d = help; //============================================================================= help = seconds; // Разложение значения СЕКунд по разрядам __ : __ : ef while (help > 9) { help -= 10; e++; }; f = help; //============================================================================= // ОТОБРАЖЕНИЕ НА ДИСПЛЕЕ ВРЕМЕНИ В СООТВЕТСТВИИ с местрположением // ab : cd : ef // Alrm gh : ij lcd_gotoxy(0,0); lcd_putchar(a+0x30); lcd_putchar(b+0x30); lcd_putsf(":"); lcd_putchar(c+0x30); lcd_putchar(d+0x30); lcd_putsf(":"); lcd_putchar(e+0x30); lcd_putchar(f+0x30); lcd_gotoxy(0,1); lcd_putsf("<<<<>>>>"); }; // Timer 1 overflow interrupt service routine interrupt [TIM1_OVF] void timer1_ovf_isr(void) { // Reinitialize Timer 1 value TCNT1H=0xBDC >> 8; TCNT1L=0xBDC & 0xff; // Place your code here seconds--; // Инкремент таймера +1СЕК if (seconds > 59) // условия при которых таймер ведет себя как часы { seconds = 59; minuts--; if (minuts > 59) { minuts = 59; hours--; if (hours > 23) { hours = 23; }; }; }; // В данные часы включена функция включения нагрузки с 8 до 23, //поэтому проверяем условие и делаем вывод time(); // обновление дисплея } // Declare your global variables here void main(void) { // Declare your local variables here PORTB=0b00111111; DDRB=0b00000000; // PORTC=0b11111111; // «WzAVR «Port C initialization DDRC=0b00000000; // PORTD=0b00000000; // «WzAVR «Port D initialization DDRD=0b00001000; TCCR0=0x00; TCNT0=0x00; TCCR1A=0x00; TCCR1B=0x03; TCNT1H=0x0B; TCNT1L=0xDC; ASSR=0x00; TCCR2=0x00; TCNT2=0x00; OCR2=0x00; MCUCR=0x00; TIMSK=0x04; ACSR=0x80; SFIOR=0x00; // LCD module initialization lcd_init(16); // НАЧАЛЬНАЯ ИНИЦИАЛИЗАЦИЯ timing: while (PUSK == 1) { if (MPLUS == 0) { minuts++; if (minuts > 59) { minuts = 0; hours++; if (hours > 23) { hours = 0; }; }; } if (MMINUS == 0) { minuts--; if (minuts > 59) { minuts = 59; hours--; if (hours > 23) { hours = 23; }; }; }; if (SPLUS == 0) { seconds++; if (seconds > 59) seconds = 0; }; if (SMINUS == 0) { seconds--; if (seconds > 59) seconds = 59; }; delay_ms(100); time(); }; // Global enable interrupts #asm("sei") while (1) { // проводим сравнение для включения нагрузки if (STOP == 0) { #asm("cli") SIGNAL = OFF; goto timing; }; if (hours == 0) { if (minuts == 0) { if (seconds == 0) { #asm("cli") SIGNAL = ON; } } } }; }
  3. если есть какие-либо вопросы, пишите
×
×
  • Создать...