Assembler и AVR прога не работает

Обсуждаем контроллеры компании Atmel.
Ответить
Прорезались зубы
Аватара пользователя
Сообщения: 225
Зарегистрирован: Пт июн 16, 2006 21:39:36

Сообщение DLL32 »

На AT90S2323 хочу один порт использовать для входа (PB0) а два других для выхода (PB1,PB2), всё вроде правильно, но...

Код: Выделить всё

.include "Appnotes\2323def.inc"

.def     Temp=R16
.def     Temp1=R17

.cseg
.org 0
                ldi Temp,0b110 	;настройка порта B
                out DDRB,Temp

Begin:     
	ldi Temp,0b11	;включаем два светодиода 
	out PortB,Temp 

	in Temp1, PinB 	; читаем и заносим в Temp1 PinB 
	
	cpi Temp1, 0b111    ;сравнение
	breq Led2		; если Temp1=0 то переходим к Led2
	       
	rjmp begin

Led2:
	ldi Temp,0b01
	out PortB, Temp 	;гасим 1-й светодиод
	
	rjmp begin
короче хочу чтоб когда подаю на вход(PB0) Лог1. то или загоралась или наабарот...
Где моя ошибка? Плиииззззз позарез нужна помощщщщщщ
Спасибо
"The only thing necessary for the triumph of evil is for good men to do nothing" Ebmund Bruke(1729-97)
Реклама
Вечно гонимый
Аватара пользователя
Сообщения: 331
Зарегистрирован: Пн сен 04, 2006 20:25:28
Откуда: самоучитель по микроконтроллерам

Сообщение avr123.nm.ru »

ldi Temp,0b11 ;включаем два светодиода

наверно 0b110 нужно.
Контактная информация:
Реклама
Прорезались зубы
Аватара пользователя
Сообщения: 225
Зарегистрирован: Пт июн 16, 2006 21:39:36

Сообщение DLL32 »

Этот нолик я добавлю, но это ничего не меняет потому что PinB (PB0)
я настройл на вход тоесть:

Код: Выделить всё

 ldi Temp,0b110    ;настройка порта B 
 out DDRB,Temp
Если коротко я просто хочу при нажатий на кнопку чтоб загорался светодиодик на какой либо ножке...
Это просто грубый пример...
Главное чтоб идею поняли чего я жочу добится..
Спасибо!
"The only thing necessary for the triumph of evil is for good men to do nothing" Ebmund Bruke(1729-97)
Вымогатель припоя
Аватара пользователя
Сообщения: 534
Зарегистрирован: Пн янв 16, 2006 08:00:17
Откуда: Иркутск

Сообщение Mamonth »

Код: Выделить всё

                ldi Temp,0b110 	;настройка порта B
                out DDRB,Temp
	
	rjmp begin
В битовых операциях желательно указывать полностью байт, т.е. 0b11000000. В твоем же случае непонятно какие выводы ты хочешь настроить на выход, толи первые толи последние.
Today fine night...
Реклама
Эиком - электронные компоненты и радиодетали
Вечно гонимый
Аватара пользователя
Сообщения: 331
Зарегистрирован: Пн сен 04, 2006 20:25:28
Откуда: самоучитель по микроконтроллерам

Сообщение avr123.nm.ru »

да вроде нет такого требования в асме.
Контактная информация:
Реклама
Прорезались зубы
Аватара пользователя
Сообщения: 225
Зарегистрирован: Пт июн 16, 2006 21:39:36

Сообщение DLL32 »

зачем полностью? Если не понятно вот ша объясню:
0b110-значит что PB1 и PB2 установлены как порты для выхода! А PB0
для входа!
как ваы хотели бы увидеть 8 битным когда порт 3-х битны!
Вот: "Port B (PB2..PB0) Port B is a 3-bit bi-directional I/O port with internal pull-up resistors"
но если вам интересно вот это 0b110 будет это---> 0b0000110
"The only thing necessary for the triumph of evil is for good men to do nothing" Ebmund Bruke(1729-97)
Реклама
Вечно гонимый
Аватара пользователя
Сообщения: 331
Зарегистрирован: Пн сен 04, 2006 20:25:28
Откуда: самоучитель по микроконтроллерам

Сообщение avr123.nm.ru »

DLL32 писал(а):На AT90S2323 хочу чтоб когда подаю на вход(PB0) Лог1. то или загоралась или наабарот...
в CVAVR наврено вот так будет работать - если светодиод подключить через резистор 560 Ом к PB1 то он будет переключаться при возникновении на PB0 "1" после "0".

======

#include <90S2323>

void main(void) {

DDRB.1 = 1 ; // PB1 будет выход

while(1){ // делать поcтоянно
// подробнее на стр. avr123.nm.ru/05.htm

if (PINB.0) { // если на PB0 есть "1"
PORTB.1 ^= 1; // инвертировать уровень на PB1
}

while (PINB.0); // тут "сидим" пока на PB0 есть "1"

}

}

======

частоту указать в свойствах проекта.
Последний раз редактировалось avr123.nm.ru Вс окт 08, 2006 00:16:20, всего редактировалось 1 раз.
Контактная информация:
Гость

Сообщение Гость »

и все-же байт нужно писать полностью
Прорезались зубы
Аватара пользователя
Сообщения: 225
Зарегистрирован: Пт июн 16, 2006 21:39:36

Сообщение DLL32 »

avr123.nm.ru спасибо вам огромное!
Попробую сделать так как вы сказали :idea:
OFF
и сожелею за то что я был о вас другого мнения
/OFF
"The only thing necessary for the triumph of evil is for good men to do nothing" Ebmund Bruke(1729-97)
Вечно гонимый
Аватара пользователя
Сообщения: 331
Зарегистрирован: Пн сен 04, 2006 20:25:28
Откуда: самоучитель по микроконтроллерам

Сообщение avr123.nm.ru »

Вот сделал этот пример в компиляторе CVAVR
с симуляцией в VMLAB.

для более четкого понимания алгоритма добавил после

while (PINB.0); // тут сидим пока на PB0 есть "1"

строчку:

while (!PINB.0); // тут сидим пока на PB0 есть "0"

Попробуйте. Понажимайте кнопку 1 в симуляторе и посмторите что диод таки переключается.

Советую прошивать МК прямо из CVAVR.
Вложения
cvavr_vmlab.rar
(5.1 КБ) 499 скачиваний
Контактная информация:
Прорезались зубы
Аватара пользователя
Сообщения: 225
Зарегистрирован: Пт июн 16, 2006 21:39:36

Сообщение DLL32 »

Спасибо вам авр123 огромное огромное огромное огромное огромное !!!!!!!!!
Вы мне очень помогли!!!! Я на своем сайте сделаю ссылку на ващ сайт! сегодня! Thanks!!
"The only thing necessary for the triumph of evil is for good men to do nothing" Ebmund Bruke(1729-97)
Говорящий с текстолитом
Аватара пользователя
Сообщения: 1507
Зарегистрирован: Чт дек 15, 2005 17:34:48
Откуда: Петрозаводск

Сообщение Старый ржавый электронщик »

офф
мир дружба жвачка :)
путь наименьшего сопротивления проходит по пути наитолстого провода (с) Сергей Соболь
Контактная информация:
Вечно гонимый
Аватара пользователя
Сообщения: 331
Зарегистрирован: Пн сен 04, 2006 20:25:28
Откуда: самоучитель по микроконтроллерам

Сообщение avr123.nm.ru »

DLL32 писал(а):Вы мне очень помогли!
Я рад. Мне бы еще от "Мерлина" добится описания на русском того, что он хочет добится от МК ...
Контактная информация:
Прорезались зубы
Аватара пользователя
Сообщения: 225
Зарегистрирован: Пт июн 16, 2006 21:39:36

Сообщение DLL32 »

хихии:) :)))
"The only thing necessary for the triumph of evil is for good men to do nothing" Ebmund Bruke(1729-97)
Встал на лапы
Сообщения: 138
Зарегистрирован: Пн сен 18, 2006 13:39:03
Откуда: Попуа Новой Гвинеи (Зимбабва)

Сообщение CyberMerlin »

avr123.nm.ru
Я рад. Мне бы еще от "Мерлина" добится описания на русском того, что он хочет добится от МК ...
сцылку черкни плз, где я не по русски выразился?
Контактная информация:
Вечно гонимый
Аватара пользователя
Сообщения: 331
Зарегистрирован: Пн сен 04, 2006 20:25:28
Откуда: самоучитель по микроконтроллерам

Сообщение avr123.nm.ru »

нет с руским у тебя все в порядке,

я говорю что еслиб ты описал нужный тебе алгоритм не на языке программирования а по русски - т.е. простым описанием, то проще было бы помочь.

Это псевдокод называется, прмер есть в задаче 1.
Контактная информация:
Ответить

Вернуться в «AVR»