роботы робототехника микроконтроллеры


 Страниц (1): [1]   

> Описание: Простенькую прогу для ATMega8
Doctor X Post Id



Рядовой


Сообщений всего: 6
Дата рег-ции: Февр. 2009  



Итак, программа следующая:
кнопка подключена к порту pc5 (ножка 28)
После её нажатия включается таймер на 5 минут, в это время на ножке PD0 (2) импульсы 80 Гц, Тимп.- 150 мкс,
на ножке PD1 (3) 5 Гц, Импульсы- меандр,
на ножке PD2 (4) 5Гц, Импульсы- меандр,
на ножке PD3 (5) - просто высокий уровень.

По истечении пяти минут подаётся высокий уровень на ногу PD7 (13) на 2 секунды, и схема выключается.
Если нажать кнопку во время выполнения программы, схема выключится тоже.
После выключения повторное нажатие на кнопку вновь запускает программу.

Контроллер ATMEGA8, частота кварца 8 МГц.

Заранее благодарю за все умные мысли.
 
 Top
VCOM Супермодератор Post Id



Супермодератор


Сообщений всего: 659
Дата рег-ции: Март 2007  



Вот примерно так:

CODE:

#include <iom8.h>
#include <inavr.h>

#define SETBIT(ADDR,BIT) (ADDR |=(1<<BIT))
#define CLRBIT(ADDR,BIT) (ADDR &=~(1<<BIT))
#define CHECKBIT(ADDR, BIT) (ADDR & (1<<BIT))
#define TOGGLEBIT(ADDR, BIT) (ADDR ^= (1 << BIT))
#define Xtal 8000000

unsigned char ok_gen;
unsigned int count1,count2;

#pragma vector=TIMER1_COMPA_vect
__interrupt void timer1_compa_isr(void)
{
if(ok_gen==1)
{
count1++;
count2++;
if(count1==2000)
{
SETBIT(PORTD,1);
SETBIT(PORTD,2);
}
if(count1==4000)
{
CLRBIT(PORTD,1);
CLRBIT(PORTD,2);
count1=0;
}
if(count2<3)
{
SETBIT(PORTD,0)
}
else
{
CLRBIT(PORTD,0)
}
if(count2==250){count2=0;}
}
}

void main(void)
{
asm("cli");
DDRC=0xDF;
PORTC=0x20;
DDRD=0xFF;
PORTD=0x00;

TCCR1A=0x00;
TCCR1B=0x01;
OCR1A=0x018F;
TIMSK=0x10; //Прерывания по 50 мкс

asm("sei");

for(;;)
{
if(CHECKBIT(PINC,5)
{
if(ok_gen==1)
{
CLRBIT(PORTD,3);
ok_gen=0;
}
else
{
SETBIT(PORTD,3);
ok_gen=1;
}
}
__delay_cycles(0.5*Xtal);
}
}
 
 Top
Doctor X Post Id



Рядовой


Сообщений всего: 6
Дата рег-ции: Февр. 2009  



Огромное спасибо.
 
 Top
Страниц (1): [1]
« Программирование микроконтроллеров »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 





Powered by Exclusive Bulletin Board
ExBB FM 1.0 RC1 Smiles by Fool from Foolstown
  Яндекс.Метрика   Рейтинг@Mail.ru