Ассемблер - детский вопрос.

Поклонники продукции Microchip Technology Inc тусуются тут.
Ответить
Аватара пользователя
Ariadna-on-Line
Это не хвост, это антенна
Сообщения: 1482
Зарегистрирован: Вс май 13, 2012 00:01:54

Ассемблер - детский вопрос.

Сообщение Ariadna-on-Line »

Вопрос к знатокам ассемблера. Вот программа скомпилированная в PIC Basic PRO. И её же дизассемблированный хекс.
В программе идет обмен с термодатчиком DS18S20 через PortA(0) и загрузка в ячейки памяти результатов - температуры 1 байт и знака 0/1 каждую секунду. Также PortС(7) выводит 1.
Асм. исправно компилится и работает.
Покажите мне, где в программе находятся обращения к порту А и, возможно, таймеру. И что это за диалект такой в языке ассемблера. Ткните носом где почитать. Заранее премного благодарен.

ПС. Вырос на Intel8086 ассемблере. Но давненько это было.
Вложения
TermoDallas.rar
(2.12 КБ) 203 скачивания
Реклама
otest
Друг Кота
Сообщения: 7853
Зарегистрирован: Ср фев 11, 2009 20:35:58

Re: Ассемблер - детский вопрос.

Сообщение otest »

В листинге нет обращения к портам
Реклама
Аватара пользователя
botchin
Поставщик валерьянки для Кота
Сообщения: 2029
Зарегистрирован: Чт дек 27, 2012 20:46:09
Откуда: Болгария, г. Лом

Re: Ассемблер - детский вопрос.

Сообщение botchin »

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

    MOVLW 0x06
    MOVWF ADCON1         ; !!Bank!! ADCON0 - ADCON1 - Unimplemented - Unimplemented
    BCF STATUS,RP0       ; !!Bank Register-Bank(0/1)-Select
    BSF PORTC,7]       ; !!Bank!! PORTC - TRISC - Unimplemented - Unimplemented
    BSF STATUS,RP0       ; !!Bank Register-Bank(0/1)-Select
    BCF PORTC,7          ; !!Bank!! PORTC - TRISC - Unimplemented - Unimplemented
    BCF STATUS,RP0       ; !!Bank Register-Bank(0/1)-Select
К PORTC,7 кажется есть, но я не могу понять, если
Ariadna-on-Line писал(а):что это за диалект такой в языке ассемблера
и пътатся вставлять в чужую программу код не понятно как работающии :shock: :o

Ariadna-on-Line, каждъй компилятор поддерживает въход типа .lst. Вам будет гораздо удобнее работать тем .lst, a не с файлом из дизасемблера. Но вам виднее.
Лом - ето город в Болгарии, а не инструмент юстировки електроники.
Аватара пользователя
Ariadna-on-Line
Это не хвост, это антенна
Сообщения: 1482
Зарегистрирован: Вс май 13, 2012 00:01:54

Re: Ассемблер - детский вопрос.

Сообщение Ariadna-on-Line »

Пользуюсь компилятором MPASM v5.49, а дизассемблером PIC-Disasm v1.6
Чтоб не разводить антимонии - посмотрите архив.
Другие дизассемблеры и компиляторы тоже жуют и выдают успешно.
Порты Б С Д на листингах выходят нормально - по имени.
Именно порт А и таймер как-то необычно выходят на дизасмах. Вроде как по адресам.
Я что-то об этом слышал, но не знаю даже как сформулировать вопрос в Гугл.

MainLoop:
MOVLW 0x05
MOVWF LRAM_0x36
MOVLW 0x01
MOVWF LRAM_0x34
MOVLW 0x01
;CLRF PCLATH ; !!Bank Program-Page-Select
CALL LADR_0x0035
и т.д.

Мне кажется вот это и есть обращение к порту А (0х05) и таймеру (0х01)

...Пробовал, на .LST тоже нет Порт А.
Вложения
Dallas.rar
(19.19 КБ) 161 скачивание
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
botchin
Поставщик валерьянки для Кота
Сообщения: 2029
Зарегистрирован: Чт дек 27, 2012 20:46:09
Откуда: Болгария, г. Лом

Re: Ассемблер - детский вопрос.

Сообщение botchin »

Етот фрагмент для меня отношение к PORTA не имеет. Мъ загружаем в две ячейки памяти консантъ 5 и 1.

Объчно movlw ADR_REG исползуется если потом будем работать с FSR. Но в отношение PORTA ето будет работать если PORTA обьявлен как въход.

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

.....	bsf STATUS,RP0
 	movlw 0x00
 	movwf TRISA;значение для инициализации защелок - въход
        ......
 	bcf STATUS,RP0
 	movlw PORTA      ;movlw 0х05
 	movwf FSR
 	incf		INDF,f ;увеличение регистра с 1 (в случае PORTA)
    clrf           INDF,f  ; обнуление PORTA
НО....

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

.....	bsf STATUS,RP0
 	movlw 0xFF
 	movwf TRISA;значение для инициализации защелок - вход
        ......
 	bcf STATUS,RP0
 	movlw PORTA      ;movlw 0х05
 	movwf FSR
 	incf		INDF,f ;увеличение регистра с 1 (в случае PORTA) не будет работает
Если въ захотите перебросить содержание PORTA в W то вам следует работать с инструкции movf PORTA,w - переслать содержимого регистра PORTA в акумуляторе, разумеется можно использовать и другие как decf PORTA,w и т.д.
Если будете работать асемблером то прочитайте какие инструкции есть в данний МК - у Microchip-a с етим все в порядке

PS: Ariadna-on-Line, пожалуйста дайте и .lst фaйла и не в личку, а здесь. О то как человеку, никогда в жизни не видевшии PIC Basic PRO, понять что сделал компилятор в ответ на ето OWOut DQ, 1, [$CC, $44]

PS:PS:
По дисасемблеру:

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


LADR_0x0022
    RRF LRAM_0x22,F
    MOVF LRAM_0x36,W
    MOVWF FSR
    MOVF LRAM_0x34,W
    CALL LADR_0x0046
;.......
LADR_0x0046
    XORLW 0xFF
    ANDWF INDF,F
    GOTO LADR_0x0049
LADR_0x0049
    BSF FSR,7
    ANDWF INDF,F

;.......
LADR_0x0089:             ; Main Loop
    MOVLW 0x05
    MOVWF LRAM_0x36
Видим в Main Loop в переменной LRAM_0x36 ставится 5. В LADR_0x0022 ета величина (5) перебрасъвается в FSR. И в LADR_0x0046 что-то с ним делается через INDF. Т.е. PIC Basic PRO решили, что работать с портом будут через индиректнъй регистр. ?????? Так решили или им так бъло удобно.

Есть одно преимущество. Посколько PORTA.0 должен работать как вход/въход то с етим BSF FSR,7 они перебрасъваются на установка TRISA, а потом через BCF FSR,7 возвращаются на PORTA.

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

LADR_0x0008
    MOVF LRAM_0x34,W
    CALL LADR_0x0046
    MOVF LRAM_0x34,W
    IORWF INDF,F
    MOVLW 0x0A
    CALL LADR_0x0059
    MOVF LRAM_0x34,W
    BCF FSR,7
    ANDWF INDF,W
    ADDLW 0xFF
Таким образом загружая константу 5 в FSR обеспечивается работа на TRISA и PORTA.
Лом - ето город в Болгарии, а не инструмент юстировки електроники.
Реклама
Аватара пользователя
Ariadna-on-Line
Это не хвост, это антенна
Сообщения: 1482
Зарегистрирован: Вс май 13, 2012 00:01:54

Re: Ассемблер - детский вопрос.

Сообщение Ariadna-on-Line »

botchin-у
Именно это я хотел узнать. А то уже просто удивление. То есть здесь используется КОСВЕННАЯ (indirect) адресация, - если я правильно называю.
Большое спасибо.

Всё. Наверно можно закрывать.
Реклама
Ответить

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