Assembler EQU

Odpovědět
cmeliak

Assembler EQU

Příspěvek od cmeliak »

Zdravím.

Kód: Vybrat vše

	list	 p=16f88
	#include <p16f88.inc>

;   Set configuration bits using definitions from the include file, p16f84.inc
	__CONFIG	_CONFIG1, _CP_OFF & _CCP1_RB0 & _DEBUG_ON & _WRT_PROTECT_OFF & _CPD_OFF & _LVP_OFF & _BODEN_OFF & _MCLR_ON & _PWRTE_ON & _WDT_OFF & _INTRC_IO
	__CONFIG	_CONFIG2, _IESO_OFF & _FCMEN_OFF

d1	EQU			0x7F
RB4	EQU			0x04

RESET	ORG 	0x0000

		BANKSEL	PORTA
		CLRF	PORTA
		CLRF	PORTB

		BANKSEL	ANSEL
		CLRF	ANSEL

		CLRF	TRISA
		CLRF	TRISB

		BANKSEL PORTB
LOOP
		CALL	DELAY
		BSF		PORTB, RB4
		CALL	DELAY
		BCF		PORTB, RB4
		GOTO	LOOP

DELAY
		MOVLW	.100
		MOVWF	d1
DELAY_0
		DECFSZ	d1, f
		GOTO	DELAY_0
		RETURN

		END
Tento code som zobral s amatérskeho rádia a chcel by som vedieť na čo je riadok

Kód: Vybrat vše

RB4	EQU  0x04

pretože ak dobre viem tak pomocou EQU priradím skratke "RB4" hodnotu ktorá sa nachádza na adrese "0x04" čo je register FSR pre nepriame adresovanie. Simuloval som tento program v MPLAB a hodnota FSR je 0 čiže
"BSF PORTB, RB4" by som mohol prepísať ako "BSF PORTB, 0" čo však nie je pravda a neovládal by som pin RB4. Keď odstránim

Kód: Vybrat vše

RB4	EQU  0x04
kód pracuje aj tak správne preto mi prosím vás vysvetlite na čo je tam ten riadok.
Uživatelský avatar
adamh
Příspěvky: 62
Registrován: 24 úno 2013, 23:10
Bydliště: Opava / Praha
Kontaktovat uživatele:

Re: Assembler EQU

Příspěvek od adamh »

cmeliak píše:pomocou EQU priradím skratke "RB4" hodnotu ktorá sa nachádza na adrese "0x04" čo je register FSR pre nepriame adresovanie.
EQU je něco jako "equivalent". Symbolu RB4 se tím nepředává hodnota na adrese 0x04, ale přímo hodnota 0x04 (což dle kontextu odpovídá masce pro pin RB4). To číslo by pak mohlo být klidně i adresou, záleží na konkrétním použitím v jiné instrukci.

Podle mě tohle řeší už soubor p16f88.inc, bude mít v sobě i definice registrů (PORTA, ...). Proč někdo explicitně deklaroval symbol RB4 nevím. Třeba si chce nechat prostor pro "namapování" RB4 na jiný pin, aby pak nemusel přepisovat kód (fuj technika).
“We’re all pathetic and creepy and can’t get girls. That’s why we fight robots.” –Kripke (TBBT)
Osobní web: adamh.cz
cmeliak

Re: Assembler EQU

Příspěvek od cmeliak »

No jasné ďakujem, toto je v p16f88.inc

Kód: Vybrat vše

RB4              EQU  H'0004'
čiže už to je vyriešené ;).
A ešte otázka má súbor p16f88 nejaký vplyv na rýchlosť a veľkosť programu, keďže sú tam použité len príkazy EQU, ktoré rieši MPLAB a nie samostatný mikrokontrolér ?
Uživatelský avatar
adamh
Příspěvky: 62
Registrován: 24 úno 2013, 23:10
Bydliště: Opava / Praha
Kontaktovat uživatele:

Re: Assembler EQU

Příspěvek od adamh »

cmeliak píše:...keďže sú tam použité len príkazy EQU, ktoré rieši MPLAB a nie samostatný mikrokontrolér ?
Odpověděl sis. ;-)

Má vliv hlavně na pohodu programátora, který nemusí listovat datasheetem a koukat, kde sídlí který registr a na jaké pozici jsou jednotlivé konfigurační bity (a taky spolehlivost programu).
“We’re all pathetic and creepy and can’t get girls. That’s why we fight robots.” –Kripke (TBBT)
Osobní web: adamh.cz
cmeliak

Re: Assembler EQU

Příspěvek od cmeliak »

A ešte otázočka: Čo vyjadruje "f" v

Kód: Vybrat vše

DECFSZ   d1, f
pretože to "f" nie je nikde v kóde deklarované. Čo som sa dočítal tak ak f=0 tak sa bude pracovať s W ak f=1 tak sa bude pracovať len s tou premennou d1. Register W sa nemení takže f=1 ale nikde to nie je napísané tak som z toho zmätený a taktiež ani v p16f88.inc nič nie je tak mi to pls objasnite.
Ďakujem
Uživatelský avatar
adamh
Příspěvky: 62
Registrován: 24 úno 2013, 23:10
Bydliště: Opava / Praha
Kontaktovat uživatele:

Re: Assembler EQU

Příspěvek od adamh »

cmeliak píše:A ešte otázočka: Čo vyjadruje "f" v

Kód: Vybrat vše

DECFSZ   d1, f
pretože to "f" nie je nikde v kóde deklarované.
Ďakujem
f jenom říká, že pracuješ s "file register", tedy že to bude měnit hodnotu registru d1, který reprezentuje nějaké konkrétní místo v RAM. Opravdu má hodnotu 1 a kde je to deklarované nevím, bude to nějaká obecná věc pro všechny PICy, takže bych to nečekal v tom .inc soubru, který je pro jeden konkrétní čip.

Vygoogli si nějaký článek o tom, jak ten assembler pro PIC funguje, nejsem s ním moc kamarád. Koukal jsem do něj jen když jsem potřeboval zkontrolovat, jak se mi přeložilo céčko.
Naposledy upravil(a) adamh dne 19 čer 2013, 23:30, celkem upraveno 1 x.
“We’re all pathetic and creepy and can’t get girls. That’s why we fight robots.” –Kripke (TBBT)
Osobní web: adamh.cz
cmeliak

Re: Assembler EQU

Příspěvek od cmeliak »

Ďakujem ;)
Uživatelský avatar
adamh
Příspěvky: 62
Registrován: 24 úno 2013, 23:10
Bydliště: Opava / Praha
Kontaktovat uživatele:

Re: Assembler EQU

Příspěvek od adamh »

cmeliak píše:Ďakujem ;)
Teď koukám že jsem napsal to, co už jsi věděl, příště budu líp číst dotaz :-D
“We’re all pathetic and creepy and can’t get girls. That’s why we fight robots.” –Kripke (TBBT)
Osobní web: adamh.cz
Odpovědět