Отговори на тема  [ 7 мнения ] 
Програмиране на PIC16C73 
Автор Съобщение
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Нед Апр 25, 2010 1:53 pm
Мнения: 5
Мнение Програмиране на PIC16C73
Насочиха ме към вас та по темата
Начинаещ съм в тази среда, за това моля за малко помощ.
Имам за задача на направя програма на асемблер,която:
1.Да се състави подпрограма, пресмятаща израза:
R=A.7+2.B-49
,където A и B са еднобайтови променливи в данновата памет
2. Подпрограмата да се извиква за елементите на 2 масива от по 32 байтови числа.

Измисленото от мен до момента:

---------------------------------------------------
#include "P16C73.inc"
REGA equ 0x20
RLA equ 0x21
RHA equ 0x22
REGB equ 0x23
RLB equ 0x24
RHB equ 0x25
RRR equ 0x26
MAS equ 0x30
org 0x0000
goto start
org 0x0010
FOR
movf REGA,0
movwf RLA
bcf STATUS,C
rlf RLA,1
rlf RHA
rlf RLA,1
rlf RHA
movf RLA,0
addwf REGA,0
btfsc STATUS,C
incf RHA,1
addwf REGA,0
btfsc STATUS,C
incf RHA,1
addwf REGA,0
btfsc STATUS,C
incf RHA,1
movwf RLA
movf REGB,0
movwf RLB
bcf STATUS,C
rlf RLB,1
rlf RHB
btfsc STATUS,C
incf RHB,1
movf RLA,0
addwf RLB,0
btfsc STATUS,C
incf RHB,1
movwf RLB
movf RHA,0
addwf RHB,0
movwf RHB
retlw 0
start

next
movlw MAS
movwf REGA

call FOR
goto next
NOP
END
----------------------------------------
Първия ми въпрос е как от двубайтово число да извадя числото 49
(не съм много сигурен дали двубайтовото ми събиране е правилно, за това моля някой да му хвърли едно око)
Другия ми въпрос е защо когато от масива зареждам символите в данновата памет вмето да отива стойността от клетката отива адреса на масива
Пример с началото. Ако задам началото на масива да е числото 4 в REGA не отива стойността 4, а отива 30?
(масива съм го поизтрил малко, защото ме ядоса)


Нед Апр 25, 2010 1:55 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Чет Фев 01, 2007 4:04 am
Мнения: 1539
Мнение 
Четенето на масив става през INDF и FSR. Първо във FSR се зарежда адреса на клетката и след това стойността й се прочита от INDF. Може просто да инкрементираш FSR и четеш INDF-a.

;================================================
; Double Precision Addition/Subtraction 16bit 2's compl.
;================================================
;
Sub16s
movf BL,w
subwf AL,f
movf BH,w
skpc
incfsz BH,w
subwf AH,f
return
;
Add16s
movf BL,w
addwf AL,f ; add lsb.AN526
skpnc ; add in carry
incf AH,f
movf BH,w
addwf AH,f ; add msb
return


Пон Апр 26, 2010 2:15 am
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Нед Апр 25, 2010 1:53 pm
Мнения: 5
Мнение 
Много ти благодаря!
Само едно малко върпосче това което си ми написал "skpc " и "skpnc" това да го разбирам, че е тест на бит при преход? При мен ще бъде btfsc нали?


Пон Апр 26, 2010 2:05 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Чет Фев 01, 2007 4:04 am
Мнения: 1539
Мнение 
skpc = btfss status,C - пропусни ако е Ц (кери,пренос)
skpnc = btfsc status,C (пропусни ако е неЦ или нулЦ)
Това са съкратени изписвания ,валидни в микрочипския асемблер, но ти по-добре си ползвай пълния запис. Има и skpz, skpnz и разни други.


Пон Апр 26, 2010 2:20 pm
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Нед Апр 25, 2010 1:53 pm
Мнения: 5
Мнение 
Там при изваждането не трябва ли да бъде decfsz вместо incfsz . Все пак намаляваме или аз нещо съм в грешка?
Още едно въпросче мога ли направо да напиша subwf 0x31 за числото 49


Пон Апр 26, 2010 4:44 pm
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Нед Апр 25, 2010 1:53 pm
Мнения: 5
Мнение 
Отговора на последни въпрос е sublw 0x31 ако на някой му трябва все пак.
(трябва да ги науча всички функции :idea: )


Пон Апр 26, 2010 5:08 pm
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Нед Апр 25, 2010 1:53 pm
Мнения: 5
Мнение 
Всичко стана идеално. ГОЛЯМО БЛАГОДАРЯ!

п.п: Имам и за 8086 задачка ама да се надяваме да не ви занимавам.


Пон Апр 26, 2010 8:57 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 7 мнения ] 

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 4 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни