; 2 Pulsanti su pin 21 e 22 e 2 led su pin 33 e 34 ; FUNZIONA dal 8/4/2007 alle 22:30 !!!!!!!!! ; PRIME PROVE CON PIC 18F 452 I/P MAKE IL 7/4/2007 TITLE 'Firmware Robot Nando 2007' ; DATA ULTIMA MODIFICA - BY Paolo Maioli. IL 8/4/2007 LIST P=18F452 ; directive to define processor #include ; processor specific variable definitions errorlevel -230 ; var errorlevel CONFIG OSC = XT ; XT = RISONATORE CERAMICO DA 4 MHz ; ; __CONFIG _CONFIG1H, _OSCS_OFF_1H & _HS_OSC_1H ; __CONFIG _CONFIG2L, _BOR_OFF_2L & _PWRT_OFF_2L ; __CONFIG _CONFIG2H, _WDT_OFF_2H ; __CONFIG _CONFIG3H, _CCP2MX_OFF_3H ; __CONFIG _CONFIG4L, _STVR_OFF_4L & _LVP_OFF_4L & _DEBUG_OFF_4L ; __CONFIG _CONFIG5L, _CP0_OFF_5L & _CP1_OFF_5L & _CP2_OFF_5L & _CP3_OFF_5L ; __CONFIG _CONFIG5H, _CPB_OFF_5H & _CPD_OFF_5H ; __CONFIG _CONFIG6L, _WRT0_OFF_6L & _WRT1_OFF_6L & _WRT2_OFF_6L & _WRT3_OFF_6L ; __CONFIG _CONFIG6H, _WRTC_OFF_6H & _WRTB_OFF_6H & _WRTD_OFF_6H ; __CONFIG _CONFIG7L, _EBTR0_OFF_7L & _EBTR1_OFF_7L & _EBTR2_OFF_7L & _EBTR3_OFF_7L ; __CONFIG _CONFIG7H, _EBTRB_OFF_7H ; ;------------- PIC 18F 452 I/P - DA 2.0 MHz > 10.0 MHz - I= +5V 1,6 mA ----------------- ; ; 1-MCLR-VPP (R.10K al +5V) 40-RB7 ; 2-RA0-AN0 39-RB6 ; 3-RA1-AN1 38-RB5 ; 4-RA2-AN2 37-RB4 ; 5-RA3-AN3 36-RB3-CCP2* ; 6-RA4 35-RB2 ; 7-RA5-AN4 34-RB1 ; 8-RE0-AN5 33-RB0 ; 9-RE1-AN6 32-VDD (+5V 1,6 mA) ; 10-RE2-AN7 31-VSS (MASSA) ; 11-VDD (+5V 1,6 mA) 30-RD7 ; 12-VSS (MASSA) 29-RD6 ; 13-OSC1-CLKI (Risonatore) 28-RD5 ; 14-OSC2-CLKO (Risonatore) 27-RD4 ; 15-RC0 26-RC7-RX (IN SERIALE) ; 16-RC1-CCP2* 25-RC6-TX (OUT SERIALE) ; 17-RC2-CCP1 24-RC5 ; 18-RC3-SCL 23-RC4 ; 19-RD0-PSP0 22-RD3 ; 20-RD1-PSP1 21-RD2-PSP2 ; ; TOT PIN = 40-7 USATI(1-11-12-13-14-31-32)= 33 PORTE LIBERE ; --------------- ; DI CUI 8 PORTE ANALOGICHE + 2 PWM + 2 TX+RX SERIALE ; ;------------------------------------------------------------- FR01 EQU 0CH ; Ritardo 20 msec FR02 EQU 0DH ; Ritardo 20 msec FR03 EQU 0EH ; SERIALE FR04 EQU 0FH ; SERIALE ; #define P1 PORTD,2 ; PULSANTE 1 - PIN 21 #define P2 PORTD,3 ; PULSANTE 2 - PIN 22 #define L1 PORTB,0 ; LED 1 - PIN 33 #define L2 PORTB,1 ; LED 2 - PIN 34 ; ; Start at the reset vector org 0x000 goto Start org 0x004 Interrupt retfie Start CLRF PORTA ;Initialize PORTA by setting output data latches CLRF PORTB ;resetta le uscite CLRF PORTC ;resetta le uscite CLRF PORTD ;resetta le uscite CLRF PORTE ;resetta le uscite ; clrf ADCON1 ;left justified, all inputs a/d movlw B'1111' ;RA0 RA1 ENTRATE movwf TRISD ;portc [7-0] outputs movlw B'00000000' ;ERA 0x00 ;imposta PORTB tutti d'uscita movwf TRISB ; movlw B'01000001' ;Fosc/8 [7-6], A/D ch0 [5-3], a/d on [0] ; movwf ADCON0 Main ; call RIT200 ; call RIT200 ; call RIT200 call paolo goto Main ;------------------------------------------------ ; Ritardo 20 msec con XTAL=4MHz ;------------------------------------------------ RIT2M movlw .58 ;Carica dato nel registro W movwf FR01 ;Muove W in FR01 movlw .200 ;Carica dato nel registro W RIT0 movwf FR02 ;Muove W in FR02 RIT1 clrwdt ;Clear Watchdog time nop ;No operation decfsz FR02 ;Decrementa FR02 e salta se 0 goto RIT1 ;Va a RIT1 decfsz FR01 ;Decrementa FR01 e salta se 0 goto RIT0 ;Va a RIT0 return ;-------------------------------------------------- ; Ritardo 200 msec con XTAL=4MHz ;-------------------------------------------------- RIT200 call RIT2M call RIT2M call RIT2M call RIT2M call RIT2M call RIT2M call RIT2M call RIT2M return ;--------------------- paolo btfsc P1 ; goto ops1 ; bsf L1 goto ops3 ; ops1 bcf L1 ops3 ;--------------------- btfsc P2 ; goto ops2 ; bsf L2 goto ops4 ; ops2 bcf L2 ops4 return end