;******************************************************************** ;-------------------------------------------------------------------- ; ; Titolo : Template-documentazione per PIC10F200/2 ; Inserito esempio per lampeggio LED ; Data : 01-05-2012 ; Modificato il : ; Versione : V0.0 ; Ref. hardware : ; Autore : afg ; ;-------------------------------------------------------------------- ;******************************************************************** ; Include necessari : P10F200/202.inc ;******************************************************************** ; ; Impiego pin : ; ---------------- ; 10F200/2 @ 8 pin DIP ; ; |¯¯\/¯¯| ; NC -|1 8|- GP3 ; Vdd -|2 7|- Vss ; GP2 -|3 6|- NC ; GP1 -|4 5|- GP0 ; |______| ; ; 10F200/2 @ 6 pin SOT-23 ; ; *¯¯¯¯¯¯| ; GP0 -|1 6|- GP3 ; Vss -|2 5|- Vdd ; GP1 -|3 4|- GP2 ; |______| ; ; DIP SOT ; NC 1: nc ; Vdd 2: 5: ++ ; GP2/T0CKI/FOSC4 3: 4: ; GP1/ICSPCLK 4: 3: ; GP0/ICSPDAT 5: 1: Out LED ; NC 6: nc ; Vss 7: 2: -- ; GP3/MCLR/VPP 8: 6: ; ; ;******************************************************************** ;#################################################################### ; ; Note : ; ;******************************************************************** ;#################################################################### #define _PIC10F202 ; define PIC model ;#define _PIC10F200 #ifdef _PIC10F202 LIST p=10F202 ; Definizione del processore #include #else LIST p=10F200 ; Definizione del processore #include #endif radix dec LIST X = OFF ;#################################################################### ; ;==================================================================== ; CONFIGURAZIONE = ;==================================================================== ; Esempio di CONFIG ; ----------------- __config _CP_OFF & _MCLRE_OFF & _WDT_OFF ; Opzioni CONFIG ; ; Protezione del programma ; ------------------------- ;_CP_ON protezione abilitata ;_CP_OFF protezione disabilitata ; Pin MCLR ; --------- ;_MCLRE_ON GP3/MCLR come MCLR; ;_MCLRE_OFF GP3/MCLR come GP3 ; Watchdog ; --------- ;_WDT_ON abilitato ;_WDT_OFF disabilitato ; Oscillator - solo una opzione che non occorre dichiarare ; ---------- ;_OSC_IntRC internal oscillator ;******************************************************************** ; PRINCIPALI SFR * ;******************************************************************** ; SFR senza banchi ; ; Esempio di maschera di inizializzazione e ; descrizione sintetica dei registri ; ;OPTION_REG - Wake pull-up & TIMER0 ;----------------------------------- ; al POR '11111111' OPTIONVAL EQU B'11010111' ; ||||||_|___ prescaler 1/256 ; |||||______ al Tmr0 ; ||||_______ GP rising ; |||________ clock interno ; ||_________ no WPU ; |__________ no WU ; ; NOT_GPWU b7 : enable wake-up pin on change ; 1= disabilitato ; 0= abilitato ; NOT_GPPU b6 : Enable Weak Pull-ups bit ; 1= disabilitato ; 0= abilitato ; TOCS b5 : 1= clock TMR0 esterno da GP2 ; 0= clock interno ; TOSE b4 : 1= GP2 fronte discendente (b5=1) ; 0= GP2 fronte in salita (b5=1) ; PSA b3 : 1= predivisore al Watchdog ; 0= predivisore a TMR0 ; PS2/PS0 b2/b0 valore del predivisore ; Watchdog Timer0 ; 000 = 1/1 1/2 ; 001 = 1/2 1/4 ; 010 = 1/4 1/8 ; 011 = 1/8 1/16 ; 100 = 1/16 1/32 ; 101 = 1/32 1/64 ; 110 = 1/64 1/128 ; 111 = 1/128 1/256 ; OSCCAL - Calibrazione oscillatore interno ; ------------------------------------------ ; al POR '11111110' OSCCALDEF EQU B'00000000' ; valore intermedio ; CAL6:0 b7-1 : 0111111 = Maximum frequency ; 0000000 = Center frequency ; 1000000 = Minimum frequency ; FOSC4 b0 : 1= INTOSC/4 su GP2 ; 0= GP2/T0CKI/COUT ; Ordine di precedenza delle funzioni dei PORT ; Priorità | GP0 | GP1 | GP2 | GP3 ;-----------------|------|------|------- ; 1 | CIN+ | CIN- | FOSC4| I/MCLR ; 2 | TRIS | TRIS | COUT | - ; 3 | - | - | T0CKI| - ; 4 | - | - | TRIS | - ; GPIO - Registro PORT ;---------------------- ; al POR '----xxxx' GPIOVAL EQU B'00000000' ; preset to 0 ; | |||||____ GP0 ; | ||||_____ GP1 ; | |||______ GP2 ; | ||_______ GP3 ; |__|________ 0 ; TRISGPIO - Direzione GPIO ; -------------------------- ; al POR '----1111' DIRPORT EQU B'00001000' ; | |||||____ TRISGP0 out ; | ||||_____ TRISGP1 out ; | |||______ TRISGP2 out ; | ||_______ TRISGP3 in ; |__|________ 0 ;#################################################################### ;==================================================================== ;= DEFINIZIONI = ;==================================================================== ;=============== General purpose definitions =============== ; Oscillatore interno fisso 4 MHz XTAL_FREQ equ d'4000000' ; OSC freq in Hz CLOCK equ XTAL_FREQ/4 ; processor clock [Hz] TCYC equ 1000000000/CLOCK ; cycle time [ns] ;******************************************************************** ;* ASSEGNAZIONI LOCALI * ;******************************************************************** ; Eventuali asegnazioni locali ;******************************************************************** ;* DEFINIZIONI * ;******************************************************************** ;Uscita comando LED ;------------------- #define LED GPIO,0 ;#################################################################### ;==================================================================== ;= MEMORIA RAM = ;==================================================================== ; RAM senza banchi #ifdef _PIC10F202 ;Zona di 24 bytes ;---------------- CBLOCK 0x08 ; area RAM da 0x08 a 0x1F d1 ; per Delay d2 d3 end_RAM : 0 ; dummy for overrun check ENDC #if end_RAM > 0x1F ; check for overrun error "RAM space overrun" #endif #else ; 10F200 - meno RAM ;Zona di 16 bytes ;---------------- CBLOCK 0x10 ; area RAM da 0x10 a 0x1F d1 ; per Delay d2 d3 end_RAM : 0 ; dummy for overrun check ENDC #if end_RAM > 0x1F ; check for overrun error "RAM space overrun" #endif #endif PAGE ;#################################################################### ;==================================================================== ;= RESET ENTRY = ;==================================================================== ; Reset Vector ORG 0x00 ;#################################################################### ;==================================================================== ;= MAIN PROGRAM = ;==================================================================== MAIN: ; calibrazione oscillatore interno andlw 0xFE ; clear bit0, no Fosc out movwf OSCCAL ; inizializzazioni I/O al reset ; GPIO tutti out clrf GPIO ; preset GPIO a 0 movlw DIRPORT ; maschera direzione PORT tris GPIO ; al registro direzione ; registro OPTION movlw OPTIONVAL ; maschera option OPTION ; al registro OPTION ;---------------------------------------------------------- ;--------------------- mainloop --------------------------- ;---------------------------------------------------------- loop bsf LED call Delay1s bcf LED goto loop ;---------------------------------------------------------- ;-------------------- end of mainloop --------------------- ;---------------------------------------------------------- PAGE ;******************************************************************** ;==================================================================== ;= SUBROUTINES = ;==================================================================== ;******************************************************************** ; Delay = 1 seconds ; Clock frequency = 4 MHz ; Actual delay = 1 seconds = 1000000 cycles Delay1s ;999990 cycles movlw 0x07 movwf d1 movlw 0x2F movwf d2 movlw 0x03 movwf d3 Delay1s_0 decfsz d1, f goto $+2 decfsz d2, f goto $+2 decfsz d3, f goto Delay1s_0 goto $+1 ;6 cycles goto $+1 goto $+1 retlw 0 ;4 cycles (including call) ;******************************************************************** ; =================================================================== ; = THE END = ;==================================================================== ;******************************************************************** END