*host*
En kommentar hämtad Sodjan's kod:
"Blinka med hela PORTA!"

sodjan skrev:Alltså, att *börja* sin resa i PIC världen genom att pilla med firmware
till programmeraren, låter väl kanske inte som riktigt rätt ände...![]()
Och JAL är en väldigt udda konstruktion som det igentligen inte finns
mycket anledning att bry sig om alls.
> Någon som har någon bra exempelkod för att blinka en lysdiod med en 16F628?Kod: Markera allt
;********************************************************************** ; Enkelt blink-a-led, 16F628A. ; ;********************************************************************** ; Other files required: ; 16F628A.LNK (lägg till i projektet som "Linker Script" !) ; ;********************************************************************** list p=16f628A #include <p16f628A.inc> __CONFIG _DATA_CP_OFF & _CP_ON & _LVP_OFF & _BODEN_OFF & _BOREN_OFF & _WDT_OFF & _PWRTE_ON & _HS_OSC & _MCLRE_ON 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, se databladet om PORTA. banksel trisa clrf trisa clrf trisb ; Alla pinnar = utgångar. banksel t1con movlw b'00110001' movwf t1con ; Se databladet om Timer1. banksel pie1 movlw b'00000001' movwf pie1 ; Enable avbrott från TMR1. banksel intcon bsf intcon, peie ; Enable "peripheral interrupts". bsf intcon, gie ; Enable "global interrupts". loop goto loop ; Vänta på avbrott (interrupt)... ;*************************************************************** ISR_ROUTINE CODE isr_routine ; avbrott/interrupt rutin. banksel porta comf porta ; Blinka med hela PORTA! banksel pir1 bcf pir1, tmr1if ; återställ avbrotts flagga. retfie end
Kod: Markera allt
banksel cmcon
movlw h'07'
movwf cmcon ; Stäng av ADC, se databladet om PORTA.
-> CMCON = 0x07; // Samma fast i C
banksel trisa
clrf trisa
-> TRISA = 0x00;
clrf trisb ; Alla pinnar = utgångar.
-> TRISB = 0x00;
banksel t1con
movlw b'00110001'
movwf t1con ; Se databladet om Timer1.
-> T1CON = 0x31;
banksel pie1
movlw b'00000001'
movwf pie1 ; Enable avbrott från TMR1.
-> PIE1 = 0x01;
banksel intcon
bsf intcon, peie ; Enable "peripheral interrupts".
-> INTCON_PEIE = 1;
bsf intcon, gie ; Enable "global interrupts".
-> INTCON_GIE = 1;