Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
На главную   | Карта сайта | Пишите нам | В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:jobsmp@pochta.ru

Телесистемы | Электроника | Конференция «Микроконтроллеры и их применение»

програмка

Отправлено BATCOH 02 февраля 2007 г. 20:07
В ответ на: попробуй для начала просто "подергать лапкой"...любой.. ато проблем нет с программой ... шажочками.. маленькими... отправлено <font color=gray>ADSL</font> 02 февраля 2007 г. 19:59

#include
#include

// Declare your global variables here
unsigned char SW3_state; //status SWITCH button
unsigned int time_val =0; //for cycle
unsigned char ctr;// 1/10 of sec counter
unsigned char s_ctr; // sec counter

void main(void)
{
// Declare your local variables here

// Input/Output Ports initialization
// Port B initialization
// !Func7=Out !Func6=In Func5=In Func4=In Func3=Out !Func2=Out !Func1=Out Func0=In
// State7=1 State6=1 State5=1 State4=1 State3=1 State2=1 State1=1 State0=1
PORTB=0x8E;
DDRB=0xFF;

// Port C initialization
// Func6=In Func5=Out Func4=In Func3=In !Func2=out !Func1=out !Func0=out
// State6=P State5=1 State4=P State3=1 State2=1 State1=1 State0=1
PORTC=0x58;
DDRC=0x2F;

// Port D initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
// State7=1 State6=1 State5=1 State4=1 State3=1 State2=1 State1=1 State0=1
PORTD=0xFF;
DDRD=0xFF;

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
TCCR0=0x00;
TCNT0=0x00;

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer 1 Stopped
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer 1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;

// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer 2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;

// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
MCUCR=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;

// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;

// Program starts here
// ==============================================
mark: //metka
//*****************************
// LEVIY INDIKATOR
//****************************
PORTB.1 = 1; //verhniy
PORTB.2 = 1; //p.verh
PORTB.6 = 1; //p.niz
PORTB.7 = 1; //niz
PORTC.0 = 1; //l.niz
PORTC.1 = 1; //l.verh
PORTC.2 = 0; //sered
//****************************
// PRAVIY INDIKATOR
//****************************
PORTD.7 = 1; //verhniy
PORTD.6 = 1; //p.verh
PORTD.5 = 1; //p.niz
PORTD.4 = 1; //niz
PORTD.3 = 1; //l.niz
PORTD.2 = 1; //l.verh
PORTD.1 = 0; //sered
//****************************

SW3_state = PINC.4; //recieve switch button status
ctr = 0;

while (PINC.4 == SW3_state) {
delay_ms(20); // pause 20ms

ctr++; /* count 1 interval with 20ms */

// every 500ms...
if (ctr == 25){
/* if passed 25 times for 20 ms */
ctr = 0;
PORTD.0 ^= 1; // switch LED
}; //
}
PORTD.0 = 1; // LED=OFF

time_val=5;
//s_ctr=50; ///TESTING
ctr = 0;
while (time_val > 1)
{
delay_ms(1000); //pause = 1 sec
ctr++;
if(ctr==1)PORTD = 0x61;//01100001
if(ctr==2)PORTD = 0xDB;//11011011
if(ctr==3)PORTD = 0xF3;//11110011
if(ctr==4)PORTD = 0x67;//01100111
if(ctr==5)PORTD = 0xB7;//10110111
if(ctr==6)PORTD = 0xBF;//10111111
if(ctr==7)PORTD = 0xE1;//11100001
if(ctr==8)PORTD = 0xFF;//11111111
if(ctr==9)PORTD = 0xF7;//11110111
if((ctr==10)&(s_ctr==0))
{ ctr = 0;
s_ctr=10;
{
PORTB.1 = 0; //verhniy
PORTB.2 = 1; //p.verh
PORTB.6 = 1; //p.niz
PORTB.7 = 0; //niz
PORTC.0 = 0; //l.niz
PORTC.1 = 0; //l.verh
PORTC.2 = 0; //sered
}
PORTD = 0xFC;//11111100
}
if((ctr==10)&(s_ctr==10))
{ ctr = 0;
s_ctr=20;
{
PORTB.1 = 1; //verhniy
PORTB.2 = 1; //p.verh
PORTB.6 = 0; //p.niz
PORTB.7 = 1; //niz
PORTC.0 = 1; //l.niz
PORTC.1 = 0; //l.verh
PORTC.2 = 1; //sered
}
PORTD = 0xFC;//11111100
}
if((ctr==10)&(s_ctr==20))
{ ctr = 0;
s_ctr=30;
{
PORTB.1 = 1; //verhniy
PORTB.2 = 1; //p.verh
PORTB.6 = 1; //p.niz
PORTB.7 = 1; //niz
PORTC.0 = 0; //l.niz
PORTC.1 = 0; //l.verh
PORTC.2 = 1; //sered
}
PORTD = 0xFC;//11111100
}
if((ctr==10)&(s_ctr==30))
{ ctr = 0;
s_ctr=40;
{
PORTB.1 = 0; //verhniy
PORTB.2 = 1; //p.verh
PORTB.6 = 1; //p.niz
PORTB.7 = 0; //niz
PORTC.0 = 0; //l.niz
PORTC.1 = 1; //l.verh
PORTC.2 = 1; //sered
}
PORTD = 0xFC;//11111100
}
if((ctr==10)&(s_ctr==40))
{ ctr = 0;
s_ctr=50;
{
PORTB.1 = 1; //verhniy
PORTB.2 = 0; //p.verh
PORTB.6 = 1; //p.niz
PORTB.7 = 1; //niz
PORTC.0 = 0; //l.niz
PORTC.1 = 1; //l.verh
PORTC.2 = 1; //sered
}
PORTD = 0xFC;//11111100
}
if((ctr==10)&(s_ctr==50))
{ ctr = 0;
s_ctr=0;
{
PORTB.1 = 1; //verhniy
PORTB.2 = 1; //p.verh
PORTB.6 = 1; //p.niz
PORTB.7 = 1; //niz
PORTC.0 = 1; //l.niz
PORTC.1 = 1; //l.verh
PORTC.2 = 0; //sered
}
PORTD = 0xFC;//11111100
time_val =0; //exit from "while()"
//BUZZER sound cycle
delay_ms(400);
PORTC.5 = 1;
delay_ms(600);
PORTC.5 = 0;
ctr=0;
//PORTC.3 = 1;
goto mark; //countdown stop, back to beginning of the programm
}


}
}


Составить ответ | Вернуться на конференцию

Ответы


Отправка ответа
Имя*: 
Пароль: 
E-mail: 
Тема*:

Сообщение:

Ссылка на URL: 
URL изображения: 

если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
введите число 89:

Перейти к списку ответов | Конференция | Раздел "Электроника" | Главная страница | Карта сайта

Rambler's Top100 Рейтинг@Mail.ru
 
Web telesys.ru