Sida 8 av 8

Postat: 4 september 2006, 18:42:26
av sodjan

Postat: 4 september 2006, 19:03:12
av Nickeh
Ett bra länktips är detta:
http://techtrain.microchip.com/x14/

Fick då igång mitt förstående för vad jag höll på med :)
Databladen kan vara lite svårsmälta ibland tycker jag. iaf. till en början när man inte har full koll på alla begrepp...

Postat: 4 september 2006, 20:19:11
av brauer
Edit: Problemet löst

Postat: 4 september 2006, 21:11:26
av sodjan
Det tillhör god "netiquet" att även tala om vad som var problemet.
Så vad var problemt/lösningen ?

Postat: 4 september 2006, 21:46:32
av brauer
f'låt :)
Jag hade problem med att MPLINK inte gjorde någon HEX-fil. Jag tog bort .lkr-filen efter lite googlande och fick ut min fil.
Ny lyser LEDen iaf. Om man ska får den att blinka, ska man köra delay_funktioner eller lära sig timer direkt? Känns som om det är lika bra att ta itu med timern med en gång.

Postat: 4 september 2006, 21:59:04
av sodjan
OK, det betyer att din assembler kod är skriven i "absolute mode".
MPLINK (och linker-scripts, LKR filer) används till "relocatable mode".

Du kan blinka med en timer och en interrupt rutin, t.ex som nedan.
Obs att exemplet är i relocatable mode, och du ska lägga till rätt LKR fil till projektet.

Kod: Markera allt

;**********************************************************************
;   Enkelt blink-a-led, 16F628A.                                       *
;                                                                     *
;**********************************************************************
;    Files required:  P16F628A.INC                                     *
;                     16F628A.LNK                                      *
;                                                                     *
;**********************************************************************


	list      p=16f628A
	#include <p16f628A.inc>
	
	__CONFIG   _DATA_CP_OFF & _CP_OFF & _LVP_OFF & _BODEN_OFF & _BOREN_OFF & _WDT_OFF & _PWRTE_ON & _HS_OSC & _MCLRE_OFF

RESET_VECTOR    CODE    0x000     ; processor reset vector
	    goto    start             ; go to beginning of program


INT_VECTOR      CODE    0x004     ; interrupt vector location
        goto    isr_routine       ; goto main interrupt service routine.
        

;***************************************************************
MAIN    CODE

start

        banksel cmcon
        movlw   h'07'
        movwf   cmcon            ; Stäng av ADC.

        banksel trisa
        clrf    trisa
        clrf    trisb             ; Alla pinnar = utgångar.

        banksel t1con
        movlw   b'00110001'
        movwf   t1con             ; Se datablad...
        
        banksel pie1
        movlw   b'00000001'
        movwf   pie1              ; Enable avbrott från TMR1.

        banksel intcon	
        bsf     intcon, peie
        bsf     intcon, gie       ; Enable avbrott...

loop
        goto loop                 ; Vänta på avbrott...
 


;***************************************************************
ISR_ROUTINE  CODE

isr_routine

        banksel portb
        comf    porta            ; Blinka !!

        banksel pir1
        bcf     pir1, tmr1if     ; clear avbrotts flagga.

        retfie

		end

Postat: 4 september 2006, 22:56:32
av brauer
Hm, det där fick jag ingen ordning på. Får läsa in mig mer på timern först.

Postat: 4 september 2006, 23:11:55
av sodjan
Jag plockade in koden i MPLAB och justerade för 628A.
Den är utbytt i förra inlägget...