PIC16F628A - Blinka den - Nybörjare
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...
			
			
									
									
						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...
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.
			
			
									
									
						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.
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.
			
			
													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
					Senast redigerad av sodjan 4 september 2006, 23:10:56, redigerad totalt 1 gång.
									
			
									
						
				