1:     ;--Programma "Flash.asm"
2:     ;--Date: 10 agosto 2004
3:     ;--Versione: 1.0
4:     	  LIST p=PIC16F877, r=hex, f=INHX8M
     
5:     	  include "P16F877.inc"
6:     delreg equ 0x30 ; Etichette per i registri 
7:     count equ 0x31  ; dei ritardi

8:        org 0x0

9:    ;--Bit 7 di PortB e' definito come output
10:    	  bsf STATUS,RP0 ; Seleziona banco 1
11:    	  bcf STATUS,RP1 ; Seleziona banco 1
12:    	  bcf TRISB,7    ; resetta il bit 7 del registro TRISB
13:    	  bcf STATUS, RP0; Seleziona banco 0
    
14:    ;--Qui comincia il programma principale
15:    begin bsf PORTB,7 ; Alza il pin 7 della porta B
16:    	  call delay    ; chiama la funzione del ritardo
    
17:       bcf PORTB,7   ; Resetta il pin 7 della porta B
18:    	  call delay    ; chiama la funzione del ritardo
19:    	  goto begin    ; torna all'inzio del programma
20:    ;--Fine del programma principale
    

21:    ;--Subroutine che si occupa di generare il ritardo

22:    delay movlw 0xFF
23:    	  movwf delreg ; Carica il registro delreg
24:    	  movlw 0x82
25:    	  movwf count ;  Carica il registro count 
26:    loop2 decfsz count,1 ; loop esterno
27:    	  goto loop1
28:    	  goto exit
29:    loop1 decfsz delreg,1 ; loop interno
30:    	  goto loop1
31:    	  goto loop2
32:    exit return