ПІК асемблері бібліотека, яка потрібна

C

comp_freak

Guest
Я використовую PIC16F877 для мого проекту, раніше я був використаний для нарад кодування з Motorola MCU,

Проте дві операції робити airthmatic додати, на південь на 16 розрядне число я, як правило, на два кроки

1) перший робити операції на нижніх байт, зберегти результат
2), ніж робити операцію на верхній байт, і зберегти результат

Разом з тим один з експертів розповів мені рис є вихід бібліотеки, яка і може бути використаний .. За його словами, не повинно бути arithmatic бібліотека, де все це airthmatic та логічні вирази для різних біт, таких як 16,32 біти повинні бути доступні ..якщо хто з вас knw, де ця бібліотека знаходиться і як його використовувати ..

Я дуже розчарований Тому що я зробив близько 1:00 Searchin на мікрочип сайті я не міг знайти його.я knw бібліотека існує для коду C,, але я поняття не мають про складання бібліотеки мови ..some1 Pls knw цей матеріал просто дати мені деякі ідеї ..де взяти цю бібліотеку

 
Раніше я користувався рис MC більше 4 років, я не знаю нічого про це liberary для assemply мови, якщо ви будете програми ПОС в assemply, не був у ваш час і писати у вас є Routin
shafee

 
У мене така бібліотека, що я написав.Ось два макроси з моєї бібліотеки вам знадобиться:

Код:

, Додає цілих два разом (= int_c int_a int_b).

; Ціле 2 байти номер.

; Int_aH: адреса старший байт ціле. Молодший байт передбачається

, Бути на наступній адресу (int_aH 1), так що ціле int_aH: int_aL.

; Int_bH: адреса старший байт ціле. Молодший байт передбачається

, Бути на наступній адресу (int_bH 1), так що ціле int_bH: int_bL.

; Int_cH: адреса старший байт ціле. Молодший байт передбачається

, Бути на наступній адресу (int_cH 1), так що ціле int_cH: int_cL.

; Int_cH може бути рівна або int_aH int_bH

; Впливає WREG і ПОЛОЖЕННЯ

;------------------------------------------------- -----------------------------

INT_ADD макрос int_aH, int_bH, int_cH

місцевих int_aL, int_bL, int_cL

int_aL = 1 int_aH

int_bL = 1 int_bH

inc_cL = 1 int_cH

якщо int_aH == int_cH; Спеціальний int_a випадку = int_a int_b

movf int_bL, ш

addwf int_aL, е

movf int_bH, ш

btfsc СТАТУС, C

addlw 0x01

addwf int_aH, е

ще

якщо int_bH == int_cH; Спеціальний int_b випадку = int_a int_b

movf int_aL, ш

addwf int_bL, е

movf int_aH, ш

btfsc СТАТУС, C

addlw 0x01

addwf int_bH, е

ще

movf int_aL, ш

addwf int_bL, ш

movwf int_cL

movf int_aH, ш

btfsc СТАТУС, C

addlw 0x01

addwf int_bH, ш

movwf int_cH

ENDIF

ENDIF

endm; Віднімання двох цілих чисел (int_c = int_a - int_b).

; Ціле 2 байти номер.

; Int_aH: адреса старший байт ціле. Молодший байт передбачається

, Бути на наступній адресу (int_aH 1), так що ціле int_aH: int_aL.

; Int_bH: адреса старший байт ціле. Молодший байт передбачається

, Бути на наступній адресу (int_bH 1), так що ціле int_bH: int_bL.

; Int_cH: адреса старший байт ціле. Молодший байт передбачається

, Бути на наступній адресу (int_cH 1), так що ціле int_cH: int_cL.

; Int_cH може бути рівна або int_aH int_bH

; Впливає WREG і ПОЛОЖЕННЯ

;------------------------------------------------- -----------------------------

INT_SUB макрос int_aH, int_bH, int_cH

місцевих int_aL, int_bL, int_cL

int_aL = 1 int_aH

int_bL = 1 int_bH

inc_cL = 1 int_cH

якщо int_aH == int_cH; Спеціальний int_a випадку = int_a - int_b

movf int_bL, ш

subwf int_aL, е

movf int_bH, ш

btfss СТАТУС, C

addlw 0x01

subwf int_aH, е

ще

movf int_bL, ш

subwf int_aL, ш

movwf int_cL

movf int_bH, ш

btfss СТАТУС, C

addlw 0x01

subwf int_aH, ш

movwf int_cH

ENDIF

endm

 
Величезне спасибі ...їм ще працюємо над цим ...якщо я знайду щось нове буде нехай і оновлення .....

 

Welcome to EDABoard.com

Sponsor

Back
Top