Обсуждаем контроллеры компании Atmel.
Ответить

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

Пт окт 06, 2006 18:44:31

На 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. то или загоралась или наабарот...
Где моя ошибка? Плиииззззз позарез нужна помощщщщщщ
Спасибо

Пт окт 06, 2006 23:10:30

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

наверно 0b110 нужно.

Сб окт 07, 2006 02:54:45

Этот нолик я добавлю, но это ничего не меняет потому что PinB (PB0)
я настройл на вход тоесть:
Код:
 ldi Temp,0b110    ;настройка порта B
 out DDRB,Temp

Если коротко я просто хочу при нажатий на кнопку чтоб загорался светодиодик на какой либо ножке...
Это просто грубый пример...
Главное чтоб идею поняли чего я жочу добится..
Спасибо!

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

Сб окт 07, 2006 08:20:01

Код:
                ldi Temp,0b110    ;настройка порта B
                out DDRB,Temp
   
   rjmp begin


В битовых операциях желательно указывать полностью байт, т.е. 0b11000000. В твоем же случае непонятно какие выводы ты хочешь настроить на выход, толи первые толи последние.

Сб окт 07, 2006 10:34:20

да вроде нет такого требования в асме.

Сб окт 07, 2006 11:38:10

зачем полностью? Если не понятно вот ша объясню:
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

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

Сб окт 07, 2006 12:25:59

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 раз.

Сб окт 07, 2006 17:33:45

и все-же байт нужно писать полностью

Сб окт 07, 2006 21:33:49

avr123.nm.ru спасибо вам огромное!
Попробую сделать так как вы сказали :idea:
OFF
и сожелею за то что я был о вас другого мнения
/OFF

Вс окт 08, 2006 00:32:45

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

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

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

строчку:

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

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

Советую прошивать МК прямо из CVAVR.
Вложения
cvavr_vmlab.rar
(5.1 KiB) Скачиваний: 469

Вс окт 08, 2006 11:24:16

Спасибо вам авр123 огромное огромное огромное огромное огромное !!!!!!!!!
Вы мне очень помогли!!!! Я на своем сайте сделаю ссылку на ващ сайт! сегодня! Thanks!!

Вс окт 08, 2006 11:28:46

офф
мир дружба жвачка :)

Вс окт 08, 2006 13:36:43

DLL32 писал(а):Вы мне очень помогли!


Я рад. Мне бы еще от "Мерлина" добится описания на русском того, что он хочет добится от МК ...

Вс окт 08, 2006 21:26:02

хихии:) :)))

Ср окт 11, 2006 10:48:16

avr123.nm.ru
Я рад. Мне бы еще от "Мерлина" добится описания на русском того, что он хочет добится от МК ...


сцылку черкни плз, где я не по русски выразился?

Ср окт 11, 2006 13:08:36

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

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

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