Отключаемые счетчики электроэнергии на пульте. Все с документами пломбами, гарантией и без посредников!

Светофор на ATtiny13

Светофор на ATtiny13

Решил сделать для своего младшего брата светофор из подручных средств.

Под рукой оказался МК 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 <tiny13.h>

#include <delay.h>

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-файл и схему устройства вы можете скачать здесь (67 кБайт).

Посмотреть видео работы светофора.

Автор схемы: BATCOH (iupfan сабака mail тчк ru)

Обсудить на форуме по микроконтроллерам


Категория: Микроконтроллеры
Метки:

Написать коментарий

*
= 4 + 4

Добавить изображение

Последние статьи