Las fases del archivo I: el archivo de oficina y el archivo central. Funciones y actividades
El Archivo P16F84
-
Upload
guillermo-quinteros -
Category
Documents
-
view
2 -
download
0
description
Transcript of El Archivo P16F84
-
::PICParteIIICaptulo5
SimulandolainterrupcinconMPLAB
Antesdecomenzarconlasimulacinvamosaaclararunpequeodetalle,omejordicho...vamosadarrespuestaalapreguntadelmilln...nopensarasquetedejaraas...!!!,noooooooo...!!!
Bueno,antesdequecopieselcdigoenMPLABeintentesensamblarlo,locualseguramentetedarquinientosmilerrores,debessaberqueCuandoinstalasteMPLABallen:
C:\Archivosdeprograma\MPLAB
Seinstaltambinunpequeoarchivitoenelmismodirectorio,llamadoP16F84.INC,Bien,bscaloyunavezlotengasamano...loabres,queleharemosunpardemodificaciones...
Teencontrarsconalgocomoesto...
=================================RegisterDefinitions=================================
WEQUH'0000'FEQUH'0001'
RegisterFiles
INDF EQUH'0000'TMR0 EQUH'0001'PCL EQUH'0002'STATUS EQUH'0003'FSR EQUH'0004'PORTA EQUH'0005'PORTB EQUH'0006'EEDATA EQUH'0008'EEADR EQUH'0009'PCLATH EQUH'000A'INTCON EQUH'000B'
OPTION_REG EQUH'0081'TRISA EQUH'0085'TRISB EQUH'0086'EECON1 EQUH'0088'EECON2 EQUH'0089'
Bueno,esslounapartedelarchivoP16F84.INC,stearchivocontiene losnombresde los registrosconsusrespectivas posiciones de memoria, aquello que nosotros venamos indicando en cada cdigo que bamosescribiendo,yunaqueotracositamscomolosnombresdelosBit'sdecadaunodelosregistros,ysirecuerdassiempredebamosindicarlaposicin0x05paraTRISAy0x06paraTRISB,portantoparaOPTION_REG(registroOPTION)sera0x01,tepreguntars...porqueaqulascosasseventotalmentedistintas...???
Loqueocurre,esquecuandopasasalbanco1...TRISAestquintoenesebanco,esdecirestenlaposicin0x05,lomismoocurreconTRISBen0x06,yporendeOPTION_REGesten0x01,observaahoralosbancosdelaRAMdenuestroprimertutorial...ycomparaconloqueacabamosdever...
Convencido...???.
Eltemaesqueparaevitartenerquedefinirlos,tomaremosaquelloquemarquenrojoylocambiaremospor...
OPTION_REGEQUH'0001'TRISAEQUH'0005'TRISBEQUH'0006'
-
Deahoraenmssiemprequehagamosunprogramaserobligacincolocarenelencabezadodenuestrocdigolasiguientelnea...
#include
Deacuerdo...Ahoraguardamosloscambios,cerramoselarchivoycomenzamosunnuevoproyectoenMPLABalcuallollamaremosINT_LED.pjt,yenlcreamosint_led.asm,copiaselcdigo,lopegasyledasa...
Project>BuildAll
Ycomotodoestperfecto...!!!comenzaremoslasimulacin,tedeberaquedaralgoas...
Noteasustesportodaslasventanasabiertas,sonslo4,ytodasaccesiblesdesdeelmenWindow,laprimeraeselcdigo,laqueestalladoesSpecialFunctionRegisterenlaqueveremoscomocambianlosregistros,ladeabajoes laventanaquenosmuestra lapilaoSTACKy laltimaes ladeAsynchronousStimulus estaltima se encuentra en el men Debug > Simulator Stimulus, cuando la abras configura Stim 1(P) comoRB0 (P), eso har que cuando lo presionemos enve un pulso de nivel alto por el pin RB0, alconfigurarlocomo(P)seconvierteenunpulsador,ahoras,yaestamoslistosparacomenzar...
ReseteamoselMicroopresionamosF6,ytehabrsubicadoenGOTOinicio,ahoravea...
Debug>Run>Animate
yquedartodocomoestenlaimagenanterior
Aquharemosunpardeobservaciones,fjatequeestasenGOTOsueo,staeslasiguienteinstruccinquesedeberaejecutar,peronolohaceyaqueelmicroestdormidograciasalainstruccinSLEEP,observatambinqueenlaventanaSpecialFunctionRegistertodosepintdeazulportantoelmicrosedetuvoyapagcasitodo.ElSTACKestvacoyaquenoseprodujoningunallamada,PORTBesten00000000,esdecirqueelLEDest apagado (RB1=0) y no hay ninguna interrupcin todava (RB0=0), finalmente hchale una mirada alregistroINTCONqueestaen10010000esdecirGIE=1eINTE=1lasinterrupcionesestnhabilitadas
Ahoravienelobueno...
EnvaunpulsoporRB0(P),yversquelainterrupcinhacesaltaralmicroenladireccin0x04,(noesperesverenPORTBqueRB0sepongaa1yaquealconfigurarRB0(P)sloenvaunpulsomomentneoelcualesdifcilnotar),elSTACKseincrementaenunaposicin,yenelregistroINTCONsedeshabilitaGIE,labanderaINTFseponea1,luegoelmicroapuntaaISR,atiendelainterrupcinencendiendoelLED(RB1=1),luegoBorralabandera INTF y con RETFIE vaca la pila habilitando GIE nuevamente para regresar a GOTO sueo donde
-
ejecutarSLEEP,paradormirseyesperaraquepresionesnuevamenteelpulsador...
Bravooooo...!!!
Tienesmuchoparaentretenerte,unajugadaquetepondrdepelos...
ObservaloqueharsconfiguraRB0(P)comoRB0(T),reseteaelmicroycomienzanuevamente, lamayorsorpresa es que cuando lo presiones, RB0 se pondr a 1 y no habr interrupcin, esto es as por queseleccionamos flanco de bajada para la interrupcin en RB0/INT, aquello que hicimos en el Bit6 del registroOPTION,recuerdaseso...???,ok...entoncesdeberahaberinterrupcincuandopresionesnuevamenteRB0yyanodirms...
Bueno...slodejarteelcircuitoparaquelopruebescuandograbeselprogramaenelPIC...
Suerte...!!!,yanobajarlosbrazosqueloprobyfuncionaperfectamente.
Porsitequedandudasdecomofuncionaelprograma,realizalasimulacinenmodoSTEP(conelbotndeloszapatitos),esodeberaresponderatodastusdudas...