;Configuraciones de los pines del PORTB y PORTD ;Curso PIC16f877 LIST P16!877 I"CL#D$ %p16f877&I"C' ;direcciones de los regis(ros del pic org *sf -o.l/ -o./f -o.l/ -o./f *cf
) ST+T#S,RP) *0111111110 *0111111110 TRISB *0))))))))0 TRISD ST+T#S,RP)
;en(ro al ;carga el .alor ;-ue.o el .alor ;carga el .alor ;-ue.o el .alor ;en(ro al
*anco 1 *0111111110 *0111111110 a / de / al puer(o B *0))))))))0 a / de / al puer(o D *anco )
repi(e -o.f PORTB,) -o./f PORTD go(o re repi(e
;
;
end
;fin del progra-a
;
;Configuraciones de los pines del PORTB y PORTD ;Curso PIC16f877 LIST P16!877 I"CL#D$ %p16f877&I"C' ;direcciones de los regis(ros del pic org *sf -o.l/ -o./f -o.l/ -o./f *cf
))))2 ST+T#S,RP) *0111111110 *0111111110 TRISB *0))))))))0 TRISD ST+T#S,RP)
;en(ra al *anco 1 ;coloca el .alor 344 en el regis(ro regis(ro 5/5 ;asigna los *i(s del puer(o B co-o en(radas ;coloca el el .alor ) en el el regis(ro 55 ;asigna los *i(s del puer(o D co-o salidas ;regresa al *anco cero
repi(e -o.f PORTB,) -o./f PORTD go(o repi(e end
;copia la en(rada en 1 del *i( ) en el puer(o B ;coloca en cero (odas las salidas del puer(o D ;*ucle infini(o de la e(iue(a repi(e ;fin del progra-a
lis( P16f877 include%p16f877&inc';Direcciones de regis(ro del PIC include%-acro16 include%-acro16f877&inc f877&inc';-acro ';-acro ue ue sir.e para la decodifica decodificaci ci� n del (eclado config )9:f:3 ;.elocidad de (ra*ao del PIC c*loc< )93) ;2a*ili( ;2a*ili(a a el lla-ado a li*rer li*rer� as endc org ))))2
;==================================================== ;Progra-a principal *sf ST+T#S,RP) ;accede-os al *anco 1 *cf TRISD,);Se declara el puer(o RD) co-o salida *cf ST+T#S,RP) ;re(orne-os al *anco ) clrf PORTD ; li-pia-os >pone-os a cero? el puer(oD clrf PORTB ; li-pia-os >pone-os a cero? el puer(oB call InicioTeclado@9@ ;se lla-a la -acro de decodificaci� n (eclado repi(e; *ucle ue lee el presionado de una (ecla call Teclado@9@; se lla-a a li*rer� a (eclado@9@ -o.f "u-eroTeclado@9@,) ;se -ue.e el con(enido deA"u-eroTeclado@9@ 2acia csi "u-eroTeclado@9@,*0)))))))10,ledon ;condicional � (ecla presionada es 1 csi "u-eroTeclado@9@,*0))))))))0,ledoff ;condicional � (ecla presionada es ) go(o repi(e ;se .uel.e a (es(ear el nu-eo in(roducido en el (eclado ledon;linea para prender L$D si se presiona 1 -o.l/ *0)))))))10;led en on -o./f PORTD ;se -ue.e >da(os ingresados con el (eclado? 2acia el puer(o D go(o repi(e ledoff; linea para apagar L$Dsi se presiona ) -o.l/ *0))))))))0; led en off -o./f PORTD ;se -ue.e >da(os ingresados con el (eclado? 2acia el puer(o D go(o repi(e ;======================================== ;Li*rerias incluidas include%elec(ronicpic16f877&as-' include%(eclado&as-' end; fin del progra-a lis( P16f877 include%p16f877&inc';Direcciones de regis(ro del PIC include%-acro16f877&inc';-acro ue sir.e para la decodificaci� n del (eclado config )9:f:3 ;.elocidad de (ra*ao del PIC c*loc< )93) ;2a*ili(a el lla-ado a li*rer� as endc org ))))2 ;==================================================== ;Progra-a principal *sf ST+T#S,RP) ;accede-os al *anco 1 *cf TRISD,);Se declara el puer(o RD) co-o salida *cf ST+T#S,RP) ;re(orne-os al *anco ) clrf PORTD ; li-pia-os >pone-os a cero? el puer(oD clrf PORTB ; li-pia-os >pone-os a cero? el puer(oB call InicioTeclado@9@ ;se lla-a la -acro de decodificaci� n (eclado repi(e; *ucle ue lee el presionado de una (ecla call Teclado@9@; se lla-a a li*rer� a (eclado@9@ -o.f "u-eroTeclado@9@,) ;se -ue.e el con(enido deA"u-eroTeclado@9@ 2acia csi "u-eroTeclado@9@,*0)))))))10,ledon ;condicional � (ecla presionada es 1 csi "u-eroTeclado@9@,*0))))))))0,ledoff ;condicional � (ecla presionada es ) go(o repi(e ;se .uel.e a (es(ear el nu-eo in(roducido en el (eclado ledon;linea para prender L$D si se presiona 1 -o.l/ *0)))))))10;led en on -o./f PORTD ;se -ue.e >da(os ingresados con el (eclado? 2acia el puer(o D go(o repi(e ledoff; linea para apagar L$Dsi se presiona ) -o.l/ *0))))))))0; led en off
-o./f PORTD ;se -ue.e >da(os ingresados con el (eclado? 2acia el puer(o D go(o repi(e ;======================================== ;Li*rerias incluidas include%elec(ronicpic16f877&as-' include%(eclado&as-' end; fin del progra-a
CO"!IE DTO!!FCPO!!FPRT$O"FGSOSC lis( P16f877 include%p16f877&inc' include%-acroT$CS#P&I"C' c*loc< )93) endc org
))))2
;progra-a principal *sf ST+T#S,RP) *cf TRISD,) clrf PORTD *cf ST+T#S,RP) clrf PORTB call InicioTeclado@9@ repi(e call Teclado@9@ -o.f "u-eroTeclado@9@,) csi "u-eroTeclado@9@,*0)))))))10,ledon csi "u-eroTeclado@9@,*0))))))))0,ledoff go(o repi(e ledon -o.l/ *0)))))))10 -o./f PORTD go(o repi(e ledoff -o.l/ *0))))))))0 -o./f PORT go(o repi(e include%su*ru(inaPIC16f877&as-' include%(ecladoT$CS#P&as-' end ;+plicacion de lo aprendido L+B)@ lis( p16f877 include %p16f877&inc' include%-acro16f877&inc' config )9:f:3 c*loc< )93) cuen(a1
cuen(a3 endc org ))))2 *anco 1 clrf (ris* clrf (risd *sf (risc,) *anco ) ;Display+nodoCo-un clrf cuen(a1 -o.f cuen(a1,) call DisplayCa(odoCo-un -o./f por(* clrf cuen(a3 -o.f cuen(a3,) call DisplayCa(odoCo-un -o./f por(d Tes(ea *(fss por(c,) go(o Tes(ea go(o Incre-en(ar#nidad Incre-en(ar#nidad incf cuen(a3 csi cuen(a3,&1),IniciaCero#nidad -o.f cuen(a3,) call DisplayCa(odoCo-un -o./f por(d ;segundo &1 (4))-s eu )983 go(o Incre-en(ar#nidad IniciaCero#nidad clrf cuen(a3 -o.f cuen(a3,) call DisplayCa(odoCo-un -o./f por(d incf cuen(a1 csi cuen(a1,&1),IniciaCeroDecena -o.f cuen(a1,) call DisplayCa(odoCo-un -o./f por(* ;segundo &1 (4))-s eu )983 go(o Incre-en(ar#nidad IniciaCeroDecena clrf cuen(a1 -o.f cuen(a1,) call DisplayCa(odoCo-un -o./f por(* ;segundo &1 (4))-s eu go(o Incre-en(ar#nidad include%elec(ronicpic16f877&as-'
)983
end ;acceso por c� digo=Produc(o de .en(a lis( p16f877a include%p16f877a&inc' include%-acro16f877&inc' config )9:f:3 ;rese( onH3)2J c*loc< )93) cla.e1 cla.e3 cla.e: cla.e@ con( endc org ))))2 ;==================================== ;S$CTOR D$ CO"!IE#R+CI� " D$ R$EISTROS call InicioTeclado@9@ *anco 1 *cf (risc,1 clrf TRISD *anco ) ;==================================== ;$s(ado inicial de los regis(ros Inicio clrf PORTD ;PORTD en off clrf cla.e1 clrf cla.e3 clrf cla.e: clrf cla.e@ -o.er con(,&1) ;==================================== ;Progra-a principal ;ingreso de cla.e Repi(e csi por(c,1 ,encendidoled call Teclado@9@ -o.f "u-eroTeclado@9@,) -o./f cla.e1 call DisplayCa(odoCo-un -o./f por(a -ilisegundo &34) -ilisegundo &34) call Teclado@9@ -o.f "u-eroTeclado@9@,) -o./f cla.e3 call DisplayCa(odoCo-un -o./f por(a -ilisegundo &34) -ilisegundo &34)
call
Teclado@9@
-o.f "u-eroTeclado@9@,) -o./f cla.e: call DisplayCa(odoCo-un -o./f por(a -ilisegundo &34) -ilisegundo &34) call Teclado@9@ -o.f "u-eroTeclado@9@,) -o./f cla.e@ call DisplayCa(odoCo-un -o./f por(a -ilisegundo &34) -ilisegundo &34) ;co-parar con la cla.e .erdadera ;::33 csni cla.e1,&:,Cla.e$rror csni cla.e3,&:,Cla.e$rror csni cla.e:,&:,Cla.e$rror csni cla.e@,&:,Cla.e$rror go(o Cla.eCorrec(a Cla.e$rror *sf por(d,) go(o Inicio Cla.eCorrec(a *sf PORTD,1 go(o Inicio encendidoled *sf por(d,) *sf por(d,1 go(o Inicio ;===================================== include%elec(ronicpic16f877&as-' include%(eclado&as-' end