Решил сделать для своего младшего брата светофор из подручных средств.
Под рукой оказался МК ATtiny13, несколько светодиодов и резисторов. У данного МК флэш память программ составляет 1кб, но нам этого хватит с головой, несмотря то, что программа пишется на Си в CodeVisionAVR.
Вот исходный текст программы:
/***************************************************** This program was produced by the CodeWizardAVR V1.25.2 Beta1 Standard Automatic Program Generator © Copyright 1998-2006 Pavel Haiduc, HP InfoTech s.r.l. http://www.hpinfotech.com Project : Version : Date : 27.07.2007 Author : Pavel Company : Home Comments: Chip type : ATtiny13 Clock frequency : 4,800000 MHz Memory model : Tiny External SRAM size : 0 Data Stack size : 16 *****************************************************/ #include #include unsigned char svet=1; unsigned char onf=0; // Pin change interrupt service routine interrupt [PCINT0] void pin_change_isr(void) { // Place your code here if(PINB.4!=0) { if(svet<4)svet++; else svet=1; onf=0; } if(PINB.3!=0) { onf=1; // PORTB.1=1;PORTB.2=1; PORTB.0=1; } delay_ms(200); } // Declare your global variables here void main(void) { // Declare your local variables here // Crystal Oscillator division factor: 1 #pragma optsize- CLKPR=0x80; CLKPR=0x00; #ifdef _OPTIMIZE_SIZE_ #pragma optsize+ #endif // Input/Output Ports initialization // Port B initialization // Func5=In Func4=In Func3=In Func2=Out Func1=Out Func0=Out // State5=T State4=T State3=T State2=0 State1=0 State0=0 PORTB=0x00; DDRB=0x1F; // Timer/Counter 0 initialization // Clock source: System Clock // Clock value: Timer 0 Stopped // Mode: Normal top=FFh // OC0A output: Disconnected // OC0B output: Disconnected TCCR0A=0x00; TCCR0B=0x00; TCNT0=0x00; OCR0A=0x00; OCR0B=0x00; // External Interrupt(s) initialization // INT0: Off // Interrupt on any change on pins PCINT0-5: On GIMSK=0x20; MCUCR=0x00; PCMSK=0x1F; GIFR=0x20; // Timer/Counter 0 Interrupt(s) initialization TIMSK0=0x00; // Analog Comparator initialization // Analog Comparator: Off ACSR=0x80; ADCSRB=0x00; // Global enable interrupts #asm("sei") //PORTB.0=1; //gr //PORTB.1=1; //re //PORTB.2=1; //ye while (1) { if(onf==0) { switch (svet) { case 1:PORTB.0=1; PORTB.1=0; PORTB.2=0; break; case 2:PORTB.2=1; PORTB.0=0; PORTB.1=0; break; case 3:PORTB.1=1; PORTB.0=0; PORTB.2=0; break; case 4:PORTB.1=1;PORTB.2=1; PORTB.0=0; break; } } if(onf==1) { if(svet<4)svet++; else svet=1; switch (svet) { case 1:PORTB.0=1; PORTB.1=0; PORTB.2=0; break; case 2:PORTB.2=1; PORTB.0=0; PORTB.1=0; break; case 3:PORTB.1=1; PORTB.0=0; PORTB.2=0; break; case 4:PORTB.1=1;PORTB.2=1; PORTB.0=0; break; } delay_ms(1000); } }; }
Фотографии готового устройства:
Прошивку HEX, LAY-файл и схему устройства вы можете скачать ниже
BATCOH (iupfan сабака mail тчк ru)
Список радиоэлементов
Обозначение | Тип | Номинал | Количество | Примечание | Магазин | Мой блокнот |
---|---|---|---|---|---|---|
DD1 | МК AVR 8-бит | ATtiny13 | 1 | Поиск в магазине Отрон | ||
C1 | Конденсатор | 0.01 мкФ | 1 | Поиск в магазине Отрон | ||
R1 | Резистор | 10 кОм | 1 | Поиск в магазине Отрон | ||
R2-R4 | Резистор | 1 кОм | 1 | Поиск в магазине Отрон | ||
VD1 | Светодиод | Желтый | 1 | Поиск в магазине Отрон | ||
VD2 | Светодиод | Красный | 1 | Поиск в магазине Отрон | ||
VD3 | Светодиод | Зеленый | 1 | Поиск в магазине Отрон | ||
SW1, SW2 | Кнопка | 2 | Поиск в магазине Отрон | |||
SW3 | Выключатель | 1 | Поиск в магазине Отрон | |||
Скачать список элементов (PDF)
Прикрепленные файлы:
- svetofor2.rar (66 Кб)
Комментарии (1) | Я собрал (0) | Подписаться
Для добавления Вашей сборки необходима регистрация