Oye YF-21, no te andes brincando unidades del libro de 16F877, por eso no le entiendes jejeje.
Te paso un programa básico que configura porta todo como digital y saca una secuencia binaria por portb.
Codigo:
;Programa que enciende y apaga led
;
list p=16f877a
include "p16f877a.inc"
conteo equ 0x20 ; lleva conteo binario
PDel0 equ 0x21 ; subrutina
PDel1 equ 0x22 ; subrutina
org 0x00
goto inicio
org 0x05
inicio bsf STATUS,RP0 ; banco 1
bcf STATUS,RP1
clrf TRISB ; portb de salida
movlw b"00000110" ; porta todo digital
movwf ADCON1
clrf TRISA ; porta de salida
bcf STATUS,RP0 ; banco 0
bcf STATUS,RP1
clrf conteo
contador movf conteo,W
movwf PORTB ; pasa conteo a W
call DEMORA
incf conteo
goto contador
; Descripcion: Delay 500000 ciclos
;-------------------------------------------------------------
DEMORA movlw .239 ; 1 set numero de repeticion (B)
movwf PDel0 ; 1 |
PLoop1 movlw .232 ; 1 set numero de repeticion (A)
movwf PDel1 ; 1 |
PLoop2 clrwdt ; 1 clear watchdog
PDelL1 goto PDelL2 ; 2 ciclos delay
PDelL2 goto PDelL3 ; 2 ciclos delay
PDelL3 clrwdt ; 1 ciclo delay
decfsz PDel1, 1 ; 1 + (1) es el tiempo 0 ? (A)
goto PLoop2 ; 2 no, loop
decfsz PDel0, 1 ; 1 + (1) es el tiempo 0 ? (B)
goto PLoop1 ; 2 no, loop
PDelL4 goto PDelL5 ; 2 ciclos delay
PDelL5 goto PDelL6 ; 2 ciclos delay
PDelL6 goto PDelL7 ; 2 ciclos delay
PDelL7 clrwdt ; 1 ciclo delay
return ; 2+2 Fin.
;-------------------------------------------------------------
end
Fíjate como se configura el adcon