Translate

sábado, 17 de octubre de 2015

PROGRAMAS



Código para la programación de la PIC16f877 para los mortoreductores en ensamblador.


;INSTITUTO POLITECNICO NACIONAL
;CECYT 9 JUAN DE DIOS BATIZ
;
;PROYECTO AULA: MPPACMAN (PAC-MAN MULTIJUDAGOR)

;

;GRUPO: 5IM3

;EQUIPO: ##

;INTEGRANTES:

;CRUZ MONTEJO JORGE LUIS

;LINO SUAREZ MARIA DE LOS ANGELES

;VELAQUEZ HERNANDES SANDRA

;TORRES RODRIGUEZ JOSE DESIDERIO

;ZUÑIGA ZAMUDIO ANGEL
;FECHA DE ENTREGA:
;

;COMENTARIO:

;

;---------------------------------------------------------------------------------------------------------------------------------------------------------------

list p=16f84A;
#include "c:\Program Files (x86)\Microchip\MPASM Suite\p16f84a.inc";
;---------------------------------------------------------------------------------------------------------------------------------------------------------------

;====================================================================
;
; Register Definitions

;

;==========================================================================





W EQU H'0000';

F EQU H'0001';





;---------------------------------------------------------------------------------------------------------------------------------------------------------------

;----- Register Files -----------------------------------------------------





STATUS EQU H'0003';

PORTA EQU H'0005';

PORTB EQU H'0006';










;---------------------------------------------------------------------------------------------------------------------------------------------------------------






;-----Bank1------------------

TRISA EQU H'0085';

TRISB EQU H'0086';





;----------------------------------------------------------------------------------------------------------------------------------------------------------------





;DEFINICION DE VARIABLES DEL PROGRAMA EN RAM





Contador1 EQU 0x20;

Contador2 EQU 0x21;

Contador3 EQU 0x22;






;-----------------------------------------------------------------------------------------------------------------------------------------------------------------

;

;----- STATUS Bits -----------------------------------------------------

C EQU H'0000';

DC EQU H'0001';

Z EQU H'0002';





;-----------------------------------------------------------------------------------------------------------------------------------------------------------------

;Definicion de constantes a utilizar





M EQU .255;

N EQU .255;

L EQU .255;

CAR_NULL EQU 00h;


;-----------------------------------------------------------------------------------------------------------------------------------------------------------------





;Definicion de puertos I/O





;----- PORTA Bits -----------------------------------------------------

Sin_UsoRA0 EQU .0;

AV_ADELANTE EQU .1;

AV_ATRAS EQU .2;

AV_DERECHA EQU .3;

AV_IZQUIERDA EQU .4;





progA EQU B'00001';






;----- PORTB Bits -----------------------------------------------------

Mot1 EQU .0;

Mot1_2 EQU .1;

MOT2 EQU .2;

MOT2_2 EQU .3;

Sin_UsoRB4 EQU .4;

Sin_UsoRB5 EQU .5;

Sin_UsoRB6 EQU .6;

Sin_UsoRB7 EQU .7;





progB EQU B'11110000';

;-----------------------------------------------------------------------------------------------------------------------------------------------------------------





;==========================

;====== VECTOR RESET ======


;==========================





vec_reset org 0000h;

clrf pclath;

goto prog_prin;





;-----------------------------------------------------------------------------------------------------------------------------------------------------------------





;=========================================

;====== SUBRUTINA DE INTERRUPCIONES ======


;=========================================





org 0004h;

vec_int nop;





retfie;





;-----------------------------------------------------------------------------------------------------------------------------------------------------------------





;===============================================

;====== SUBRUTINA DE INI. DE REG. DEL PIC ======


;===============================================





prog_ini bsf status,RP0; Ponte en el Banco 1 de RAM.

movlw 0x00;

movwf option_reg ^0x80;

movlw progA;

movwf TRISA ^0x80;

movlw progB;

movwf TRISB ^0x80;

bcf STATUS,RP0; Ponte en el banco 0 de la RAM.





return;

;-----------------------------------------------------------------------------------------------------------------------------------------------------------------





;================================

;====== PROGRAMA PRINCIPAL ======


;================================





prog_prin call prog_ini

;------------------------------------------------ MOVIMIENTOS PRIMARIOS, AVANCES;----------------------------------------------------------------------------------

INICIO BTFSC PORTA,1;

GOTO INI2;

BTFSC PORTA,2;

GOTO INI2;

GOTO GIROS;






INI2 BTFSS PORTA,1;

GOTO ATRAS;

BTFSS PORTA,2;

GOTO ADELANTE


GOTO OFF;





ADELANTE BTFSC PORTA,2;

GOTO OFF;


MOVLW CAR_NULL;

MOVWF PORTB;

MOTORES BCF PORTB,1;

BCF PORTB,3;

BSF PORTB,0;


BSF PORTB,2;


BTFSS PORTA,1;

GOTO INICIO

GOTO MOTORES;






ATRAS BTFSS PORTA,2;


GOTO OFF;


MOVLW CAR_NULL;

MOVWF PORTB;

MOTORESR BCF PORTB,0;

BCF PORTB,2;

BSF PORTB,1;

BSF PORTB,3;

BTFSS PORTA,2;

GOTO INICIO;

GOTO MOTORESR;





OFF MOVLW CAR_NULL;


MOVWF PORTB


NOP;

GOTO INICIO;

;---------- MOVIMEINTOS SECUANDARIOS (GIROS)---------------------------------------------





GIROS BTFSS PORTA,3;

GOTO IZQUIERDA;

MOVLW CAR_NULL;

MOVWF PORTB;

DERECHA BSF PORTB,0;

BTFSS PORTA,3;

GOTO OFF;

GOTO DERECHA;





IZQUIERDA BTFSS PORTA,4;

GOTO OFF;

MOVLW CAR_NULL;

MOVWF PORTB;

GOTO IZQ;

IZQ BSF PORTB,2;

BTFSS PORTA,4;

GOTO OFF;

GOTO IZQ;

;-----------------------------------------------------------------------------------------------------------------------------------------------------------------




end;



CÓDIGO EN ENSAMBLADOR PARA LA PROGRAMACIÓN DE LA PIC16f84.



La programación consiste en luces rítmicas que se colocaran en el Pacman y Blinky (el fantasma rojo)



;INSTITUTO POLITECNICO NACIONAL.

;CECYT 9 JUAN DE DIOS BATIZ.

;

;PROYECTO AULA.

;MANEJO DE 8 LEDS.

;

;EQUIPO: GRUPO:


;

;INTEGRANTES:

;

;

;FECHA DE ENTREGA:_____________________________.

;

;DESCRIPCION: ESTE PROGRAMA TIENE LA FINALIAD DE CONTROLAR EL ENCEDIDO Y EL APAGADO DE 8 LEDS

;

;----------------------------------------------------------------------------------------------------------------------------------------------------------------

list p=16f84a;Define el microcontrolador a usar.

#include "c:\Program Files (x86)\Microchip\Mpasm Suite\p16f84a.inc"; Adjunta las funciones de los registros especiales.







;----------------------------------------------------------------------------------------------------------------------------------------------------------------

;Definición de variables del programa en RAM.




Contador1 EQU 0x20;

Contador2 EQU 0x21;

Contador3 EQU 0x22;

;----------------------------------------------------------------------------------------------------------------------------------------------------------

;Definición de constantes a utilizar.

M EQU .12;

N EQU .255;

L EQU .255;

;---------------------------------------------------------------------------------------------------------------------------------------------------------

;Definición de caracteres.

Car_A EQU 0x07;

Car_b EQU 0x0E;

Car_C EQU 0x1C;

Car_d EQU 0x38;

Car_E EQU 0x70;

Car_F EQU 0xE0;

Car_g EQU 0xC1;

Car_H EQU 0x83;









;Puerto A.

CLk_Pto EQU .0;

Sin_UsoRA1 EQU .1;

Sin_UsoRA2 EQU .2;

Sin_UsoRA3 EQU .3;

Sin_UsoRA4 EQU .4;

Sin_UsoRA5 EQU .5;

Sin_UsoRA6 EQU .6;

Sin_UsoRA7 EQU .7;




progA EQU B'01111111';Define la configuración de los bits del puerto A.

;Puerto B.

D0_sega EQU .0;

D1_segb EQU .1;

D2_segc EQU .2;

D3_segd EQU .3;

D4_sege EQU .4;

D5_segf EQU .5;

D6_segg EQU .6;

D7_segh EQU .7;




progB EQU B'00000000';Define la configuración de los bits del puerto B.

;

;----------------------------------------------------------------------------------------------------------------------------------------------------------

;==================

;== Vector Reset ==

;==================

org 0000h;

vec_reset clrf pclath;

goto prog_prin;

;----------------------------------------------------------------------------------------------------------------------------------------------------------

;=================================

;== Subrutina de Intercepciones ==

;=================================

org 0004h;

vec_int nop;





retfie;

;---------------------------------------------------------------------------------------------------------------------------------------------------------

;=============================================

;== Subrutina de Inicio de Registro del PIC ==

;=============================================

prog_ini bsf status,RP0;Ponte en el banco 1 de RAM.

movlw 0x34;

movwf option_reg ^0x80;

movlw progA;

movwf trisA ^0x80;

movlw progB;

movwf trisB ^0x80;

bcf status,RP0;Banco 0 de la RAM.





clrf porta;


return;





;--------------------------------------------------------------------------------------------------------------------------------------------------------

;========================

;== Programa principal ==

;========================

prog_prin call prog_ini;

repite movlw car_A ;

movwf portb;

bsf porta,CLK_Pto;

nop;

bcf porta,CLK_Pto;

call retraso








movlw car_b;

movwf porta;

bsf portb,CLK_Pto;

nop;

bcf portb,CLK_Pto;

call retraso







movlw car_c;

movwf porta;

bsf portb,CLK_Pto;

nop;

bcf portb,CLK_Pto;

call retraso



movlw car_d;

movwf porta;

bsf portb,CLK_Pto;

nop;

bcf portb,CLK_Pto;

call retraso





movlw car_e;

movwf porta;

bsf portb,CLK_Pto;

nop;

bcf portb,CLK_Pto;

call retraso






movlw car_f;

movwf porta;

bsf portb,CLK_Pto;

nop;

bcf portb,CLK_Pto;

call retraso





movlw car_g;

movwf porta;

bsf portb,CLK_Pto;

nop;

bcf portb,CLK_Pto;

call retraso

movlw car_h;

movwf porta;

bsf portb,CLK_Pto;

nop;

bcf portb,CLK_Pto;

call retraso


;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>









retraso movlw M;

movwf Contador3;

Loop3 movlw N;

movwf Contador2;

Loop2 movlw L;

movwf Contador1;

Loop1 decfsz Contador1,f;

goto Loop1;

decfsz Contador2,f;

goto Loop2;

decfsz Contador3,f;

goto Loop3;

return;

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
goto repite


;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

end;


No hay comentarios:

Publicar un comentario