El Archivo P16F84

Post on 30-Sep-2015

6 views 0 download

description

P16F84

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...