Страница 1 из 1
Assembler и AVR прога не работает
Добавлено: Пт окт 06, 2006 18:44:31
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. то или загоралась или наабарот...
Где моя ошибка? Плиииззззз позарез нужна помощщщщщщ
Спасибо
Добавлено: Пт окт 06, 2006 23:10:30
avr123.nm.ru
ldi Temp,0b11 ;включаем два светодиода
наверно 0b110 нужно.
Добавлено: Сб окт 07, 2006 02:54:45
DLL32
Этот нолик я добавлю, но это ничего не меняет потому что PinB (PB0)
я настройл на вход тоесть:
Код: Выделить всё
ldi Temp,0b110 ;настройка порта B
out DDRB,Temp
Если коротко я просто хочу при нажатий на кнопку чтоб загорался светодиодик на какой либо ножке...
Это просто грубый пример...
Главное чтоб идею поняли чего я жочу добится..
Спасибо!
Re: Assembler и AVR прога не работает
Добавлено: Сб окт 07, 2006 08:20:01
Mamonth
Код: Выделить всё
ldi Temp,0b110 ;настройка порта B
out DDRB,Temp
rjmp begin
В битовых операциях желательно указывать полностью байт, т.е. 0b11000000. В твоем же случае непонятно какие выводы ты хочешь настроить на выход, толи первые толи последние.
Добавлено: Сб окт 07, 2006 10:34:20
avr123.nm.ru
да вроде нет такого требования в асме.
Добавлено: Сб окт 07, 2006 11:38:10
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
Re: Assembler и AVR прога не работает
Добавлено: Сб окт 07, 2006 12:25:59
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"
}
}
======
частоту указать в свойствах проекта.
Добавлено: Сб окт 07, 2006 17:33:45
Гость
и все-же байт нужно писать полностью
Добавлено: Сб окт 07, 2006 21:33:49
DLL32
avr123.nm.ru спасибо вам огромное!
Попробую сделать так как вы сказали
OFF
и сожелею за то что я был о вас другого мнения
/OFF
Добавлено: Вс окт 08, 2006 00:32:45
avr123.nm.ru
Вот сделал этот пример в компиляторе CVAVR
с симуляцией в VMLAB.
для более четкого понимания алгоритма добавил после
while (PINB.0); // тут сидим пока на PB0 есть "1"
строчку:
while (!PINB.0); // тут сидим пока на PB0 есть "0"
Попробуйте. Понажимайте кнопку 1 в симуляторе и посмторите что диод таки переключается.
Советую прошивать МК прямо из CVAVR.
Добавлено: Вс окт 08, 2006 11:24:16
DLL32
Спасибо вам авр123 огромное огромное огромное огромное огромное !!!!!!!!!
Вы мне очень помогли!!!! Я на своем сайте сделаю ссылку на ващ сайт! сегодня! Thanks!!
Добавлено: Вс окт 08, 2006 11:28:46
Старый ржавый электронщик
офф
мир дружба жвачка

Добавлено: Вс окт 08, 2006 13:36:43
avr123.nm.ru
DLL32 писал(а):Вы мне очень помогли!
Я рад. Мне бы еще от "Мерлина" добится описания на русском того, что он хочет добится от МК ...
Добавлено: Вс окт 08, 2006 21:26:02
DLL32
хихии:)

Добавлено: Ср окт 11, 2006 10:48:16
CyberMerlin
avr123.nm.ru
Я рад. Мне бы еще от "Мерлина" добится описания на русском того, что он хочет добится от МК ...
сцылку черкни плз, где я не по русски выразился?
Добавлено: Ср окт 11, 2006 13:08:36
avr123.nm.ru
нет с руским у тебя все в порядке,
я говорю что еслиб ты описал нужный тебе алгоритм не на языке программирования а по русски - т.е. простым описанием, то проще было бы помочь.
Это псевдокод называется, прмер есть в задаче 1.