Ср янв 18, 2012 18:18:05
Ср янв 18, 2012 18:25:21
где-то я читал, что многоопытные сталевары на глазах у новичка могут сунуть палец в расплавленный металл - и палец остается невредимым. они, правда, усмехаясь в усы, говорят "никогда так не делай, сынок", но тем не менее находятся сынки, остающиеся без пальцев... вы сами по себе можете писать быдлокод, лизать рельс на морозе, совать гвозди в розетку, пить уксус - пожалуйста, вам это, может быть, только на пользу будет! но публично демонстрировать это не следует, как пример явно неположительный и недостойный подражания. даже при наличии оговорок, которых, кстати, вы не делаете все равно (вы постоянно подразумеваете, что это пример для то ли IAR-а, то ли для ***ра)BerZerK-ku писал(а):И заметьте, ни одного примера или совета я не употреблял со словами "так надо делать". Примеры приводятся под конкретную задачу, советы озвучиваются как вариант решения.
Ср янв 18, 2012 18:29:00
BerZerK-ku писал(а)::))) а в чем разница? программа уже не переносима. Если перехожу я, то я знаю что и как делал. Если кто-то пытается изменить мой код, то это уже не мои проблемы. Да и будут проблемы, так как пользуюсь дополнительными прелестями С++.
Ср янв 18, 2012 18:56:40
Ср янв 18, 2012 18:59:09
Ср янв 18, 2012 19:00:29
Ср янв 18, 2012 22:54:09
BerZerK-ku писал(а):Могу ошибиться, но вы упустили главное: автор вроде уже разобрался с данной проблемой
Ср янв 25, 2012 10:49:09
/МИГАНИE СВЕТОДИОДАМИ/
#define F_CPU 8000000UL // 8 000 000 Hz
#include <avr/io.h>
#include <util/delay.h>
int main(void) // начало основной программы
{
DDRD = 0x60; /* выводы порта D: D5, D6 сконфигурировать как выходы */
while (1) { // Бесконечный цикл
PORTD = 0x20; /* установить "1" на D5, остальные в "0" */
_delay_ms(500); // Ждем 0.5 сек.
PORTD = 0x40; /* установить "1" на D6, остальные в "0" */
_delay_ms(500); // Ждем 0.5 сек.
}
}
Ср янв 25, 2012 15:35:00
noll писал(а):
- Код:
/МИГАНИE СВЕТОДИОДАМИ/
#define F_CPU 8000000UL // 8 000 000 Hz
#include <avr/io.h>
#include <util/delay.h>
int main(void) // начало основной программы
{
DDRD = 0x60; /* выводы порта D: D5, D6 сконфигурировать как выходы */
while (1) { // Бесконечный цикл
PORTD = 0x20; /* установить "1" на D5, остальные в "0" */
_delay_ms(500); // Ждем 0.5 сек.
PORTD = 0x40; /* установить "1" на D6, остальные в "0" */
_delay_ms(500); // Ждем 0.5 сек.
}
}
друзья здравия Вам. вот только второй раз я взялся за МК, программку что выше в WinAVR попробовал и прошил ATmega16 всё заработало -светодиоды мигают в противофазе как и задумано. нашёл программе практическое применение -облучение семян инфракрасными световыми импульсами, - подключил к МК ИК светодиод с резистором. частоты облучения могу подбирать задержками, что и делаю, подбираю и контролирую частотомером. у меня заготовлено три такие прошивки, -ну и перепрошиваю каждый раз когда мне нужна одна из заготовленных частот -что конечно же глупо. прошу у вас помощи как мне сделать так: я добавлю к порту два перключателя -замыкать на землю D0,D1, ну и перключать этими перключателями три частоты которые я заранее подберу, -ну для примера скажем три частоты 4020 Гц, 3010 Гц, 2030 Гц. спасибо Вам заранее.
Ср янв 25, 2012 18:57:48
AR_AROV писал(а):вот почитай это, думаю будет оптимально ) сам учусь пока
Вс июн 10, 2012 21:48:36
include <avr/io.h>
#include <avr/delay.h>
char eye(unsigned char *i){
unsigned char c =1;
while(1){
if ( (PINB & (1 << PINB0)) == 0 ){
PORTD = 0x00;
*i++;
break;}
PORTD = c;
c = c << 1;
_delay_ms(200);
if (c==0){c=1;}
}
return 0;
}
char morg (unsigned char *i){
unsigned char c = 128;
while (1){
if ( (PINB & (1 << PINB0)) == 0 ){
PORTD = 0x00;
*i++;
break;}
PORTD = c;
c = c >> 1;
_delay_ms(200);
if (c==0){c=128;}
}
}
char mig (unsigned char *i){
while (1){
if ( (PINB & (1 << PINB0)) == 0 ){
PORTD = 0x00;
*i++;
break;}
PORTD = 0x00;
_delay_ms(200);
PORTD = 0xFF;
_delay_ms(200);
}
}
int main(void){
unsigned char i = 0;
DDRD = 0xFF;
DDRB = 0x00;
PORTB = 0xFF;
while(1){
if ( (PINB & (1 << PINB0)) == 0 ){
i++;}
if(i==1){
eye(i);
}
if(i==2){
morg(i);
}
if(i==3){
mig(i);
}
if(i>3){
i=1; }
}
return 0;
}
Вс июн 10, 2012 22:57:58
while(1){}
Пн июн 11, 2012 09:11:26
Пн июн 11, 2012 13:23:25
Пн июн 11, 2012 15:32:07
Пн июн 11, 2012 15:36:26
Пн июн 11, 2012 16:20:55
UR5FDG писал(а):И еще вопрос, а если у меня матричная клавиатура, то при нажатии любой кнопки генерировать сигнал прерывания?
Пн июн 11, 2012 16:36:40
SubDia писал(а):Некорректный вопрос. Я, например, не знаю, зачем нужна матричная клавиатура, если переключение режимов осуществляется с помощью одной всего кнопки.
Пн июн 11, 2012 16:41:21
КРАМ писал(а):....
Т.е. в прерываниях от таймера, которые должны следовать реже, чем длительность дребезга, но чаще, чем необходимая скорость реакции на нажатие кнопки, происходит защелкивание состояния входа от кнопки. Программное состояние кнопки фиксируется только тогда, когда два защелкнутых состояния подряд одинаковы.
Пн июн 11, 2012 17:19:26