roboforum.ru

Технический форум по робототехнике.

серж. "А ТЫ... ХОЧЕШЬ СТАТЬ АСМАТИКОМ?"

Блоги посетителей.
Правила форума
В данном разделе каждый может иметь не более одной темы. Тема должна начинаться с логина (ника) робофорума.

Re: серж. "А ТЫ... ХОЧЕШЬ СТАТЬ АСМАТИКОМ?"

Сообщение серж » 18 авг 2012, 17:25

самое обидное, это то что все чему вован меня учил, все общение было записано как диалог, но к сожалению удалили... :cry:

Добавлено спустя 43 секунды:
исправил
Аватара пользователя
серж
 
Сообщения: 589
Зарегистрирован: 27 янв 2011, 17:38
Откуда: россия, череповец

Re: серж. "А ТЫ... ХОЧЕШЬ СТАТЬ АСМАТИКОМ?"

Сообщение legion » 18 авг 2012, 17:38

Теперь этот участок кода выглядит правильно.
Единственное, хочу заметить, что настроив ногу на выход (DDRn = 1), когда выводят 1 в PORTn - это не подтяжка, это вывод на ногу + питания.
Подтяжка - это когда к + или к земле вывод подключен через резистор, а тут напрямую.
Ногу-вход с подтяжкой к + можно соединить с землей, земля просто перетянет подтяжку и на ноге станет 0. Если ногу-выход при PORTn=1 подключить к земле, то будет короткое замыкание и нога сгорит.

Еще, "sei ;idem na start" - это инструкция разрешения прерываний. Она не вредит, но она не нужна, ведь ты не используешь прерывания в этой программе.
legion
 
Сообщения: 736
Зарегистрирован: 24 апр 2010, 14:47
Откуда: Уфа
прог. языки: avr asm

Re: серж. "А ТЫ... ХОЧЕШЬ СТАТЬ АСМАТИКОМ?"

Сообщение серж » 18 авг 2012, 17:48

вот с таким кодом прот пишет что есть одна ошибка, но не указывает в какой строке
Код: Выделить всёРазвернуть
   .cseg                               ;
          .org $0000                         ;
        .def temp=r16                        ;íàçíà÷åíèå ðàáî÷èõ ðåãèñòðîâ
        .def tempH=r17                       ;
        .def tempL=r18                       ;
        .dseg                                ;
        .eseg                                ;
        .cseg                                ;
        .equ BUT =PD0                       ;êíîïêà íà ïîðò Ä1
        .equ L1   = PB0                   ;na port B1 podklucen svetodiod1
        .equ L2 = PB1                     ;na port B2 podklucen svetodiod2
        .equ L3 =  PB2                      ;na port B3 podklucen svetodiod3
        rjmp reset                           ;åïðåõîä ê íàçíà÷åíèþ ðàá ðåãèñòðîâ
        reset:                               ;
               ldi tempH,$04                 ;ob etom v dvuh slovah
               out SPH,tempH                 ;napisat mozno
               ldi tempL,$5F                 ;no poka rano
               out SPL,tempL                 ;prosto schitay eto neobhodimiy tipo include
        ;nastroyka portov
               ldi temp, 0b00000111          ;naznachaem port B1 vihod ostalnie vhodi
               out DDRB, temp                ;çàïèñü â ðåã
               ldi temp, 0b00000000          ;0 na vihod port B1
               out portb, temp               ;âûâîä ïîðòà á
             ldi temp, 0b00000000            ;ïäîðò ä, ïèí1-âõîä
             out ddrd, temp                  ;çàïèñü â ðåã
             ldi temp, 0b00000000            ; podnyazka na pin1
             out portd, temp                  ;âûâîä ïîðòà ä
             ;  rjmp stapt                    ;idem na start
        start:                               ;glavnaia programma
               sbis portd, BUT              ;schit knopki
               sbi portb, L1              ; vkl led1
              rjmp start                     ; íà ñ÷èò êíîïêè       
               sbi portb, L2               ;âêë ëåä
              rjmp start                     ;íà ñ÷èò êíîïêè
               sbi portb,L3               ;âêë ëåä3
               ret

Аватара пользователя
серж
 
Сообщения: 589
Зарегистрирован: 27 янв 2011, 17:38
Откуда: россия, череповец

Re: серж. "А ТЫ... ХОЧЕШЬ СТАТЬ АСМАТИКОМ?"

Сообщение legion » 18 авг 2012, 18:03

У тебя файл определений процессора не подключен в этом варианте кода.
В остальном, ошибок, на которые ругался бы компилятор нет. Правда основная программа работать так, как ты задумал не будет. =)

PS: Ты определение порта д опять поломал.
legion
 
Сообщения: 736
Зарегистрирован: 24 апр 2010, 14:47
Откуда: Уфа
прог. языки: avr asm

Re: серж. "А ТЫ... ХОЧЕШЬ СТАТЬ АСМАТИКОМ?"

Сообщение серж » 18 авг 2012, 18:11

да с самой прогой позже. надо с настройкой разобраться.
ты имеешь ввиду это:
Код: Выделить всёРазвернуть
.includi "m8def.inc"
Аватара пользователя
серж
 
Сообщения: 589
Зарегистрирован: 27 янв 2011, 17:38
Откуда: россия, череповец

Re: серж. "А ТЫ... ХОЧЕШЬ СТАТЬ АСМАТИКОМ?"

Сообщение legion » 18 авг 2012, 18:13

Да, это подключение определений процессора. Без него компилятор не узнает что такое PD0, например. Только .include
legion
 
Сообщения: 736
Зарегистрирован: 24 апр 2010, 14:47
Откуда: Уфа
прог. языки: avr asm

Re: серж. "А ТЫ... ХОЧЕШЬ СТАТЬ АСМАТИКОМ?"

Сообщение серж » 18 авг 2012, 18:35

так, начнем с простейшего
Код: Выделить всёРазвернуть

.include "m8def.inc" ;определение мк
.org $0000
.def temp r=16  ;назначение рабочего регистра
.cseg
.eseg
.dseg
.equ led = pb0                   ;присвоение имени
  reset:                               ;
               ldi tempH,$04                 ;тут пока не знаю,
               out SPH,tempH                 ;но думаю, это
               ldi tempL,$5F                 ;определение режима работы
               out SPL,tempL                 ;регистра - рыба
        ;nastroyka portov
  ldi temp, 0b00000001        ;пин1, выход
  out ddrb, temp              ; запись в рег
ldi temp, 0b00000000        ; подт нет
out portb, temp             ; вывод порта Б

init:
   sbi portb, led       ;вкл сд
   ret

просто вкл сд. верно? есть косяки?
Последний раз редактировалось серж 18 авг 2012, 18:55, всего редактировалось 2 раз(а).
Аватара пользователя
серж
 
Сообщения: 589
Зарегистрирован: 27 янв 2011, 17:38
Откуда: россия, череповец

Re: серж. "А ТЫ... ХОЧЕШЬ СТАТЬ АСМАТИКОМ?"

Сообщение Dmitry__ » 18 авг 2012, 18:39

ПЕШЫ В КОММЕНТАХ НА РУССКОМ (не транслитом), ПОКОЛОЧУ!!!!
Весь смысл программ в описании (комментариях) и он пишется на том языке на котором думаешь.
Аватара пользователя
Dmitry__
 
Сообщения: 8033
Зарегистрирован: 13 янв 2011, 15:25
Откуда: Санкт-Петербург

Re: серж. "А ТЫ... ХОЧЕШЬ СТАТЬ АСМАТИКОМ?"

Сообщение legion » 18 авг 2012, 18:40

Ты инициализируешь порт б, а работаешь с портом д. Выбери какой-нибудь один. =)
legion
 
Сообщения: 736
Зарегистрирован: 24 апр 2010, 14:47
Откуда: Уфа
прог. языки: avr asm

Re: серж. "А ТЫ... ХОЧЕШЬ СТАТЬ АСМАТИКОМ?"

Сообщение серж » 18 авг 2012, 19:29

исправил, со всеми оговорками...

Добавлено спустя 16 минут 4 секунды:
а теперь так:
Код: Выделить всёРазвернуть
.include "m8def.inc" ;определение мк
.org $0000
.def temp r=16  ;назначение рабочего регистра
.cseg
.eseg
.dseg
.equ led = pb0                   ;присвоение имени
  reset:                               ;
               ldi tempH,$04                 ;тут пока не знаю,
               out SPH,tempH                 ;но думаю, это
               ldi tempL,$5F                 ;определение режима работы
               out SPL,tempL                 ;регистра - рыба
        ;nastroyka portov
  ldi temp, 0b00000001        ;пин1, выход
  out ddrb, temp              ; запись в рег
ldi temp, 0b00000000        ; подт нет
out portb, temp             ; вывод порта Б

init:
   sbi portb, led       ;вкл сд
   nop                  ;задержки
   nop ;
   nop  ;
  nop ;
  nop ;
nop ;
cbi portb, led  ;выкл сд
nop                  ;задержки
   nop ;
   nop  ;
  nop ;
  nop ;
nop ;
rjmp init   ; переход в начало. зациклили.

мигающий сд

Добавлено спустя 22 минуты 58 секунд:
а вован, последний раз был 30 июля... :shock:
странно... 2 недели его нет на форуме... :(
Аватара пользователя
серж
 
Сообщения: 589
Зарегистрирован: 27 янв 2011, 17:38
Откуда: россия, череповец

Re: серж. "А ТЫ... ХОЧЕШЬ СТАТЬ АСМАТИКОМ?"

Сообщение legion » 18 авг 2012, 19:59

Здесь опечатка:
.def temp r=16 ;назначение рабочего регистра

И у тебя код размещен в сегменте ОЗУ - .dseg, а надо в сегменте кода - .cseg

А еще tempH и tempL не определены.

А вообще, установи себе AVRStudio 4.19, он во все эти ошибки будет тебе буквально пальцем тыкать - очень удобно. И по-любому понадобится потом. Сэкономишь время, и свое, и окружающих.
legion
 
Сообщения: 736
Зарегистрирован: 24 апр 2010, 14:47
Откуда: Уфа
прог. языки: avr asm

Re: серж. "А ТЫ... ХОЧЕШЬ СТАТЬ АСМАТИКОМ?"

Сообщение серж » 18 авг 2012, 20:03

а теперь пробуем с кнопкой
Код: Выделить всёРазвернуть
.include "m8def.inc" ;определение мк
.org $0000
.def temp r=16  ;назначение рабочего регистра
.def tempH r=17
.def tempL r=18
.cseg
.eseg
.equ led = pb0                   ;присвоение имени
.equ but = pd0                   присвоение имени кнопки на порт д (посаена на +)
  reset:                               ;
               ldi tempH,$04                 ;тут пока не знаю,
               out SPH,tempH                 ;но думаю, это
               ldi tempL,$5F                 ;определение режима работы
               out SPL,tempL                 ;регистра - рыба
        ;nastroyka portov
  ldi temp, 0b00000001        ;пин1, выход
  out ddrb, temp              ; запись в рег
ldi temp, 0b00000000        ; подт нет
out portb, temp             ; вывод порта Б

ldi temp, 0b00000000        ; пин1 порта д вход
out ddrd, temp             ;запись в рег
ldi temp, 0b00000001       ;подт на пин1
out portd, temp            ; вывод порта

init:
  sbis portd, but       ; считывание + с кнопки
  sbi portb, led        ;если на кнопке +, то вкл сд
  rjmp init

надеюсь кто-нибудь подскажет на ошибки... :oops:
Последний раз редактировалось серж 18 авг 2012, 20:14, всего редактировалось 1 раз.
Аватара пользователя
серж
 
Сообщения: 589
Зарегистрирован: 27 янв 2011, 17:38
Откуда: россия, череповец

Re: серж. "А ТЫ... ХОЧЕШЬ СТАТЬ АСМАТИКОМ?"

Сообщение legion » 18 авг 2012, 20:08

ret - это возврат из подрограммы (CALL, RCALL, ICALL), тебе некуда здесь возвращаться.
legion
 
Сообщения: 736
Зарегистрирован: 24 апр 2010, 14:47
Откуда: Уфа
прог. языки: avr asm

Re: серж. "А ТЫ... ХОЧЕШЬ СТАТЬ АСМАТИКОМ?"

Сообщение серж » 18 авг 2012, 20:11

legion писал(а):Здесь опечатка:
.def temp r=16 ;назначение рабочего регистра

И у тебя код размещен в сегменте ОЗУ - .dseg, а надо в сегменте кода - .cseg

А еще tempH и tempL не определены.

.

исправил

Добавлено спустя 52 секунды:
а как завершить?

Добавлено спустя 30 секунд:
rety?

Добавлено спустя 53 секунды:
avr4 - качаю
Аватара пользователя
серж
 
Сообщения: 589
Зарегистрирован: 27 янв 2011, 17:38
Откуда: россия, череповец

Re: серж. "А ТЫ... ХОЧЕШЬ СТАТЬ АСМАТИКОМ?"

Сообщение legion » 18 авг 2012, 20:12

Тебе же бесконечный цикл нужен? Прыгай на init.

Неправильно:
.def temp r=16 ;назначение рабочего регистра
.def tempH r=17
.def tempL r=18
legion
 
Сообщения: 736
Зарегистрирован: 24 апр 2010, 14:47
Откуда: Уфа
прог. языки: avr asm

Пред.След.

Вернуться в Блоги

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0

cron