Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.10.2011, 20:37   #1
whatever
a.k.a. Skull
Форумчанин
 
Регистрация: 17.11.2009
Сообщений: 963
По умолчанию Вызов программ в ассемблере для PIC16F84

Доброго времени суток. Начал учить асемблер для PIC16F84, сейчас задание
Код:
Совместить воедино работы  программ использованных в лабораторных работах  1,3,4,5. Вызов каждой из программ осуществляется аппаратно, путем подачи на порт «А» соответствующего кода.
Так вот, как подать код на PORTA мне понятно, как организовать подпрограммы вроде бы тоже. Но каким образом заставить программу перескакивать на нужный участок кода после сверки со значением PORTA мне непонятно. Был бы это тот же паскаль я бы написал что-то вроде
Код:
if PORTA=h'15' then goto SUM
if PORTA=h'15' then goto MULT
...
Но скупость команд ассемблера просто убивает.

Собственно мне нужно понять как реализовать процедуру типа if-then, либо просто на словах объяснить, как эта задача реализуется. Методичку читал, ничего подобного не нашел.
Все тривиальное просто
whatever вне форума Ответить с цитированием
Старый 15.10.2011, 21:02   #2
Олвин
Экспериментатор
Форумчанин
 
Аватар для Олвин
 
Регистрация: 16.04.2008
Сообщений: 218
По умолчанию

Условные переходы вроде JZ.

UPD: верно, туплю, это ж risc-контроллер, нет там jz...
Для создания сложных вещей не нужны сложные интерфейсы. (с) Линус Торвальдс

Последний раз редактировалось Олвин; 16.10.2011 в 01:08.
Олвин вне форума Ответить с цитированием
Старый 15.10.2011, 22:35   #3
whatever
a.k.a. Skull
Форумчанин
 
Регистрация: 17.11.2009
Сообщений: 963
По умолчанию

Написал вот так
Код:
#include<p16f84.inc>
 ORG 0
 GOTO BEGIN
 ORG 100h


BEGIN
  BCF STATUS,RP0
  CLRF PORTA
  CLRF PORTB
  MOVLW B'00000000'
  BSF STATUS,RP0
  MOVWF TRISB
  MOVWF TRISA
  BCF STATUS,RP0

MOVLW H'16'                ;"Адрес", на который нужно перейти
MOVWF PORTB		;Копирую значение W на ненужный пока PORTB
   
SUBLW H'15'
JZ SHOW
MOVF PORTB,0		;Возвращаю W начальное значение

SUBLW H'16'
JZ ATOB
MOVF PORTB,0
GOTO BEGIN

		SHOW
MOVLW H'AA'
MOVWF PORTB
GOTO BEGIN

		ATOB
MOVLW H'01'
MOVWF PORTA
MOVF PORTA,0
MOVWF PORTB
GOTO BEGIN
END
Компилятор ругается так
Код:
Error[122]   C:\WORK\QWE\QWE.ASM 21 : Illegal opcode (SHOW)
Error[122]   C:\WORK\QWE\QWE.ASM 25 : Illegal opcode (ATOB)
Да, программатора нет ни дома, ни в универе, поэтому нужный адрес записывается в аккумулятор в самой программе.
Все тривиальное просто

Последний раз редактировалось whatever; 15.10.2011 в 22:39.
whatever вне форума Ответить с цитированием
Старый 15.10.2011, 23:42   #4
*PB*
Форумчанин
 
Регистрация: 11.08.2009
Сообщений: 558
По умолчанию

Цитата:
Сообщение от Олвин Посмотреть сообщение
Условные переходы вроде JZ.
Каокй нах JZ?
Где вы его тут увидели? http://www.microchip.ru/?mid=3&tab=14

Цитата:
if PORTA=h'15' then goto SUM
if PORTA=h'15' then goto MULT
Давно не писал на PIC-асме, то вроде так.
Код:
           Movf        PORTA, W
           Sublw       15h
           Btfsc       STATUS, Z
           Goto        SUM
           Movf        PORTA, W
           Sublw       15h
           Btfsc       STATUS, Z
           Goto        MULT

Последний раз редактировалось *PB*; 15.10.2011 в 23:44.
*PB* вне форума Ответить с цитированием
Старый 16.10.2011, 18:15   #5
whatever
a.k.a. Skull
Форумчанин
 
Регистрация: 17.11.2009
Сообщений: 963
По умолчанию

Идею понял, спасибо
Все тривиальное просто
whatever вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
работа с PIC16F84 CKent Помощь студентам 2 08.07.2021 10:33
Вызов функций на Ассемблере в программе на С++ РагнаР Общие вопросы C/C++ 1 30.05.2011 16:15
pic16f84 лаба Ivan111 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 19.11.2010 15:27
литература для написания программ для at89c5132 wanes101 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 4 23.08.2010 11:21
Вызов внешних программ в с++ первокурсница)) Общие вопросы C/C++ 3 14.09.2009 11:03