Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ATmega AVR
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.85/91: Рейтинг темы: голосов - 91, средняя оценка - 4.85
0 / 0 / 0
Регистрация: 30.11.2011
Сообщений: 161
1

Светодиоды не мигают atmega16

01.08.2012, 00:02. Показов 17737. Ответов 56
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, на моей отладочной плате не мигают нужные светодиоды, они просто горят. Atmega16A-pu 8000MHZ
Код:
Код
.def temp=r16         ; директива .def назначает регистру r16 имя temp
.def temp1=r17        ; директива .def назначает регистру r17 имя temp1
.def temp2=r18        ; директива .def назначает регистру r18 имя temp2
.def temp3=r19        ; директива .def назначает регистру r19 имя temp3
;====================================================
; Начало программы
.cseg                 ; директива .cseg определяет начало сегмента, где будет расположен
; основной код программы. В AVR Studyo 5 это директива не
; обязательна
.org 0                ; начало первой строки программы
rjmp Start            ; относительный переход к метке Start (в PIC соответствует
; команде goto)
; ====================================================
Start:
ser temp              ; устанавливает все биты регистра temp  в 1
out DDRB,temp         ; переводит все биты
out DDRD,temp         ; порта B  и D на вывод
clr temp              ; обнуляет регистр temp (устанавливает все биты регистра temp  в 0)
out PortB,temp        ; отключает подтягивающие резисторы
out PortD,temp        ; портов B и D
Cicle:
ldi temp,0b11001100   ; включает светодиоды
out PortB, temp       ; порта B
rcall Pouse           ; вызов подпрограммы задержки
clr temp              ; выключает светодиоды
out PortB, temp       ; порта B
rcall Pouse           ; вызов подпрограммы задержки
rjmp Cicle            ; Возвращаемся к метке Cicle, зацикливаемся
; ====================================================
; Подпрограмма задержки
; ====================================================
Pouse:
ldi Temp1,0          ; записать в регистр temp1 знчение 0
ldi Temp2,0          ; записать в регистр temp2 знчение 0
ldi Temp3,2          ; записать в регистр temp3 знчение 2

Pouse1:
dec Temp1            ; вычесть из значения  регистра temp1 единицу
brne Pouse1          ; если значение temp1 не равно 0 перейти к метке Pouse1

dec Temp2            ; вычесть из значения  регистра temp2 единицу
brne Pouse1          ; если значение temp2 не равно 0 перейти к метке Pouse1

dec Temp3            ; вычесть из значения  регистра temp3 единицу
brne Pouse1          ; если значение temp1 не равно 0 перейти к метке Pouse1
ret                  ; выйти из подпрограммы
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.08.2012, 00:02
Ответы с готовыми решениями:

Считывание числа и вывод на светодиоды (ATMega16, ASM)
Приветствую. Нужно считать 4-х разрядное число с выводов РА5-РА2, разделить на 4 и прибавить 5 (в...

ATMega16 (AVR Studio, ASM) - Вывести результат на светодиоды по схеме
Ребят, помогите, пожалуйста, с решением задачи, не получается вывести результат на светодиоды по...

Неправильно мигают светодиоды на BluePill с CMSIS - почему?
Привет, народ. Сделал я простую прошивку для BluePill STM32F103C8T6 с использованием CMSIS. ...

Холодильник Samsung RL33SBSW, мигают светодиоды
Холодильник ноу-фрост Samsung RL33SBSW проверили всё (тены оттайки демпфер, предохранители,...

Маршрутизатор compex ps2216, мигают оранжевые светодиоды
Доброе время суток!на маршрутизаторе compex ps2216 мигают оранжевые светодиоды,сеть к нему...

56
0 / 0 / 0
Регистрация: 21.10.2011
Сообщений: 1,860
01.08.2012, 01:01 21
Author24 — интернет-сервис помощи студентам
видел.
(пошел гуглить, хто такой этот человек-пароход...)

UPD: "Программирование на ассемблере для PIC микроконтроллеров" оно? н-ддааа ужжж...
0
1 / 1 / 0
Регистрация: 22.09.2010
Сообщений: 393
01.08.2012, 01:02 22
Цитата Сообщение от tid_fom
видел.
(пошел гуглить, хто такой этот человек-пароход...)
Только не читайте на ночь его "труды" , умоляю ...
0
0 / 0 / 0
Регистрация: 21.10.2011
Сообщений: 1,860
01.08.2012, 01:04 23
автор типа редькина, что-ли?
0
1 / 1 / 0
Регистрация: 22.09.2010
Сообщений: 393
01.08.2012, 01:05 24
Цитата Сообщение от tid_fom
автор типа редькина, что-ли?
редькин гений по сравнению с этим чудом ...
http://ikarab.narod.ru/Kea_20.html

Только , я предупреждал ...
0
0 / 0 / 0
Регистрация: 21.10.2011
Сообщений: 1,860
01.08.2012, 01:10 25
ясно. качать обязательно. в папку "чистА пАржать"...
ну да, ТС отжег...
0
0 / 0 / 0
Регистрация: 30.11.2011
Сообщений: 161
01.08.2012, 01:13 26
всем спасибо, желание отпало.
0
1 / 1 / 0
Регистрация: 22.09.2010
Сообщений: 393
01.08.2012, 01:16 27
Цитата Сообщение от bortyk226
всем спасибо, желание отпало.
Значит и не велико было .
Собственно вас не о...рают , а пытаются на путь истинный наставить .
0
0 / 0 / 0
Регистрация: 30.11.2011
Сообщений: 161
01.08.2012, 01:54 28
кстати вариант с 120 не пашет
0
0 / 0 / 0
Регистрация: 14.10.2011
Сообщений: 806
01.08.2012, 19:04 29
Затюкали пацана, а задержку в примере так никто правильно и не подсчитал. В примере ТС она равна примерно 394248 такта, ну +/- ( тело цикла - декремент плюс условный переход, если ложно - !3!такта), умножаем на длительность такта при 8МГц (я надеюсь это не 8ГГц как в первом посте :) ) и получаем чуть больше 49мС. Если сделать «Temp3» как советовал dosykus , то получится самое то – 3Сек. Другое дело как шла симуляция в протеусе без инициализации стека? А главное как компилятор проглотил мнемонику портов без .include "m16def.yms" !!??
0
0 / 0 / 0
Регистрация: 30.11.2011
Сообщений: 161
04.08.2012, 05:34 30
Привет всем еще раз, помогите с xor
Вот выражение: if (условие1) ?? (условие2)
что должно стоять на месте знака вопроса чтобы было:
усл1усл2
0 0 = 0
1 0 = 1
0 1 = 1
0 0 = 0
0
0 / 0 / 0
Регистрация: 12.04.2010
Сообщений: 3,260
04.08.2012, 15:26 31
Это не xor, а or ;) т.е. обычное "ИЛИ". А там в таблице нет опечатки? Может быть там должно быть 1 1 = 0??? Если так, тогда xor
Но в любом случае, встречный вопрос: А в чем помочь?
0
0 / 0 / 0
Регистрация: 14.10.2011
Сообщений: 806
04.08.2012, 15:29 32
Цитата Сообщение от bortyk226
Привет всем еще раз, помогите с xor
Вот выражение: if (условие1) ?? (условие2)
что должно стоять на месте знака вопроса чтобы было:
усл1усл2
0 0 = 0
1 0 = 1
0 1 = 1
0 0 = 0
1 1 = ?
0
0 / 0 / 0
Регистрация: 30.11.2011
Сообщений: 161
04.08.2012, 16:09 33
11 = 0
все я разобрался, надо так
if (условие1) != (условие2)
0
0 / 0 / 0
Регистрация: 30.11.2011
Сообщений: 161
04.08.2012, 18:04 34
блин, расшифруйте пожалуйста а то мозги вскипают
while((PIND&(1<<PIND0)))
и еще вот написал код:
Код
#define F_CPU 8000000UL
#include  <avr/io.h>
#include  <util/delay.h>
void Pouse(int ms)
{
while(ms--){_delay_ms(0.999);};
}
int main (void)
{
DDRA = 0xff;
DDRB=0;
PORTB=0x7F;
int a = 200;
int b = 20;
int c = 0;
int d = 0;
while (1)
{
if (PINB != 0)
{
d = 1;
}
if (d == 1)
{
while (a != 0)
{
PORTA = 0xff;
Pouse(a);
PORTA = 0x00;
Pouse(a);
a = a-10;
}
PORTA = 0x01;
while(1)
{
while (c == 0)
{
if (PORTA == 0x80)
{
c = 1;
}
else
{
Pouse(b);
PORTA = (PORTA << 1);
}
}
while (c == 1)
{
if (PORTA == 0x01)
{
c = 0;
}
else
{
Pouse(b);
PORTA = (PORTA >> 1);
}
}
}
}
}
return  0;
}
но кога ресэчусь, и если подношу палец к мк примерно на 1 см, то светодиоды сами начинают движение, что за бред? телекинес!?
0
0 / 0 / 0
Регистрация: 21.10.2011
Сообщений: 1,860
04.08.2012, 18:40 35
Цитата Сообщение от bortyk226
блин, расшифруйте пожалуйста а то мозги вскипают
while((PIND&(1<<PIND0)))
пока PD0==0b1, т.е. PIND = ххххххх1
совершенно стандартное выделение бита.
0
0 / 0 / 0
Регистрация: 30.11.2011
Сообщений: 161
04.08.2012, 18:43 36
можно же так написать
while (PIND == 0x01)
это же проще и короче, почему так не пишут?
0
MCSD: APP BUILDER
8794 / 1073 / 104
Регистрация: 17.06.2006
Сообщений: 12,602
04.08.2012, 18:44 37
так надо
while(pind & 1)

исходная конструкция и правда непонятная и бессмысленная, по-моему
0
MCSD: APP BUILDER
8794 / 1073 / 104
Регистрация: 17.06.2006
Сообщений: 12,602
04.08.2012, 18:45 38
Цитата Сообщение от bortyk226
можно же так написать
while (PIND == 0x01)
это же проще и короче, почему так не пишут?
так проверяются все пины сразу, а надо только один
0
0 / 0 / 0
Регистрация: 30.11.2011
Сообщений: 161
04.08.2012, 18:46 39
да, так же проще)
ну чтонибудь подскажите по коду:
Код
#define F_CPU 8000000UL
#include  <avr/io.h>
#include  <util/delay.h>
void Pouse(int ms)
{
while(ms--){_delay_ms(0.999);};
}
int main (void)
{
DDRA = 0xff;
DDRB=0;
PORTB=0x7F;
int a = 200;
int b = 20;
int c = 0;
int d = 0;
while (1)
{
if (PINB != 0)
{
d = 1;
}
if (d == 1)
{
while (a != 0)
{
PORTA = 0xff;
Pouse(a);
PORTA = 0x00;
Pouse(a);
a = a-10;
}
PORTA = 0x01;
while(1)
{
while (c == 0)
{
if (PORTA == 0x80)
{
c = 1;
}
else
{
Pouse(b);
PORTA = (PORTA << 1);
}
}
while (c == 1)
{
if (PORTA == 0x01)
{
c = 0;
}
else
{
Pouse(b);
PORTA = (PORTA >> 1);
}
}
}
}
}
return  0;
}
Подношу палец к мк светики начинают работать, почему так и как это исправить?
а проще никак нельзя проверить один пин?(я видел что где-то можно так while (PB0 == 1) но в avr studyo 6 не катит)
0
MCSD: APP BUILDER
8794 / 1073 / 104
Регистрация: 17.06.2006
Сообщений: 12,602
04.08.2012, 18:48 40
вам что-то надо делать с пальцами
0
04.08.2012, 18:48
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.08.2012, 18:48
Помогаю со студенческими работами здесь

Сплит-система Vestel, Мигают все светодиоды
Будьте добры, кто знает подскажите, у сплита Vestel мигают все лампочки при включении в розетку, на...

Konica Minolta PagePro 1100l - мигают светодиоды
проблема в названии темы. мигают оба светодиода, зеленый и красный одновременно. При включении...

Холодильник Whirlpool ARC 4020 850140210000, мигают светодиоды
Мигают три из трех зеленых светодиодов. Поменял все кондеры(один из них сильно вышел из...

Hp Compaq Presario CQ61-340EN мигают светодиоды 2 раза
Привет Такая проблема, разбирал ноутбук, чтоб почистить. Собрал: мигают capc-lock диоды два...

Ремонт ПММ Ariston LL 40 мигают 4 и 6 светодиоды, недобор воды
Машина Ariston LL40 недобирала воду - уровень ниже ТЭНа, цикл мойки продолжался. Позже стала...

стиральная машина Siemens WS 12X160 OE, Мигают светодиоды управления отжимом
При включении в сеть мигают светодиоды управления отжима 1200-800- без отжима ,сверху через одну...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru