Технический форум по робототехнике.
TamTam » 25 фев 2007, 12:37
Да именно так. :)
Myp » 25 фев 2007, 13:08
вот ассемблерный листинг
прога моргает светиком
- Код: Выделить всё • Развернуть
171 while (1)
_0xA:
; 172 {
; 173 // Place your code here
; 174
; 175 delay_ms(100);
LDI R30,LOW(100)
LDI R31,HIGH(100)
RCALL SUBOPT_0x0
; 176 PORTB.4 = 0;
CBI 0x18,4
; 177 delay_ms(100);
LDI R30,LOW(100)
LDI R31,HIGH(100)
RCALL SUBOPT_0x0
; 178 PORTB.4 = 1;
SBI 0x18,4
; 179
; 180
; 181 };
RJMP _0xA
; 182 }
_0xD:
RJMP _0xD
чёта файл не аттачицца воттекст короче
действительно компилятор устанавливает и сбрасывает биты
PORTB.4 = 0;
CBI 0x18,4
PORTB.4 = 1;
SBI 0x18,4
непонимаю...
вот лежит у меня МК и дрыгает лапками=)
одной через PORTB и другой лапкой через PINB
- Код: Выделить всё • Развернуть
delay_ms(500);
PORTB.4 = 0;
PINB.0 = 0;
delay_ms(500);
PORTB.4 = 1;
PINB.0 = 1;
вот этот код даёт интереснеййший эффект=)
11
01
10
00
тоесть светик на ноге 4 (который PORTB)успевает 4 раза моргнуть а светик на ноге 0 (который PINB)моргает 2 раза
асм:
- Код: Выделить всё • Развернуть
while (1)
_0xA:
; 172 {
; 173 // Place your code here
; 174
; 175 delay_ms(500);
LDI R30,LOW(500)
LDI R31,HIGH(500)
RCALL SUBOPT_0x0
; 176 PORTB.4 = 0;
CBI 0x18,4
; 177 PINB.0 = 0;
CBI 0x16,0
; 178 delay_ms(500);
LDI R30,LOW(500)
LDI R31,HIGH(500)
RCALL SUBOPT_0x0
; 179 PORTB.4 = 1;
SBI 0x18,4
; 180 PINB.0 = 1;
SBI 0x16,0
; 181
; 182
; 183 };
RJMP _0xA
; 184 }
всё крайне прилично=)
avr123.nm.ru » 25 фев 2007, 14:33
TamTam писал(а):Да именно так. :)
что-то не бегуть ! только 2 светодиода перемигиваются и усё.
- Вложения
-
led_no_run.rar
- (5.18 КиБ) Скачиваний: 36
avr123.nm.ru » 25 фев 2007, 14:38
Myp писал(а):вот этот код даёт интереснеййший эффект=)
Слава богу в симуляторе все в норме.
- Вложения
-
all_good.rar
- (5.14 КиБ) Скачиваний: 44
TamTam » 25 фев 2007, 14:41
товарищи побойтесь бога ну самито хоть что нибудь ручками поменяйти, там для двух бит выполняется полная таблица истености. поменяв пару символов можно на весь порт сделать..
avr123.nm.ru » 25 фев 2007, 15:08
TamTam писал(а):товарищи побойтесь бога ну самито хоть что нибудь ручками поменяйти, там для двух бит выполняется полная таблица истености. поменяв пару символов можно на весь порт сделать..
дак чтож ты написал
TamTam писал(а):Да именно так. :)
???
avr123.nm.ru » 25 фев 2007, 15:09
Вот не мудурствуя лукаво сделал по-быстрому:
Бегущие огонек - решение "В ЛОБ"
Горят 7 светодиодов а бежит 1 не горящий.
Светодиоды подключены между выводами PORTA
и питанием МК через резисторы. симуляция в VMLAB (файл z2_vm.prj)
Виртуальный осциллограф показывает сигналы - ЛЯПОТА ...
Компилятор CodeVisionAVR МК ATmega16
- Вложения
-
led_run.rar
- (5.59 КиБ) Скачиваний: 50
D-M » 25 фев 2007, 15:18
а я по ламерски сделал зато более понятно
- Код: Выделить всё • Развернуть
#define LED PORTD
while(1){
LED = 0b11111110;
delay
LED = 0b11111101;
delay
LED = 0b11111011;
delay
LED = 0b11110111;
delay
LED = 0b11101111;
delay
LED = 0b11011111;
delay
LED = 0b10111111;
delay
LED = 0b01111111;
delay
}
avr123.nm.ru » 25 фев 2007, 15:53
еще делэй задефайнить бы.
D-M » 25 фев 2007, 16:03
ну заместо делэя надо написать нужную нам задержку
и поместить это в главную функцию и инициализировать порты

TamTam » 25 фев 2007, 16:22
avr123.nm.ru писал(а):TamTam писал(а):товарищи побойтесь бога ну самито хоть что нибудь ручками поменяйти, там для двух бит выполняется полная таблица истености. поменяв пару символов можно на весь порт сделать..
дак чтож ты написал
TamTam писал(а):Да именно так. :)
???
Я не совсем правильено понял, набо было 1 огоньком по порту бегать а я вам дал таблицу истенности в целом это вам не подойдет, а ежеле вам надо просто бег огонь так там еще проще просто делайте сдвиг.
avr123.nm.ru » 25 фев 2007, 17:38
TamTam писал(а):ежеле вам надо просто бег огонь так там еще проще просто делайте сдвиг.
я и сделал сдвиг в примере в прицепе выше.
TamTam писал(а):ежеле вам надо просто бег огонь.
я думал что бегущий огонь это и есть "просто бег огонь"

avr123.nm.ru » 07 мар 2007, 04:28
Myp писал(а):непонимаю...
вот лежит у меня МК и дрыгает лапками=)
одной через PORTB и другой лапкой через PINB
А МК какой у тебя ?
Я то про мегу16 и типа того говорю.
А вот тини и новые меги меняют бит порта при записи "1" в бит в PIN.
Myp » 07 мар 2007, 11:00
тинька =)
а я и не знал
неужели это в даташите описано?:lol:
только я непоняла,
вот такой код
- Код: Выделить всё • Развернуть
PINB.1 = 1;
PORTB.1 = 1;
delay_ms(50);
PINB.1 = 0;
PORTB.1 = 0;
delay_ms(50);
вовсе не означает что лапки будут синхронно дёргатся
одна будет ровно в 2 раза чаще другой менять состояние
avr123.nm.ru » 07 мар 2007, 12:39
Myp писал(а):тинька =)
а я и не знал
неужели это в даташите описано?:lol:
на странице avr123.nm.ru/02.htm - на желтом фоне - перечислены некоторые модели у которых ДА и у которых НЕТ !
Вот такая петрушка.
Просто у меня поясняется что рассматриваем
конкретно порты ATmega16.