Programas
LIST P=16F84A
INCLUDE
DOWN EQU 0X10
ORG 0X2007
DW 0X3FFA
ORG 0
BSF STATUS,RP0 ; seleccionar el Bank1
CLRF TRISB ; programar como salida el PORTB
BCF STATUS,RP0 ; seleccionar el Bank0
X1
MOVLW .125 ; mover el dato 125 a W
MOVWF DOWN ; mover el dato 125, de W a DOWN
X2
MOVWF PORTB ; mostrar el datopor el PORTB
CALL TIME ; llamar a la rutina de retardo
DECF DOWN,F ; decrementar el dato de DOWN
MOVFW DOWN ; mover el nuevo dato de DOWN a W
XORLW -.1 ; comparar el dato de W con -1
BTFSC STATUS,Z ; saltar si el dato no es igual a -1
GOTO X1 ; saltar a X1
MOVFW DOWN ; recuperar el dato del registro DOWN
GOTO X2 ; saltar a X2
; *** RUTINA DE RETARDO:APROX. 1 SEGUNDO ***
TIME
MOVLW .10
MOVWF 0X40
J1
CALL MS100
DECFSZ 0X40,F
GOTO J1
RETURN
MS100
MOVLW .100
MOVWF 0X41
J3
MOVLW .249
MOVWF 0X42
J2
NOP
DECFSZ 0X42,F
GOTO J2
DECFSZ 0X41,F
GOTO J3
RETURN
END
2. Contador MOD 2547 UP, en los PORTA y PORTB.
LIST P=16F84A
INCLUDE
PA EQU 0X10
PB EQU 0X11
ORG 0X2007
DW0X3FFA
ORG 0
BSF STATUS,RP0 ; seleccionar el Bank1
CLRF TRISA ; programar como salida el PORTA
CLRF TRISB ; programar como salida el PORTB
BCF STATUS,RP0 ; seleccionar el Bank0
X5
CLRW ; poner a 0 el registro de trabajo W
MOVWF PA ; mover el dato, de W al registro PA
X4
MOVWF PORTA ; mostrar el dato por el PORTA
CLRW ; poner a 0 el registro detrabajo W
MOVWF PB ; mover el dato, de W al registro PB
X2
MOVWF PORTB ; mostrar el dato por el PORTB
CALL TIME ; llamar a la rutina de retardo
INCF PB,F ; incrementar el dato de PB
MOVFW PB ; mover el nuevo dato de PB a W
XORLW .0 ; comparar el dato de W con 0
BTFSC STATUS,Z ; saltar si el dato no es igual a 0
GOTO X1 ; saltar a X1
MOVFW PB ; recuperarel dato del registro PB
GOTO X2 ; saltar a X2
X1
INCF PA,F ; incrementar el dato de PA
MOVFW PA ; mover el nuevo dato de PA a W
XORLW .9 ; comparar el dato de W con 9
BTFSC STATUS,Z ; saltar si el dato no es igual a 9
GOTO X3 ; saltar a X3
MOVFW PA ; recuperar el dato del registro PA
GOTO X4 ; saltar a X4
X3
MOVFW PA ; recuperar el dato del registro PAMOVWF PORTA ; mostrar el dato por el PORTA
CLRW ; poner a 0 el registro de trabajo W
MOVWF PB ; mover de W al registro PB
X6
MOVWF PORTB ; mostrar el dato por el PORTB
CALL TIME ; llamar a la rutina de retardo
INCF PB,F ; incrementar el dato de PB
MOVFW PB ; mover el nuevo dato de PB a W
XORLW 0XF3 ; comparar el dato de W con 0XF3
BTFSCSTATUS,Z ; saltar si el dato no es igual 0XF3
GOTO X5 ; saltar a X5
MOVFW PB ; recuperar el dato del registro PB
GOTO X6 ; saltar a X6
; *** RUTINA DE RETARDO: APROX. 1 SEG. ***
TIME
MOVLW .10
MOVWF 0X40
J1
CALL MS100
DECFSZ 0X40,F
GOTO J1
RETURN
MS100
MOVLW .100
MOVWF 0X41
J3
MOVLW .249
MOVWF 0X42
J2
NOP
DECFSZ 0X42,F
GOTO J2
DECFSZ0X41,F
GOTO J3
RETURN
END
3. Contador decimal por el PORTB…
0123456
123456
23456
3456
456
56
6
LIST P=16F84A
INCLUDE
CUENTA EQU 0X10
INC EQU 0X11
ORG 0X2007
DW 0X3FFA
ORG 0
BSF STATUS,RP0 ; seleccionar el Bank1
CLRF TRISB ; programar como salida el PORTB
BCF STATUS,RP0 ; seleccionar el Bank0
X3
MOVLW .0 ;mover el dato 0 a W
MOVWF INC ; mover el dato 0, de W a INC
X4
MOVFW INC ; mover el dato de INC a W
MOVWF CUENTA ; mover el dato de W a CUENTA
X2
MOVWF PORTB ; mostrar el dato por el PORTB
CALL TIME ; llamar a la rutina de retardo
INCF CUENTA,F ; incrementar el dato de CUENTA
MOVFW CUENTA ; mover el nuevo dato de CUENTA a W
XORLW .7 ; comparar el dato de...
Regístrate para leer el documento completo.