Микроконтролери и електроника
http://mcu-bg.com/mcu_site/

Âúïðîñ çà CCS è asm macro
http://mcu-bg.com/mcu_site/viewtopic.php?f=3&t=549
Страница 1 от 1

Автор:  boro [ Сря Апр 06, 2005 10:14 am ]
Заглавие:  Âúïðîñ çà CCS è asm macro

Èñêàì äà èçïîëçâàì ãîòîâà àñåìáëåðñêà ïðîãðàìà â ïðîãðàìà íà c (CCS).  asm ïðîãðàìàòà ñå èçïîëçâàò ðàçëè÷íè macro äåôèíèöèè êàòî íàïðèìåð :

JNB macro FADDR,NBIT,ADDR ; BRANCH IF BIT = 0
BTFSS FADDR,NBIT
GOTO ADDR
endm

Êàê òðÿáâà äà äåôèíèðàì â Ñ òåçè macro çà äà ñòàíàò ðàçáèðàåìè çà
CCS àñåìáëåðà?

Автор:  Predator_MF [ Сря Апр 06, 2005 11:23 am ]
Заглавие: 

Ами просто си пишеш
Код:
#ASM
....
your asm code here...
#ENDASM

На компилатора трябва да му кажеш какво е FADDR, NBIT и пр...:
Код:

#define FADDR 0x21 // Къде стои FADDR
#deifne NBIT     4      // Схващаш
Macro се пише така:
Код:
#define my_macro {btfsc FADDR,NBIT; GOTO ADDR;}
. Само да добавя, че няма много смисъл от писане със macro в CCS, същия код ако го напишеш за 16-ka например, компилатора решава сам дали да го постави като макро или да го извика с call (в зависимост от това колко stack space има)... :)

Автор:  boro [ Сря Апр 06, 2005 1:13 pm ]
Заглавие:  CCS è asm macro

Íåùî íå ñúì îáÿñíèë.
Íå æåëàÿ äà ïèøà ìàêðîñè, òå ñà ñè íàïèñàíè è äåêëàðèðàíè â asm
ôàéëà. Íî àñåìáëåðà íà CCS íå ðàçáèðà äåôèíèöèÿòà macro. Çà äà íå ñè èãðàÿ äà çàìåíÿì âñåêè ìàêðîc ñ ïîðåäèöà îò asm èíñòðóêöèè
(òå ñå èçïîëçâàò íàä 100 ìåñòà) â àsm ôàéëà èñêàì äà ïðåðàáîòÿ ñàìî macro äåôèíèöèèòå(òå ñà ñàìî 4) äà ñòàíàò ðàçáèðàåìè çà CCS
àñåìáëåðà.
Íå ìîãà äà ðàçáåðà èäåÿòà.Àêî íàïðàâÿ òîâà äåôèíèðàíå:
#define FADDR 0x21 // Êúäå ñòîè FADDR
#deifne NBIT 4 // áèò

FADDR è NBIT ñå ôèêñèðàò. Äîêàòî ìàêðîñà ñå âèêà
ñ ðàçëè÷íè ïàðàìåòðè. Íàïðèìåð:
JNB PORTA,1,ADDR1;
.
.
JNB PORTB,6,ADDR9

Автор:  Predator_MF [ Сря Апр 06, 2005 1:22 pm ]
Заглавие: 

Ми ся си такова мамата...напиши го като функция...за друго не се сещам...Няма да ти отнеме кой знае колко време да заместиш всичко с CTRL+R :)

Автор:  alek [ Сря Апр 06, 2005 3:31 pm ]
Заглавие: 

Компилирай асемблерския код с макросите в MPLAB и вземи листинговия файл - от там си копирай подробния асемблерски код и го сложи в CCS.

Автор:  boro [ Сря Апр 06, 2005 4:47 pm ]
Заглавие:  CCS

Çà ñúæàëåíèå ñå îêàçà ÷å ñå ïîëçâàò íà ìíîãî ìåñòà
è ìàêðîñè íà ÌPASM êàòî addcf è äð. êîèòî íå ñå ðàçáèâàò â
ëèñòèíãà. Áåç ëèíêåð ëîøà ðàáîòà.

Äåôèíèöèÿòà òðÿáâà äà å íåùî ïîäîáíî:
#define JNB(FADDR,NBIT,ADDR) BTFSS FADDR,NBIT GOTO ADDR

èëè
#define JNB(FADDR,NBIT,ADDR) {#asm
BTFSS FADDR,NBIT
GOTO ADDR
#endasm
}
Íî íåìîãà äà ãî ïîäêàðàì. :x

Автор:  Predator_MF [ Сря Апр 06, 2005 4:50 pm ]
Заглавие: 

Ами напиши го:
Код:
void JNB (int8 FADDR,NBIT)
{#asm
BTFSS FADDR,NBIT
GOTO ADDR
#endasm
}
.
За листинга имаше един директив #LIST, с който всичко след него се листва...погледни в хелпа че съм го забравил как беше.

Автор:  boro [ Чет Апр 07, 2005 6:07 am ]
Заглавие:  CCS asm macro

Âàðèàíòà ôóíêöèÿ èìà ðåäèöà íåóäîáñòâà:
1. Ïðåðåäàêòèðàíå
2. Èçïîëçâàíå íà îùå åäíî íèâî íà ñòåêà
3. Ïîâå÷å öèêëè è ò.í.
Êàçàíî íàêðàòêî ïðîãðàìàòà âå÷å íå å ñúùàòà.
Çàòîâà âúïðîñà òóê å ïðèíöèïåí. Ìàêðîñè â asm ïðîãðàìè ñå
èçïîëçâàò ìíîãî ÷åñòî. Çàòîâà áè òðÿáâàëî â PICC äà èìà
ìåõàíèçàì ïîíå çà ïðåäåôèíèðàíåòî èì.
Íÿêîè ïîëçâàë ëè å supporta íà CCS. Àêî èì ïèøà çà êîëêî âðåìå ùå ìè îòãîâîðÿò? Äàëè ùå ìè îòãîâîðÿò ïðè ïîëîæåíèå,÷å
èçïîëçâàì íåëèöåíçèðàíà âåðñèÿ íà êîìïèëàòîðà? :?

Автор:  [ Чет Апр 07, 2005 11:57 am ]
Заглавие: 

...

Автор:  boro [ Чет Апр 07, 2005 3:48 pm ]
Заглавие: 

Äà, íà åäèí ðåä ðàáîòè.

È òîâà ðàáîòè â ðàìêèòå íà #asm #endasm.
#define JNB(FileReg,NumBit,Addr) btfss FileReg,NumBit goto Addr

Îñòàâàò äîñàäíè ïðåðåäàêòèðàíèÿ îò òèïà:
MOVLW D'12' Â MOVLW 0x0C
MOVFW X Â MOVF X,W

Ñ íÿêàêúâ ðåäàêòîð ìîæå ëè äà ñòàíå òîâà ,÷å çà ïðåêîäèðàùà
ïðîãðàìà íå ìè ñå è ïîìèñëÿ äîðè. :(

Автор:  [ Чет Апр 07, 2005 7:20 pm ]
Заглавие: 

...

Страница 1 от 1 Часовете са според зоната UTC + 2 часа [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/