PIC es MPLAB

bela bagameri at freestart.hu
Wed Dec 29 11:57:50 CET 2004


> Szóval MPLAB a multkori kérdezett hiba még fenn áll.

Szia Balázs,

lehet, hogy az MPLAB tetű, az is lehet, hogy a PIC úgy xar ahogy van, 
mindenkit lehet szidni, de:

  a forráskód, amit küldtél, hibás.

Ha tud valaki olyan fejlesztőkörnyezetet, ami hibás forráskódból is jó 
gépi kódot csinál, azonnal szóljon nekem!

         LIST            P=16F84
	INCLUDE			"p16f84.inc"
         ERRORLEVEL      -302    ;SUPPRESS BANK SELECTION MESSAGES
         __CONFIG        006Ah   ;HS OSC más minden ki
         __IDLOCS        4155h	;'BZ'

; ---------------Definiciók
D0		equ		0ch				
D1		equ		D0+1
ser_byte	equ		D0+2
bit_cntr	equ		D0+3
ORA		equ		D0+4			;órák
PERC		equ		D0+5			;percek
MPERC		equ		D0+6			;másod percek


; ----------------------A főprgram
	org		00h
	goto		Start

; ----------------------A megszakítás
	org		04h
	retfie		;1enlöre nincs

Start:		

### A Címke után nem kell kettőspontot tenni! RTFM. Beírod az első 
oszlopba a címke nevét és kész. Vagy, ha kettőspontot használsz, mert 
megszoktad, akkor a "goto Start: " lenne a helyes kódrészlet.  ###

	CLRF    PORTB           ;Minden kimenet OFF
         BSF     STATUS,RP0      ;SELECT REGISTER BANK 1

### Ez nem hiba, csak célszerű a bankváltást a banksel direktívával 
elintézni. Két bank bit van ugyanis, az RP0 és az RP1. Ha a banksel-t 
használod (banksel trisa) akkor a tetű MPLAB automatice mind a két bitet 
beállítja szükség szerint. ###

         movlw   B'00001111'	;SET PORTA TO ALL INPUTS

### A porta,4-et outputként állítod be, közben meg azt írod a commentbe, 
hogy mind input legyen. A fordítónak ez nem hiba, de magadat 
megtéveszted. ###

	movwf	TRISA
         CLRF    TRISB           ;SET PORTB TO ALL OUTPUTS 

         BCF     STATUS,RP0      ;SELECT REGISTER BANK 0
	BSF	PORTB,2		;Restet ON
         BSF    	PORTB,4         ;ORALED ON

### Itt a két BSF közé betettem volna egy NOP-ot. Ír erről a katalógus, 
ez a PIC-eknek egy közismert tulajdonsága. Read- modify-write típusú 
utasítás. A PIC datasheet-jében benne van. ###

	movlw	1		;1ms
	call	Delay		;kicsit várunk

### A Delay nevű szubrutin nem létezik, erre kaptál is egy 113-as 
hibaüzenetet. Tetű ez az MPLAB ... ###

	movlw	0102h		;órába

### 0102h az legalább 9 bit hosszú. Te meg be akarod írni egy 8 bites 
regiszterbe. A tetű MPLAB meg hibaüzenetet küld ... ###

	movwf	ORA
	movlw	0304h		;percekbe

### Alakul a dolog: most egy 10 bites számot akarsz 8 bites regiszterbe 
beírni ###

	movwf	PERC
	movlw	0506h		;mpbe

### Ha már lúd, legyen kövér: ez egy 11 bites szám, ez se fér bele 8 
bitbe ###

	movwf	MPERC
	bcf	PORTB,2		;reset elenged
	call	Disp
         END

### Az END direktíva azt jelenti, hogy ott a vége a forráskódnak. Ha a 
szubrutinjaidat az END után írod meg, az annyi, mintha meg se írtad 
volna. A fordító nem nézi meg, hanem visszaüzen egy 113-as errort. Mert 
tetű. ###

;rutinok

;---------------------------Display--------------------------------
Disp:

### A szubrutint címkével szoktuk elkeresztelni. Még mindig nem kell 
kettőspont a címke után. Ha beírod az első oszloptól kezdődően, hogy: 
Disp és egy tabulátorral beljebb ott a forráskód, akkor a tetű MPLAB tök 
jól lefordítja. Az első oszlopban csak címke kezdődhet, ha forráskódot 
írsz, minimum a második oszloptól kell kezdeni, de célszerű 1 tab-al 
beljebb. ###
		BCF		PORTB,4		;ORALED KI

### Szubrutin végén illik visszatérni a főprogramba egy return 
utasítással. Remélem, csak az e-mailből maradt ki. ###

Ha a fentebb említett 1-2 hibát kijavítod, mindjárt lefordítja a kódot a 
tetű MPLAB.

üdv: béla

____________________________________________________________________
Miert fizetsz az internetert? Korlatlan, ingyenes internet hozzaferes a FreeStarttol.
Probald ki most! http://www.freestart.hu




More information about the Elektro mailing list