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