Está en la página 1de 64

/ DESCARGA GRATUI / / TA /

"intao = 2 , nm e ro 6" / SEPTI BRE 2009 */ * EM

de s arrol de una l ra e n C para aprov ch ar l o ibre e t odo e l e ncial e s t dis pl pot de os ays

una bibl e ca PALpara PI iot C18 m s un puado de com pone nt s al e canz an para ge ne rar s e als de TVe n bl e anco y ne gro

Pre s e nt acin de l " a Com pe t ncia Nacional Robt a 7m e de ica"

.s t f af
nm e ro = 6;ao = 2; Dire ccin, Re daccin y Corre ccin: Arie l az z e s i Pal Arge nt ina arie l az z e s i@ gm ail pal .com Dis e o y Diagram acin: L ucas M art Tre s e r n Arge nt ina l t s e r@ gm ail m re .com Cons e j Edit o orial : M ario Sacco Arge nt ina s e rv .s e rv ys t m @ gm ail ice is e .com Alj e andro Cas anov a Arge nt ina inf .pic.s uk y@ l e .com .ar iv Pabl o Es paa q uick bas ic@ t rra.e s e Bruno Gav ando Francia bruno.gav and@ ad-v ore m .f al r

.indice

M dul PI TRAI o C NER 28

PI C16F628A e n as s e m blr (ii) e L ra de grf ibre icos para GL CD T cl m at e ado ricial n PSI e 7m a Com pe t ncia de Robt e ica Brj a digit de pre cis in ul al PI e n t TV Un C u !

0x05 0x0B 0x18 0x23 0x26 0x29 0x2E

De s carga Grat a. uit Es t cont nido s e rige por l l ncia e e a ice de Cre at e Com m ons ice ncia Cre at e iv L iv Com m ons At ribucin-No Com e rcial -Sin O bras De riv adas 3.0

.e dit orial
//pgina 0x04

Dos m e s e s h an pas ado de s de l s al de lnm e ro cinco de l a ida a , y t com o prom e t os , t ne s e n t pant l una nue v e dicin. al im ie u al a a Es t v z h e m os s um ado col a e aboradore s y t m as , com o para q ue cada v z e e m s lct s e ncue nt al e ore ran guna art o q ue ls re s ul de ut idad. icul e t e il Sin dudas , e l" acont cim ie nt m s im port e q ue t o l e o" ant uv ugar e n l m e s e s os q ue pas aron de s de l ul a v z q ue e s crib una e dit a t im e orial para l re v t f a is a ue l cada de l e rv a s idor q ue al a a uCont y e l oro. Son cos as q ue pas an: e l oj rol f h ardw are pue de f l , v al ar y aya s i l h ace !. Durant una s e m ana e s t im os o e uv f ra de l a. ue ine , de Elct e rnica y Se guridad Digit , al nue s t w e bm as t r de cabe ce ra, h iz o m al ro e abare s para conv rt una s e rie de e ir de s prolos arch iv de re s pal nue v e nt e n una pgina w e b f ij os do am e uncional . Es t f ra de l a una s e m ana im pl s e r dado de baj de l ndice s de ar ue ine ica a os Googl, e nt ot cos as . Pas am os de l 2600 v it diarias q ue t nam os e re ras as is as e ant s de l cras h , a unas 100 e n l dos o t s das pos t riore s a l e os re e a re s t auracin de lback up. Sin e m bargo, e n t s s e m anas v v os a t ne r e l re olim e t ico us ual Quie ro aprov ch ar e s t e s pacio para agrade ce r l pacie ncia y raf . e e a f l ide idad de nue s t v it e s . ros is ant Se guim os s um ando proye ct y curs os . Com o s ie m pre , h ay v dad de os arie cont nidos com o para q ue t e odos e ncue nt n al de ut idad. Elq ue re cin re go il com ie nz a a e xpe rim e nt con l e lct ar a e rnica y program acin de m icrocont rol adore s e n lnguaj C s e guram e nt s e s e nt m as cm odos con l dis pl e e e ir os ays GL CD (Graph ic L CD) l go de le r e lart o q ue l de dicam os e n e s t ue e icul e e nm e ro. Para q uie ne s gus t de program ar e n BASI h e m os pre parado un an C, art o s obre com o ge s t icul ionar t cl e ados m at ricials de s de e lBASI de lPI e C C Sim ul or I at DE. Se guim os con e le xce lnt curs o de program acin de PI e n as s e m blr e e Cs e , e s pe cial e nt e nf m e ocado a uno de l m ode l m as e xit os de M icroch ip: e l os os os 16F628A. Si e s t s iguie ndo l s e rie de art os de dicados a l cons t s a cul a ruccin de le nt nador para PI , t gus t re Cs e ar s abe r q ue ya t ne m os l t e lm dul e is o o para PI de 28 pine s . e l Cs Es com plm e nt ide al e o para e l curs o de as s e m blr! e Por ul o, s i an no conoce s nue s t f t im ro oro aprov ch am os para re com e ndart e e q ue pas e s por lEs t publ . a icacin s ol re coge al o gunos de l t m as q ue al os e l s e t an, y e lorm at PDF no pe rm it ni l col rat f o e a aboracin ni e l e rcam bio de int opinione s q ue t ne l ie ugar e n e lf oro. Se guram e nt podrs apre nde r m uch o e m s v it is ndol pe ridicam e nt y, s obre t o e odo, ayudarnos a m e j orar l re v t a is a. as t e l H a prxim o nm e ro! Foro uCont : h tp:/w w w .ucont .com .ar/oros m finde x.ph p rol t / rol f / Elct e rnica y Se guridad Digit : h tp:/w w w .m axis im onaz z i.com .ar al t /

m dul PI TRAI o C NER 28


Es t e s t rce r m dul de nue s t e nt nador Su f e e o ro re . uncin e s l de s e rv com o a ir s oport a l m icrocont adore s PI de 28 pine s , com o e l e os rol C 16F874A. Al igual ue q s us h e rm anos , e m pla un PCB de una s ol cara, por l q ue s u m ont e de be ra e a o aj s e r pos ibl an para aq ue l e s t e l os udiant s o af e icionados q ue e s t com e nz ando n t rans it e s t apas ionant cam ino. ar e e
/ por: Arie l az z e s i / / Pal / arie l az z e s i@ gm ail pal .com

Siguie ndo con l s e rie a de pl acas de s t inadas a f orm ar part de nue s t e nt nador e ro re m odul PI TRAI ar C NER, v os am a v r com o cons t e ruir e l dum l q ue pe rm it re al ar e xpe rio e iz m e nt con PI de 28 pine s . os Cs Dado q ue e l e o de l dis circuit y l pl de circuit im pre o a aca o s o s e as e m e j m uch o a l a as dos ant riore s (PI TRAI e C NER 40 y PI TRAI C NER 18), s ol o v re m os s us punt m s re e os lv e s , pudie ndo e l lct e ant e or cons ul l ot t ar os ros art os cul de l s e rie para conoce r m s a de t ls int re s ant s s obre e l al e e e proye ct Aligualq ue ant s , o. e t ne m os e q ue re com e ndar f rt m e nt l cons ul de l ue e e a t a as h oj de dat as os de l ch ips os q ue q ue ram os pinch ar e n e s t pl a aca, ya q ue a pe s ar de q ue M icroch ip dis t ribuye l a f uncin de cada pin cas i s ie m pre de l m is m a f a orm a, e s t o no s e garant a e n e l iz 100% de l m ode l . os os

Elm dul cons is t bs io e cam e nt e n un z cal e ncare o gado de al ar alm icrocont aoj rol dor baj prue ba, un m e canis m o o de RESET un cone ct q ue , or pe rm it l program acin de l e a int grado s in re t o de l e irarl a pl aca, una s e rie de cone ct s ore I DC e ncargados de com unicar al m dul con l pl o as acas de am pl iacin pre v t (o con l is as as q ue e l lct de s arrol ), una e or l e et apa de al e nt im acin y un par de L EDs y puladore s de s t s inados a prov e r una m nim a e capacidad de e nt rada y s al ida onboard. L al e nt a im acin de l m dul s e h a re s ue l m e diant o t o e uno de l popul s re gul os are adore s de v t e int grados de l ol aj e a s e rie L 78xx. Se t a de un M rat L 7805, q ue pue de proporcioM nar 5V pe rf ct e nt e s t e s e am e abl a part de una f nt de ir ue e corrie nt cont e inua con una t ne s in de e nt 7.5 y 15V Una borre .

//pgina 0x05

//pgina 0x06

ne ra de dos t ornil pe rm it l os e al e nt a l pl im ar a aca, y un diodo 1N4007 prot ge al e circuit de una cone xin con o l pol a aridad e q uiv ocada. T al com o re com ie nda l h oj de a a dat os de l re gul ador de v t e , h e m os col ol aj ocado l os dos conde ns adore s de 0.1 uF de rigor Ade m s , un . conde ns ador e lct t e rolico de 470uF/ 16V f t il ra e l poco rippl q ue e pue da h abe r e s capado al f t il ro de l a f nt e xt rna, y un diodo ue e e L ED, e n s e rie con un re s is t or de 220V s e e ncie nde para , indicarnos q ue e l circuit o e s t al e nt im ado. T com o ocurra con al l pl as acas para m icrocont rol adore s de 18 o 40 pine s , e n l ugar de ut iz ar un cris t il al com o os cil ador de l PI C h e m os col ocado 3 de e l , l os t bie n s e lccionabls m e am e e diant una s e rie de j pe rs e um (ide nt icados com o JP4, JP5 if y JP6). De e s t m ane ra a podre m os probar nue s t ros program as o m icrocont arol dore s a dif re nt s f cue ne e re cias de t rabaj o. L os dos conde ns adore s de 22pF com plt e an e s t part de l a e circuit En cas o de ut iz ar o. il PI Cs q ue f uncione n a m s de 20 M H z , e s pos ibl q ue e h aya q ue cam biarl os por conde ns adore s de 15pF o al go m e nos . Re corde m os q ue s i s e col m s de un oca j pe r a l v z e lm icroconum a e t ador no f rol uncionar. En cuant a l cris o os t e s , h e m os e lgido (com o al e pue de v rs e e n e le s q ue m a e e l rico) v ore s de 4M H z , ct al 8M H z y 20M H z , pe ro nada im pide ut iz ar ot . Ellct il ros e or //pgina 0x07

pue de cam biarl a gus t os o. En e lcas o ut iz ar l il os puladore s o L s EDs e xis t nt s e n l pl e e a aca, para ingre s ar (o re pre s e nt ar) dat a os (o de ) nue s t program a, de ro be re m os m ov r l j pe rs e os um JP1 y JP2, q ue pe rm it n s e e lccionar s i cone ct os al e am PI e l ED o e l s ador C L pul .

Si de s e am os s e lccionar l e os puladore s , de be m os re cors dar q ue e s t pone n e lpin os corre s pondie nt a 5V cuane do s on pre s ionados . M ie nt q ue e s t e n re pos o, l ras n as e nt radas s e m ant ne n a ie GND a t s de s e ndos rav re s is t s de 10K . ore L cone ct s s igue n os ore

e n e l nt nador e re . L nica e xce pcin, o a de s v de l norm al q ue o o , pue de s v r e n e l diagram a e de l cone ct s e s e n l os ore os pine s corre s pondie nt s e a RB6 (CL CK ) y RB7 (DAO TA), ya q ue pos e e n un re s is t or de 220 oh m s e n s e rie . Cum pln con l f e a uncin de pe rm it program ar e l ir PI m e diant e l cone ct C e or I CSP s in ne ce s idad de re t irar e lcabl q ue cone ct e a e le nt nador con e lm odul re o de t urno. Por s upue s t s i l o, o de s e as pue de s re e m pl ar az e s os dos re s is t s por s e nore dos pue nt s . Sol de be rs e o q uit e l cabl pl ar e ano a l a h ora de re program ar e l C. PI Elpin 1, q ue corre s ponde al RESET e n l os m icrocont adore s PI rol C de 28 pine s com pat e s con ibl e s t e nt nador e s t unido a e re , a un pulador a t s de un s rav re s is t de 470 oh m s y a + V or m e diant ot de 4.7K y un e ro diodo 1N4148. Al pre s ionar e lpulador e lm icrocont as , rol dor s e re s e t a. Durant e l e e f uncionam ie nt norm al de l o program a, e lpin e s t a + V a . El diodo im pide l problos e m as q ue podran s urgir e nt re l al e nt as im acione s de l m dul y de l program ador al o ut iz ar e l il cone ct I or CSP . l m is m as norm as q ue e xpl as icam os e n e l cul principal art o de nue s t re v t nm e ro 4, ra is a as q ue no de be ras t ne r e problm as a l h ora de e a de t rm inar l f e a uncin de cada pin. Com o re gl ge ne ral a , re cue rda q ue de l pine s os e xt riore s de cada cone ct e or //pgina 0x08 s ol s e e m pla uno (+ V y o e ) l ot os ros cuat e s t ro n s in cone ct . De l cinco int rior ar o e , uno corre s ponde a GND y l ot os ros 4 a dat . De be rias os t ne r a m ano e lgraf e ico con l f a uncin de cada pin a m ano cuando de cidas h ace r al gn program a para cargar

Si ya h as m ont ado al guno de nue s t ros proye ct , est os ars alt o de q ue ant bas t a con de s cargar e l arch iv PDF corre s pondie nt o e alPCB de s de nue s t W e b, ra y m e diant l f a q ue m s e a orm t gus t (pue de s us ar e l e e

m t odo de l pl a anch a xpl e icado e n l re v t num e ro 1) a is a de be s t rans f rir e ldis e o a e un t o de PCB v n. roz irge L go, l s um e rge s e n un ue o bao de cl oruro f rrico; y por ul o, l go de una bue na t im ue l pie z a, l h ace s l aguj im e os e ros . A l h ora de s ol l a dar os com pone nt s t n e n cue nt e e a q ue por l ge ne ral re s ul o t a m s s e ncil s i prim e ro col l o ocas l q ue s on m s baj , os os com o l pue nt s , diodos , os e z cal y re s is t s ; y de j os ore as para e lf inall cone ct s , os ore re gul ador de v t e y conol aj de ns adore s . As e grat de e q ue , inv unt ol ariam e nt , no e h ace s un pue nt e nt dos e re punt de l os circuit o. Pre s t e s pe cial at na e cin a l h ora de s ol l a dar os com pone nt s q ue t ne n poe ie l aridad com o l diodos , , os L EDs y conde ns adore s e lce t t rolicos . T bin e s im poram t e q ue col ue s e lz cal ant oq o de s t inado al PI C en l a dire ccin corre ct ya q ue de a, h ace rl m alpue de s conf o undirt cuando ins e rt s e lm ie e crocont ador dandol rol , o.

Una vz e m ont ado t odo, s in col ocar e lPI e n C s u l , al e nt e lcircuit ugar im a o con una t ns in de e nt 7.5 e re y 12V El ED Pow e r be . L de ra e nce nde rs e . Si e s as , v rif e ica con un m ul e t t m ro q ue l t ns in e nt l pia e re os ne s 8 (GND) y 20 (V cc) de l z cal de l m icrocont ador o rol s e a de 5V T bin pue de s . am v rif e icar q ue e n l cone ct os ore s de e xpans in e s t pre s e nt e s a t ns in. Si t e e odo e s t bie n, ya t ne s l t t a ie is o u e nt nador Cas o cont re . rario, re pas a l s ol as daduras y pos icin de l com pone nt s . os e

Ya pode m os com e nz ar a e xpe rim e nt con PI ar Cs de 28 pine s . H ay m uch o para apre nde r con e l y, s i l os de cide s e ncarar l cons a t ruccin de al guno de l os m dul acce s orios (com o e l os m dul de 8 E/ publ o S icado e n e lnm e ro ant rior de l e a re v t uCont ), podrs m ul is a rol t icar por 100 l pos ibil ipl as idade s de e s t e nt nador e re .

//pgina 0x09

PI C16F628A e n as s e m blr e
s e gunda part e
En e s t s e gunda part de lt orialde program acin e n lnguaj as s e m blr nos a e ut e e e int roducire m os e n e l ane j de l ccionam ie nt indire ct y e n e l undo de l m o dire o o m as int rrupcione s de lm icrocont ador Expl e rol . icare m os q u s on, para q u s irv n, de e cunt dis pone m os y s u im plm e nt as e acin e n nue s t ros program as . anos a l M a obra!
/ por: Alj / e andro Cas anov / a / inf .pic.s uk y@ l e .com .ar iv

m odo de dire ccionam ie nt o indire ct s e o e m plan dos e re gis t ros e s pe cials : e l e FSR y e lNDF I

En l program acin de a l m icrocont adore s PI l os rol C a m ayora de l ins t as ruccione s e m plan dire ccionam ie nt die o re ct pe ro t bin e s pos io, am bl q ue ope re n e n un m odo e de dire ccionam ie nt indire co t Para e s t m odo s e e m plo. e e an dos re gis t ros e s pe cials : e e lFSR y e lI NDF (e s t l o e t im no e s un re gis t f ico). ro s El re gis t ro FSR se e m pla para s e al o apunt e ar ar a una dire ccin de l m e m oria a RAM cuyo cont nido pue de s e r e ldo o e s crit de f a indire ce o orm t e m plando cualuie r ins t a e q ruccin q ue us e com o ope rando al re gis t I ro NDF Es t f a de . a orm dire ccionam ie nt e s part aro icul m e nt t cuando s e m ane j e il an t as o arre gl de dat . abl os os Ut iz are m os e l dire ccioil nam ie nt I o ndire ct para cre ar l o a t a de cont de l pl de 7 abl rol Dis ay s e gm e nt y e n e s t cas o no os e ut iz are m os e lpulador s ol s e il s , o h ar e lcont ador aut t om ico de 0 a 9 . Al iniciar e l icrocont am rol

dor cargare m os l t a para a abl cont ar e l dis pl de 7 s e grol ay m e nt e n l m e m oria de dat os a os (GPR) con dire ccionam ie nt ino dire ct o. L go, alre al ar e lconue iz t o le re m os e lcdigo corre s e e pondie nt al ace nado y l e ne m o v m os al RTB. iare PO Aq u ut iz am os e l re gis il t STATUS nue v e nt , pe ro ro am e para cont de l ope racione s rol as arit t m icas . Se guardar e lcdigo de 7 Se gm e nt de l al , os 0 9 e n l re gis t os ros 0x30 a 0x39 . Si nue s t cont ro ador nos dire cciona e l gis t ubicado e n 0x3A, q ue re ro s e ria e l 10 l re s e t am os y , o e dire ccionam os e l , s e a re gis 0 t ro 0x30. Es t l h ace m os o o re al ando l re s t de lre gis t iz a a ro s e lccionado y 0x3A, FSR e 0x3A, y s i e lre s ul t ado e s ce ro, re s e t am os . e El Z (Z e ro) de l gis t bit re ro STATUS, e s t indica s i una e ope racin l gica o arit t m ica re al ada da com o re s ul iz t ado ce ro. T bin t ne m os e lbit C am e

//pgina 0x0B

;DI RECTO : ;De f inim os re gis t e n l m e m oria de dat .ro a os M iRe gis t ro e q u 0x20 ;Ubicado e n 0x20.;Cargam os dat e n e l gis t o re ro.m ovw 0x8A l m ov fM iRe gis t w ro ;L e m os dat de l gis t e o re ro.m ov w M iRe gis t f ro m ov fPO RTB w ;I NDI RECTO : ;Cargam os dat e n e l gis t o re ro.m ovw 0x20 l m ov fFSR w m ovw 0x8A l m ov fI w NDF ;L e m os dat e n e l gis t e o re ro.m ovw 0x20 l m ov fFSR w m ov w I f NDF m ov fPO RTB w

; ;M iRe gis t = 0x8a.ro ;M ov m os e l al q ue t nga M iRe gis t a W .e v or e ro ;Por e j m pl l cargam os e n PO RTB.e o, o

; ;Dire ccionam os Re gis t de dat ubicado e n 0x20.ro os ; ;Cargam os re gis t dire ccionado con e l al 0x8A.ro v or

; ; Dire ccionam os Re gis t de dat ubicado e n 0x20.ro os ;M ov m os e l al q ue t nga e l gis t s e lccionado a W .e v or e re ro e ;Por e j m pl l cargam os e n PO RTB.e o, o

(Carry) (0), q ue e n ins t ruccione s arit t m icas s e act a iv cuando s e pre s e nt a un acarre o de s de e l bit m as s ignif iv de lre s ul icat o t ado, e l bit DC (Digit Carry), q ue e n ope racione s arit t m icas s e act a s i ocurre acarre o e nt iv re e l 3 y bit4. bit

//pgina 0x0C

;**** Encabe z ado **** L tp=16f is 628A ;l tdire ct e t de f proce s s or is iv o ine #incl <p16f ude 628A.inc> ;proce s s or s pe cif v ic ariabl de f ions e init _ _ CO NFI _ CP_ O FF & _ W DT_ O FF & _ BO DEN_ O N & _ PW RTE_ O N & G _I NTO SC_ O SC_ NO CL O UT & _ DATA_ CP_ O FF & _ L P_ O FF & _ M CL K V RE_ O N ; **** De f inicin de v ariabls **** e Cont ador equ 0x20 ;Se lccionam os pos icin e n l RAM (GPR) para guardar e a Cont ador1 e q u 0x21 ;Re gis t ut iz ado e n de m ora.ro il Cont ador2 e q u 0x22 ;Re gis t ut iz ado e n de m ora.ro il Re s e t org 0x00 ;Aq u com ie nz a e l icro.m got I o nicio ;Sal a inicio de m i program a.t o ; **** Program a principal **** ; **** Conf iguracin de pue rt **** os org 0x05 I nicio bs f STATUS,RP0 ;Pas am os de Banco 0 a Banco 1.cl rf TRI SB ;PO RTB com o s al ida.bcf STATUS,RP0 ;Pas o de l Banco 1 al Banco 0 cal Conf T a ;Cargam os re gis t con Cdigo de 7 s e gm e nt .l ig_ abl ros os m ov w I f NDF ;L e m os cdigo de 7 Se gm e nt para e l e os CERO .m ov fPO RTB w ;M os t os e l ram CERO .; **** Bucl de v ual acin **** e is iz Bucl e cal De m ora_ 19 0m s l ;De m ora para v ual ar Dis pl is iz ay incf FSR,1 ;I ncre m e nt os Punt ro.am e m ovw 0x3A l ;Cons ul os s i s e pide cdigo para m os t " , t am rar 10" s ubw f FSR,0 ;s i e s as re s e t am os FSR, apunt a 0x30--> " .e a 0" bts s STATUS,Z f ;Si Z =1 --> 0x3A - FSR = 0.got M ue s t Dis pl o ro_ ay ;No, m ue s t dis pl ro ay.m ovw 0x30 l ;Si re s e t o punt ro.e e m ov fFSR w ; M ue s t Dis pl ro_ ay m ov w I f NDF ;L o Re gis t q ue apunt FSR.e ro a m ov fPO RTB w ;L cargo e n PO RTB.o got Bucl o e ;Cont inuo cont o.e ; **** De m ora **** De m ora_ 19 0m s m ovw 0xFF l ; m ov fCont w ador1 ;I niciam os cont ador1.Re pe t icion1 m ovw 0xFF l ; m ov fCont w ador2 ;I niciam os cont ador2 Re pe t icion2 de cf z Cont s ador2,1 ;De cre m e nt Cont a ador2 y s i e s 0 s al.e got Re pe t o icion2 ;Si no e s 0 re pe t os cicl im o.de cf z Cont s ador1,1 ;De cre m e nt Cont a ador1.got Re pe t o icion1 ;Si no e s ce ro re pe t os cicl im o.re t urn ;Re gre s a de l s ubrut a ina.//pgina 0x0D

; **** Cargam os t a e n m e m oria **** abl Conf T a ig_ abl m ovw 0x30 ; l m ov fFSR ;Dire ccionam os e l gis t 0x30 de l m e m oria RAM (GPR).w re ro a m ovw 0x3F ;Cargam os e l l cdigo para m os t e l rar CERO .m ov fI w NDF ;L guardam os donde apunt FSR --> 0x30.o a ; .................... incf FSR,1 ;I ncre m e nt os FSR, ah ora apunt a 0x31.am a m ovw 0x06 ;Cargam os cdigo para UNO .l m ov fI w NDF ;L guardam os donde apunt FSR.o a ; .................... incf FSR,1 ;I ncre m e nt os FSR, ah ora apunt a 0x32.am a m ovw 0x5B ;Cargam os cdigo para DO S.l m ov fI w NDF ;L guardam os donde apunt FSR.o a ; .................... incf FSR,1 ;I ncre m e nt os FSR, ah ora apunt a 0x33.am a m ovw 0x4F ;Cargam os cdigo para TRES.l m ov fI w NDF ;L guardam os donde apunt FSR.o a ; .................... incf FSR,1 ;I ncre m e nt os FSR, ah ora apunt a 0x34.am a m ovw 0x66 ;Cargam os cdigo para CUATRO .l m ov fI w NDF ;L guardam os donde apunt FSR.o a ; .................... incf FSR,1 ;I ncre m e nt os FSR, ah ora apunt a 0x35.am a m ovw 0x6D ;Cargam os cdigo para CI l NCO .m ov fI w NDF ;L guardam os donde apunt FSR.o a ; .................... incf FSR,1 ;I ncre m e nt os FSR, ah ora apunt a 0x36.am a m ovw 0x7D ;Cargam os cdigo para SEI l S.m ov fI w NDF ;L guardam os donde apunt FSR.o a ; .................... incf FSR,1 ;I ncre m e nt os FSR, ah ora apunt a 0x37.am a m ovw 0x07 ;Cargam os cdigo para SI l ETE.m ov fI w NDF ;L guardam os donde apunt FSR.o a ; .................... incf FSR,1 ;I ncre m e nt os FSR, ah ora apunt a 0x38.am a m ovw 0xFF ;Cargam os cdigo para O CH O .l m ov fI w NDF ;L guardam os donde apunt FSR.o a ; .................... incf FSR,1 ;I ncre m e nt os FSR, ah ora apunt a 0x39 .am a m ovw 0x6F ;Cargam os cdigo para NUEV l E.m ov fI w NDF ;L guardam os donde apunt FSR.o a ; .................... m ovw 0x30 ; l m ov fFSR ;Dire ccionam os Re gis t de l w ro CERO .re t urn ;Cargado l v ore s , re t os al ornam os .; .................................................................. e nd //pgina 0x0E

Una de l caract rs as e t icas m s im port e de l ant os m icrocont adore s rol e s q ue t ne n l pos ibil ie a idad de m ane j int rrupcione s . Se t a ar e rat de un acont cim ie nt q ue e o h ace q ue e l m icro de j de e l ado l q ue s e e ncue nt o ra re al ando, at nda e s e s uce iz ie s o, re gre s e y cont ine con l o s uyo. H ay dos t ipos de int e rrupcione s pos ibls , una e s e m e diant una accin e xt rna e e (e s de cir por l act acin de a iv uno de s us pine s ), l ot e s a ra int rna (por e j m pl cuando e e o ocurre e lde s bordam ie nt de o uno de s us re gis t ) ros En e l 16F628A h ay 10 f nt s de int rrupcin: ue e e

com paradore s anal gicos . I e rrupcin prov nt ocada por e l m dul CCP e n m odo o com paracin o capt ura.

Cada f nt de int ue e e rrupcin e s t cont ada por a rol 2 bit . Un bit l s ocalde int e rrupcione s (t rm inado e n E) e de pe rm is o o proh ibicin de e j cucin. Si e s t e n 0 bl e a oq ue ar l s ol ud de int a icit e rrupcin, y s i e s t e n 1 a pe rm it l e j cucin. Un bit ir a e q ue act com o s e al ador a iz (t rm inado e n F) e lcuale s e act ado (pue s t a 1) s i s e iv o h a producido l int rrupcin. a e Ade m s e xis t n 2 bit e s de cont gl , e lbit GI rol obal E (I NTCO N <7>) e l cual i e s t s a de s act ado bl ue a t iv oq odas l s ol ude s de int rrupas icit e cin y e lbit PEI (I E NTCO N Fl anco as ce nde nt o de s e <6>) q ue s e ra com o un ce nde nt de l pin RB0/NT e I , s e gundo bit de cont gl rol obal q ue re gre s a al C de l odo PI m de int rrupcione s e xce pt e uanSL EEP . do a de s bordam ie nt de l o Por l pine s RB4 a RB7, Tim e r0, de t ccin de fanco os e l conf igurados com o e nt rada y e n RB0 y cam bio de e s t ado e n cas o de q ue al guno de de RB4-RB7. e l cam bie de e s t l os ado. L ant rior de s crit o e o Por de s bordam ie nt de l pue de e nt nde rs e obs e rv o e anre gis t TM R0, cuando e s t ro e do e ldiagram a l gico de l a re gis t pas a de 255 a 0 e n ro f igura #2. de cim al . Por de s bordam ie nt de l Not T o a: odos e s t os bit al s re gis t Tim e r1, cuando pas a ro re s e t ars e o iniciars e e lm ie de 65535 a 0 e n de cim al . cro s e e ncue nt e n 0. ran Por de s bordam ie nt de l o re gis t TM R2, cuando e s t ro e re gis t s upe ra e l v or de l ro al re gis t PR2. ro Al com plt l e s crit e ar a ura de l EEPRO M de dat . a os Cuando s e re cibe un dat o por USART . Cuando s e com plt e l e a e nv de un dat por USART o o . O curre un cam bio e n l os //pgina 0x0F

El bit GI s e borra E aut t om icam e nt cuando s e e re conoce una int rrupcin e para e v ar q ue s e produz ca it ot m ie nt ra ras s e e s t at n e die ndo a l prim e ra y al a re t ornar de l int rrupcin a e con l ins t a ruccin RETFI e l E, bit GI s e v le a act ar E ue v iv ponindos e a 1. En cam bio l bit s e al adore s o banos s iz de ras de int rrupcin de be n e s e r pue s t os a ce ro por e l t am ie nt de l int rrupcin rat o a e re al ada por e l us uario iz (program ador). Cuando una int rrupe cin e s t h abilada (s u bit it l ocal de h abilacin e s t it act ado, e l GI e s t act iv bit E iv ado y/ de pe ndie ndo de l o cas o e lbit PEI e s t act ado) E iv y ocurre e l e v nt q ue l e o a act a, e l v or de PC s e iv al guarda e n l PI A y e n s t a L e s e carga e l0x04 (nico v ce t de int rrupcin). Es a or e part de e s t dire ccin q ue ir a s e de be col ocar e l rat ie nt am t de l int rrupcin, de t co a e e

b) M odo Capt ura: H a ocurrido una capt de TM R1 ura 3. No I plm e nt m e ado. 4. TXI I F: ndicador de int e I NTCO N. Re gis t de ro rrupcin de f de t in rans lct e ura y e s crit ura q ue m is in USART . Not e l nico re gis t q ue a: ro cont ne v ie arios bit de s e a- 5. RCI I s F: ndicador de int e s e s ala e n l PI A e s PC, v a L l acin y h abilacin para e l rrupcin de l gada de dat iz it l e os para pre s e rv ar al gn ot ro de s bor-dam ie nt de l TM R0, USART o . re gis t de be s e r e l propio ro pue o 6. CM I I F: ndicador de int e program a de at ncin a l cam bio s obre e l rt RB e e a int rrup-cin e xt rna e n l rrupcin por cam bio de e s t e e a aint rrupcin e lq ue s e e ncare pat l RB0/NT il a I . do de al guna de l s al as idas gue de s alar s u e s t v ado al de l com paradore s . os inicio de l rut y de de v a ina ol 0. RBI I F: ndicador de int - 7. EEI I e F: ndicador de int e v rl alinal l is m o. e os f de m rrupcin por cam bio de rrupcin de f de e s crit in ura est ado RB4-RB7. e e prom int rna. e 1. I NTF: I ndicador de int e rrupcin e xt rna. e PI E1. Re gis t ro q ue O curre un e v nt q ue e o F: ndicador de int - pos e e l bit de h abilacin e os s it s ol a l int rrupcin, e lbit 2. T0I I icit a e rrupcin por de s bordam ie nt o indiv idual para l int rrupas e bande ra s e act a. iv de Tim e r 0. cione s de pe rif ricos . Elbit Si e lbit l ocalde int rrupe 3. RBI H abilacin de int - PEI de l re gis t I E: it e E ro NTCO N cione s e s t act ado, e l bit a iv rrupcin por cam bio de de be s e r 1 para pe rm it l ir a GI act ado y/ PEI act E iv o E iest ado RB4-RB7. h abilacin it de cualuie r q v ado s e produce l int rrupa e 4. I NTE: H abilacin de int - int rrupcin de pe rif it e e rico. cin. rrupcin e xt rna. e Se de s act a GI iv E. 5. T0I H abilacin de int - 0. TM R1I H abilacin de E: it e E: it Elv or de lPC s e guarda al rrupcin por de s bordam ie nt o int rrupcin por de s bordae e n l PI A, y PC s e carga a L de Tim e r 0. m ie nt de Tim e r 1. o con 0x04. 6. PEI H abilacin de int - 1. TM R2I H abilacin de E: it e E: it Se e j cut l rut e a a ina de rrupcin de pe rif ricos . int rrupcin por de s bordae at ncin de int rrupcin cre ae e 7. GI H abilacin ge ne ral m ie nt de Tim e r 2. E: it o da por e lus uario, guardando de int rrupcione s . e 2. CCP1I H abilacin de E: it l re gis t os ros ne ce s arios y int rrupcin de l m dul de e o re al ando l bif iz a urcacin coPI R1. Elre gis t PI ro R1 Capt Com paracin/ M . ura/ PW rre s pondie nt para l at ne a e cont ne l bit de s e a- 3. No I plm e nt ie os s m e ado. cin de l e v nt por m e dio e o l acin indiv iz idual de l as 4. TXI E: H abilacin de it de l bande ra. bit int rrupcione s de pe rif e ricos . int rrupcin de f de t e in rans Al f iz ar e l t am ie nt inal rat o m is in USART . de le v nt s e de v le n l e o, ue v os 0. TM R1I F: I ndicador de 5. RCI E: H abilacin de it v ore s al de l os re gis t ros e e l e s alados y s e borran por int rrupcin por de s borda- int rrupcin de l gada de v m ie nt de Tim e r 1. o dat USART os . s ofw are l bit bande ras . t os s 1. TM R2I F: I ndicador de 6. CM I E: H abilacin de it L rut a ina de at ncin e int rrupcin por de s borda- int rrupcin por cam bio de e e de be r t rm inar con una e o est ado de al guna de l s aas ins t ruccin RETFI l cual m ie nt de Tim e r 2. E, a 2. CCP1I F: I ndicador de l idas de l com paradore s . os act a nue v e nt e lbit GI iv am e E int rrupcin de l m dul de e o 7. EEI E: H abilacin de it (GI E=1) y le l PI A para e a L ura int rrupcin de f de e s crie in re s t e ce r PC y cont abl inuar l Capt /Com paracin. a a) M odo Com parador: Coinci- t e e prom int rna. ura e e j cucin de lprogram a q ue e de ncia e nt TM R1 y CCP1. re f int rrum pido e n l s iguiue e a t ando por m e dio de l bit os s bande ras cualde l e v nos e t os h a ocurrido y act uar s e gn s e a e l o. cas //pgina 0x10

guie nt ins t e ruccin.

Prim e ro s e de be guardar e lcont nido de lre gis t e ro W y STATUS. El problm a e de m ov r W a ot re gis t e ro ro (h acie ndo us o de m ov ) e s f q ue e s t ins t a ruccin corrom pe l bande ra Z , m odif a icando e lre gis t de STATUS. Se ro gn l h oj de dat ot a a os orgada por M icroch ip, e n uno de s us apart ados re com ie nda una s e cue ncia de cdigo q ue pe rm it e guardar y re s t aurar l re gis t os ros s in m odif icarl . os

Para e lcont de l rol a int rrupcin e xt rna s e ne ce e e s it un bit adicionalI a NTEDG (O PTI N_ REG<6>) q ue s e O lcciona e lfanco q ue ge ne e l rar l int rrupcin. Si e s t a e e n 1 s e ge ne ra por fanco l as ce nde nt y e n 0 por fanco e l de s ce nde nt . e Para m os t rar s u us o h are m os un e j m pl s e ncil e o l o

; **** Rut de s e rv ina icio de I e rrupcin **** nt ; Guardado de re gis t W y STATUS.ro I nicio_ I SR m ov fW _ T m p w e ;Copiam os W a un re gis t ro ;T m porario.e s w apf STATUS, W ;I e rt os l nibls de l nv im os e ;re gis t STATUS.ro m ov fSTATUS_ T m p w e ;Guardam os STATUS e n un ;re gis t t m poral ro e .I SR ;At nde m os l int rrupcin.e a e ;Re s t auram os l v ore s de W y STATUS.os al Fin_ I SR s w apf STATUS_ T m p,W ;I e rt os l nibls de e nv im o e ;STATUS_ T m p.e m ov fSTATUS w s w apf W _ T m p, f e ;I e rt os l nibls y l nv im os e o ;guardam os e n e l is m o m ;re gis t ro.s w apfW _ T m p,W e ;I e rt os l nibls nv im os e ;nue v e nt y l am e o ;guardam os e n W .re tie f ;Sal os de int rrupcin.im e ;L re gis t W _ T m p y STATUS_ T m p s on re gis t os ros e e ros ;al rnat os para guardar t m porariam e nt s us v ore s t e iv e e al ;corre s pondie nt s . e q ue m ue s t com o s e conf re igura, e lcualalpre s ionar un pulador cone ct s ado a RB0 cam biar e l e s t ado de un L ED cone ct ado a RB1, para e l conf l o iguram os q ue l int a e rrupcin de ge ne re por fanl co as ce nde nt . En e s t cas o e a v os a re al ar e l am iz guardado de l re gis t W y STATUS os ro

//pgina 0x11

;**** Encabe z ado **** lt is p=16f 628A ;l tdire ct e t de f proce s s or is iv o ine #incl ude <p16f 628A.inc> ;proce s s or s pe cif v ic ariabl de f ions e init _ _ CO NFI _ CP_ O FF & _ W DT_ O FF & _ BO DEN_ O N & _ PW RTE_ O N & G _I NTO SC_ O SC_ NO CL O UT & _ DATA_ CP_ O FF & _ L P_ O FF & _ M CL K V RE_ O FF ; **** De f inicin de v ariabls **** e Cont ador1 e q u 0x20 Cont ador2 e q u 0x21 Pulador s Ld e equ equ 0 1 ;pin RB0 ;pin RB1

; **** I nicio de l icro **** M Re s e t org 0x00 ;Aq u com ie nz a e l icro.m got I o nicio ;Sal a inicio de m i program a.t o ; **** V ct de I e rrupcin **** e or nt org 0x04 ;At ndo I e rrupcin.ie nt got I o SR ;**** Program a Principal **** ; **** Conf iguracin de pue rt *** os org 0x05 ;O rige n de l cdigo de program a.I nicio bs f STATUS,RP0 ;Pas am os de Banco 0 a Banco 1.m ovw b'11111101' ;RB0 com o e nt l rada y RB1 com o s al ida.m ov fTRI w SB bs f O PTI N_ REG,I O NTEDG ;Conf Por fanco As ce nde nt .ig. l e bcf STATUS,RP0 ;Pas o de l Banco 1 al Banco 0 bcf PO RTB,L d ;El e d com ie nz a apagado.e L m ovw b'10010000' ;H abilam os GI y I l it E NTE (int rrupcin por RB0) e m ov fI w NTCO N ; **** Bucl inf o **** e init Bucl e nop ; got Bucl o e ; ; ............................................. ; **** Rut de s e rv ina icio de I e rrupcin **** nt ; **** I e rrupcin por RB0 **** nt I SR bts s I f NTCO N,I NTF ;Cons ul os s i e s por RB0.t am re tie f ;No, Sal os de int rrupcin.im e cal De m ora_ 20m s l ;Com prue ba s i e s re bot .e bts s PO RTB,Pulador f s got Fin_ I o SR ;Es re bot , e nt e once s s al os .im bts s PO RTB,L d f e ;Si e s t pre ndido, l apagam os .a o got Pre nde r_ L d o e bcf PO RTB,L d e ;Apagam os L d e got Fin_ I o SR Pre nde r_ L d e bs f PO RTB,L d e ;Ence nde m os L d e //pgina 0x12

Fin_ I SR bcf I NTCO N,I NTF ;L piam os bande ra.im re tie f ;Sal os de int rrupcin.im e ; .......................................... ; **** De m ora **** De m ora_ 20m s m ovw 0xFF l ; m ov fCont w ador1 ;I niciam os cont ador1.Re pe t icion1 m ovw 0x19 l ; m ov fCont w ador2 ;I niciam os cont ador2 Re pe t icion2 de cf z Cont s ador2,1 ;De cre m e nt Cont a ador2 y s i e s 0 s al.e got Re pe t o icion2 ;Si no e s 0 re pe t os cicl im o.de cf z Cont s ador1,1 ;De cre m e nt Cont a ador1.got Re pe t o icion1 ;Si no e s ce ro re pe t os cicl im o.re t urn ;Re gre s a de l s ubrut a ina.e nd para e j m plicar e l m t e if odo pe ro no e s ne ce s ario ya q ue e lm icrocont ador s ol e s rol o pe ra a q ue ocurra l int a e rrupcin.

Com o e lt ul l indiit o o ca e s t int rrupcin s e ge ne a e ra cuando s e pre s e nt un a cam bio de niv le n cualuie e q ra de l pine s RB4 a RB7 os conf igurados com o e nt radas . Aprov ch are m os e s t e a int rrupcin para de t ct e e ar cuando s e h a pre s ionado una t cl de un t cl m at e a e ado ricial Un t cl . e ado m at riciale s un s im pl arre gl de bot s e o one cone ct ados e n f as y col il um nas , de m odo q ue s e pue de n le r v e arios bot s con e l one m nim o nm e ro de pine s re q ue ridos . Un t cl m at e ado ricial43 s ol e nt ocupa 4 am e l as de un pue rt para l ne o as f as y ot 3 l as para l il ras ne as col nas , de e s t m odo s e um e pue de n le r 12 t cl ut ie e as il //pgina 0x13

ut iz ando s ol e nt 7 l as il am e ne de un m icrocont ador rol . Conf igurare m os RB0 a RB3 com o s al y l col ida as ocare m os a niv lbaj RB4 y e o. RB7 conf iguradas com o e nt radas y h abilare m os l it as re s is t ncias pul e l -up int rnas e

de l pue rt o B, RPBU (O PTI N_ REG<7>) a 0, e nO t once s e n e s t ado norm al in (s pre s in de t cl ) e s t e as arn a niv l al Al pre s ionar una e t o. t cl s e cone ct una f a con e a a il una col na, s e produce un um cam bio de niv l n al e e guna de

l col nas (de niv lal a as um e t o baj y s e ge ne ra l int rrupo), a e cin. Para de t ct q ue t cl e ar e a s e h a pre s ionado, s e col ocan RB0 a RB3 a niv lal e t o, y s e pas an a niv lbaj de a e o una por v z , de t ct e e ando s i s e produce al gn cam bio e n l col nas . Se ut iz a una as um il v ariabl q ue s e incre m e nt e a con l cue nt de l t cl a a as e as re v adas , de e s t m odo al is e de t ct e ar una pulacin e l s v or de l cue nt s e r e l al a a v or de l t cl pre s ionada. al a e a Si al f inal no s e pre s ion ninguna t cl l v e a a ariabl s e e pone a ce ro y l cue nt a a v le a com e nz ar ue v . Al m o de de t cgorit e cin de t cl pulada: al e a s ocurrir una int rrupcin s e pue e de de t rm inar q ue col na e um h a cam biado de e s t ado, pe ro no l f a. Ent a il once s para de t ct a ire m os col e arl ocando a niv lbaj s ol una f a por e o o il v z , y t s t are m os l col e e e as um nas , al t ct un niv l o de e ar e baj e n al guna de t rm inare m os e m e diant l cue nt de t cl e a a e as t s t adas e xact e nt cual e e am e h a s ido. En nue s t e j m pl re ro e o //pgina 0x14

pre s e nt m os are l a t cl t cl pre s ionada. e a e a pre s ionada e n f a binaria orm con L EDs cone ct ados al Not L bande ra RBI de be a: a F pue rt A. o pone rs e a ce ro por s ofw are t pe ro ade m s de be re al ars e iz pre v e nt una ope racin iam e de lct e ura (o e s crit ura) de l T ne r e n cue nt q ue e a Pue rt B para q ue de j de o e t bin con l v am a ariabl dars e l dis cre pancia e nt e a re NT cl (Num e ro de T cl e l v or act e a e a al ual y e l v or al pre s ionada) s e pue de ut iz ar ldo, y no ge ne re una nue v il e a com o e nt rada a una t a int rrupcin. abl e para codif icar e n ASCK I l I a m ov w NT cl f e a cal T a_ TM at l abl ricial ; Codif icacin de T cl pre s ionada: e a T a_ TM at abl ricial addw fPCL ,1 DT 1,2, 3, 4, 5, 6, 7, 8, 9 , *, 0, #

;**** Encabe z ado **** l tp=16f is 628A ;l tdire ct e t de f proce s s or is iv o ine #incl <p16f ude 628A.inc> ;proce s s or s pe cif v ic ariabl de f ions e init _ _ CO NFI _ CP_ O FF & _ W DT_ O FF & _ BO DEN_ O N & _ PW RTE_ O N & G _I NTO SC_ O SC_ NO CL O UT & _ DATA_ CP_ O FF & _ L P_ O FF & _ M CL K V RE_ O N ; **** De f inicin de v ariabls **** e NT cl e a e q u 0x20 ;Se lccionam os pos icin e n l m e m oria RAM (GPR) e a para guardar Num e ro de T cl pre s ionada e a ; **** I nicio de l icro **** M Re s e t org 0x00 ;Aq u com ie nz a e l icro.m got I o nicio ;Sal a inicio de m i program a.t o ; **** V ct de I e rrupcin **** e or nt org 0x04 ;At ndo I e rrupcin.ie nt got I o SR ; **** Program a principal **** ; **** Conf iguracin de pue rt **** os org 0x05 I nicio m ovw 0x07 l ;De s h abilam os Com paradore s anal it gicos m ov fCM CO N w bs f STATUS,RP0 ;Pas am os de Banco 0 a Banco 1.cl rf TRI SA ;PO RTA com o Sal ida.m ovw b'11110000' l ;Nibl baj com o Sal y Nibl al com o Ent e o ida e t o rada.m ov fTRI w SB bcf O PTI N_ REG,RBPU O ;H abilam os re s is t ncias Pul it e l -Up. bcf STATUS,RP0 ;Pas o de l Banco 1 al Banco 0 cl rf PO RTB ;El rt q ue dar 11110000.pue o cl rf PO RTA bcf I NTCO N,RBI F ;Borram os bande ra de I e rrupcin.nt m ovw b'10001000' l ;H abilam os GI y RBI (int rrupcin RB4 a RB7) it E E e m ov fI w NTCO N cl rf NT cl e a ; **** Bucl **** e Bucl e nop got Bucl o e ; **** Rut de s e rv ina icio de I e rrupcin **** nt ; **** I e rrupcin por TM R0 **** nt I SR bts s I f NTCO N,RBI F ;Cons ul os s i e s por RB4 a RB7.t am re tie f ;No, e nt once s s al os de int rrupcin.im e cal T cl Pre s ionada ;Se de t ct q ue t cl f pre s ionada l e a_ e a e a ue m ov w NT cl f e a ;T cl Pre s ionada l de v le e n NT cl e a_ a ue v e a.m ov fPO RTA w ;M os t os e n dis pl t cl Pre s ionada.ram ay e a cl rf PO RTB ;De j os Pue rt para re cibir ot t cl am o ra e a.bcf I NTCO N,RBI F ;borram os bande ra.re tie f ;Sal os de int rrupcin.im e ; **** Rut inas ***** //pgina 0x15

;Ras t am os T cl pre s ionada.re e a T cl Pre s ionada e a_ cl rf NT cl e a ;Borra Num e ro de T cl y e a incf NT cl e a,1 ; pre para NT cl para prim e r cdigo. e a m ovw b'00001110' l ;Saca 0 a l prim e ra f a a il m ov fPO RTB w ; de l Pue rt B a a nop ;Para e s t iz acin de s e al abil . T s t Col nas e _ um bts s PO RTB,4 f ;Prim e ra col na = 0? um got Sue l t cl o t e a a_ ;Sal s i s e h a pulado t cl e s e a. incf NT cl e a,1 ;No e s , incre m e nt n t cl a e a. bts s PO RTB,5 f ;Se gunda col na = 0? um got Sue l t cl o t e a a_ ;Sal s i s e h a pulado t cl e s e a. incf NT cl e a,1 ;No e s , incre m e nt n t cl a e a. bts s PO RTB,6 f ;T rce ra col na = 0? e um got Sue l t cl o t e a a_ ;Sal s i s e h a pulado t cl e s e a. incf NT cl e a,1 ;No e s , incre m e nt n t cl a e a. ; En e s t cas o no s e Us a t cl 3x4.e e ado ; bts s PO RTB,7 f ;Cuart col na = 0 a um ; got Sue l t cl o t e a a_ ;Sal s i s e h a pulado t cl e s e a. ; incf NT cl e a,1 ;No e s , incre m e nt n T cl a e a. Ul a_ t cl t im e a bts s f got o bs f rl f got o

PO RTB,3 ;Ya s e re v aron t is odas l f as ? as il Nul t cl le a _ ;Si, Fala al a, no s e h a pre s ionado ninguna.s arm STATUS,C ;No, s e guim os con l s iguie nt . Pone a 1 BitC a e PO RTB,1 ; as l Fil 1 pas a a 1 con l rot a a a acin a iz q da. T s t Col nas e _ um ;Se guim os t s t ando. e e

Nul t cl le a _ cl rf NT cl e a re t urn

;Col v oca ariabl T cl a 0 (Ninguna) e e a ;re gre s a.

Sue l t cl t e a a_ ;Ah ora s e e s pe ra a q ue l t cl s e a s ol a e a t ada para e v ar re bot s y re act acione s de t cl it e iv e a. Es pe ra1 bts s PO RTB,4 f ;Si no s e s ue l l t cl FI A 1 t a e a L a got Es pe ra1 o ; v le a e s pe rar ue v . Es pe ra2 bts s PO RTB,5 f ;Si no s e s ue l l t cl FI A 2 t a e a L a got Es pe ra2 o ; v le a e s pe rar ue v . Es pe ra3 bts s PO RTB,6 f ;Si no s e s ue l l t cl FI A 3 t a e a L a got Es pe ra3 o ; v le a e s pe rar ue v . Es pe ra4 bts s PO RTB,7 f ;Si no s e s ue l l t cl FI A 4 t a e a L a got Es pe ra4 o ; v le a e s pe rar ue v . re t urn ;v le al ue v program a q ue h iz o l l ada. a l am ; .......................................... e nd //pgina 0x16

l ra de grf ibre icos para GL e n C CD


Cuando ne ce s it os ut iz ar un dis pl L am il ay CD grf ico (GL CD) nos e ncont os ram q ue no s ie m pre t ne m os a m ano l f e as uncione s ne ce s arias para dibuj f as o ar orm t xt s obre lAl e o . gunos com pil adore s dis pone n de l rias al f ct pe ro m uch as ibre e e o, v ce s t ne n re s t e ie riccione s lgals s obre e lcdigo ge ne rado. H oy t m os t os e e e ram com o e s cribir t propias rut us inas , y a adapt as a t ne ce s idade s . arl us
/ por: Arie l az z e s i / / Pal / arie l az z e s i@ gm ail pal .com

Elcom pil ador CCS proporciona una l ra capaz ibre de dibuj prim it as s obre v ar iv arios m ode l de dis pl L os ays CD grf icos o GL CD (por Graph ic L uid Cris t Dis pl iq al ay). H ay v rs ione s de e s t l ra pae a ibre ra pant l con dif re nt s al as e e cont adore s e m be bidos , corol m o e lSam s ung K S0108 o e l Tos h iba T69 63. Pe ro a pe s ar de q ue pue de n dis t ribuirs e l m e nt l ibre e os t rabaj os q ue h agam os con e l , no pue de n com part e l l as irs os program as q ue l cont ngan, a as e m e nos q ue l pe rs ona q ue l a os re cibe t bin s e a un us uario am re gis t rado de CCS. Es t l it o im a m uch o s u us o con f s e duine cat os . De h e ch o, s i q uis is e iv m os publ icar e n l re v t a is a uCont rol un program a q ue t iq ue al raf go e n un GL CD, est aram os v ando l l ncia, iol a ice ya q ue e s m uy pos ibl q ue e m uch os de l nue s t lct s os ros e ore no h ayan com prado e lcom pil ador . //pgina 0x18

Es por e l q ue nos h e l o m os de cidido a e s cribir una l ibre ra propia, q ue us are m os de ah ora e n m s para nue s t proros ye ct . L f os as uncione s q ue pos e e e s t l ra s on l s iguie na ibre as ts: e GL CD_ l piar(col im or) GL CD_ inicial a(m odo) iz GL CD_ punt o(x, y, col or) GL CD_ l a(x1, y1, x2, y2, ine col or) GL CD_ re ct angul o(x1, y1, x2, y2, col or) GL CD_ caj a(x1, y1, x2, y2, col or) GL CD_ circul o(x1, y1, radio, col or) Se as um e q ue l cone as xione s e nt e lPI y e lGL re C CD s on l s iguie nt s : as e

PI N 1 2 6 7 8 9 ...16 17

L CD CS1 CS1 R/ S R/ W E D0...D7 RESET

PI C B1 B0 B2 B3 B4 D0...D7 B5

Por s upue s t l pio, os ne s ut iz ados pue de n cam il biars e m odif icando l s e nas t ncias DEFI q ue s e e ncue NE e nt ran al principio de l l a ibre ra. /Pine s a us ar / #de f GL ine CD_ CS1 PI E2 N_ #de f GL ine CD_ CS2 PI E1 N_ #de f GL ine CD_ DI PI C3 N_ #de f GL ine CD_ RW PI C2 N_ #de f GL ine CD_ E PI C1 N_ #de f GL ine CD_ RESET PI E0 N_ Com e nce m os a anal iz ar cada una de l f as uncione s im plm e nt e adas : Es t e s l prim e r f a a uncin de l l ra q ue de be l ar a ibre l am nue s t program a. Se e ncarro ga de inicial ar e lGL iz CD, y el parm e t " odo" de t rm iro m e na s i e s t ar e nce ndido (s i re cibe un " ) o apagado (s i 1" re cibe un " ). Es im port e 0" ant s abe r q ue e s t f a uncin ade m s de inicial ar e l GL iz CD borra l pant l a al a. Es t e s a l f a uncin q ue

/-------------------------------------------------------------------------------/ / GL / CD_ inicial a(m odo) - Es t f iz a uncin inicial a e l CD. iz L /-------------------------------------------------------------------------------/ v GL oid CD_ inicial a(int m odo) iz 1 { / Pone l pine s de cont e n e l s t / os rol e ado corre ct o. out _ h igh (GL put CD_ RESET); out _ l (GL put ow CD_ E); out _ l (GL put ow CD_ CS1); out _ l (GL put ow CD_ CS2); out _ l (GL put ow CD_ DI / M odo ins t ); / ruccin / Env dat de inicial acin ----------------------/ io os iz GL CD_ e nv iaBYTE(GL CD_ l ado_ CS1, 0xC0); GL CD_ e nv iaBYTE(GL CD_ l ado_ CS2, 0xC0); GL CD_ e nv iaBYTE(GL CD_ l ado_ CS1, 0x40); GL CD_ e nv iaBYTE(GL CD_ l ado_ CS2, 0x40); GL CD_ e nv iaBYTE(GL CD_ l ado_ CS1, 0xB8); GL CD_ e nv iaBYTE(GL CD_ l ado_ CS2, 0xB8); / Si m odo = 1 inicial a e nce ndido. Sino, apagado. / iz if odo == 1) (m { GL CD_ e nv iaBYTE(GL CD_ l ado_ CS1, 0x3F); / Encie ndo e l CD / GL GL CD_ e nv iaBYTE(GL CD_ l ado_ CS2, 0x3F);} e le { s GL CD_ e nv iaBYTE(GL CD_ l ado_ CS1, 0x3E); / Apago e l CD / GL GL CD_ e nv iaBYTE(GL CD_ l ado_ CS2, 0x3E);} / Borro l pant l / a al a GL CD_ l piar(0); im } " a" t pint oda l pant l con a al a uno u ot col . Si re cibe coro or m o parm e t ro un " , l 1" a pint ar com plt e nt de e am e ne gro. Si re cibe un " , l 0" a l piar por com plt Su im e o. f uncionam ie nt t bin e s o am m uy s e ncil y s e " l o, apoya" e n GL CD_ e nv BYTE() para ia e s cribir e n e l CD. Re corre GL am bas m it s de l GL ade CD, pgina por pgina, de arriba h acia abaj o, e s cribie ndo " 0x00" o " 0xFF" s e gn s e h aya e lgido pint o borrar e ar .

//pgina 0x19

/--------------------------------------------------------------------------------/ / GL / CD_ l piar(col - L pia e l CD (pint l pant l im or) im GL a a al a) /--------------------------------------------------------------------------------/ v GL oid CD_ l piar(int col im 1 or) { int i, j 8 ; / Re corre l 8 paginas (v rt ) / as e ical f = 0;i < 8;+ + i) or(i { out _ l (GL put ow CD_ DI / M odo ins t ); / ruccin /Com ie nz o, e n cada pgina, de s de l dire ccin 0 / a GL CD_ e nv iaBYTE(GL CD_ l ado_ CS1, 0b01000000); GL CD_ e nv iaBYTE(GL CD_ l ado_ CS2, 0b01000000); /Se lcciono l dire ccion de nt de l pagina / e a ro a GL CD_ e nv iaBYTE(GL CD_ l ado_ CS1, i | 0b10111000); GL CD_ e nv iaBYTE(GL CD_ l ado_ CS2, i | 0b10111000); out _ h igh (GL put CD_ DI / M odo dat ); / os / Re corre l dos m it s (h oriz ont e s ) / as ade al f = 0;j< 64;+ + j or(j ) { GL CD_ e nv iaBYTE(GL CD_ l ado_ CS1, 0xFF * col or); / Encie nde / / apaga pxe ls e GL CD_ e nv iaBYTE(GL CD_ l ado_ CS2, 0xFF * col or); / Encie nde / / apaga pxe ls e } } }

Es t e s l " a a prim it a grf iv ica" indis pe ns abl. A part de e ir GL CD_ punt o(x, y, col e s or) cribire m os t odas l f as uncione s re s t e s . L parm e ant os t q ue re cibe GL ros CD_ punt o(x, y, col s on: or) x: un byt , e s l coorde nada e a " (h oriz ont ), con v ore s x" al al v idos de 0 a 127 (iz q uie rda l a de re ch a). y: un byt , e s l coorde nada e a " (v rt ), con v ore s v iy" e ical al l dos de 0 a 63 (arriba a abaj o). col un bit " = apagado, or: , 0" " = e nce ndido. 1"

#incl <16F877A.h > ude #de v *=16 ice #incl <s t ib.h > ude dl #f e s H S,NO W DT us ,NO L P V #USE DEL (CL CK =20000000) AY O #incl <GL ude CD_ K 0108.C> /-------Com ie nz a e l / program a ----------------------v m ain() oid { /I /nicial o e l CD, e nce ndido. iz GL GL CD_ inicial a(1); iz GL CD_ l piar(1); /L pint com plt e nt im /o o e am e de ne gro de l m s (2000); /Es pe ro dos s e gundos y... ay_ / GL CD_ l piar(0); /...l l pio. im / o im } //pgina 0x1A

L l a t bin re s ul ina ine am t a dis pe ns abl a l h ora de die a buj un grf ar ico. L parm e os t ros q ue re cibe GL CD_ l aine (x1, y1, x2, y2, col s on: or) x1: un byt , e s l coorde nae a da " (h oriz ont ) de lprim e r x" al e xt m o de l l a, con re a ine v ore s v idos de 0 a 127 al l (iz q uie rda a de re ch a). y1: un byt , e s l coorde nae a da " (v rt ) de l prim e r y" e ical e xt m o de l l a, con re a ine v ore s v idos de 0 a 63 (aal l rriba a abaj o). x2: un byt , e s l coorde nae a da " (h oriz ont ) de l e gunx" al s do e xt m o de l l a, con re a ine v ore s v idos de 0 a 127 al l (iz q uie rda a de re ch a). y2: un byt , e s l coorde nae a da " (v rt ) de ls e gundo y" e ical e xt m o de l l a, con v ore a ine al re s v idos de 0 a 63 (arriba l a abaj o). col un bit " = l a e n or: , 0" ine bl anco, " = l a e n ne gro. 1" ine Elt ado de l as s e bas a raz ine e n e lAl m o de Bre s e ngorit h am .

/----------------------------------------------------------------------/ / GL / CD_ punt o(x, y, col - Dibuj un pixe l or) a /----------------------------------------------------------------------/ v GL oid CD_ punt o(int x, int y, int col 8 8 1 or) { BYTE dat o; int l = GL 1 ado CD_ l ado_ CS1; / L / ado e n q ue v a dibuj . oy ar if > 63) (x / V o s i cae de l ro l / e ot ado { x -= 64; l = GL ado CD_ l ado_ CS2; } out _ l (GL put ow CD_ DI / M odo ins t ); / ruccin bit clar(x,7); _ e / L pio bitM SB... / im bit s e t _ (x,6); / ...y pongo e l 6 e n 1 / bit GL CD_ e nv iaBYTE(l ado, x); / Env l dire ccin de l coorde nada X / io a a / Cal o e n q ue pagina de l 8 cae ... / cul as GL CD_ e nv iaBYTE(l ado, (y/ & 0xBF) | 0xB8); 8 out _ h igh (GL put CD_ DI ); / ...y pas o a M odo dat / os / Se ne ce s it dos lct / an e uras para q ue de v la e l o e n l ue v dat a / nue v dire ccin / a GL CD_ le BYTE(l e ado); dat = GL o CD_ le BYTE(l e ado); / De acue rdo al al de col ... / v or or if or == 1) bit s e t o, y% 8); / Encie ndo e l (col _ (dat / pxe l e le s bit clar(dat y% 8); / apago e l _ e o, / pxe l out _ l (GL put ow CD_ DI ); / M odo ins t / ruccin GL CD_ e nv iaBYTE(l ado, x); / Fij e lado a e s cribir / o l , out _ h igh (GL put CD_ DI ); / pongo e n M odo Dat y.... / os GL CD_ e nv iaBYTE(l ado, dat o); / dibuj e l / o pxe l }

#incl <16F877A.h > ude #de v *=16 ice #incl <s t ib.h > ude dl #f e s H S,NO W DT us ,NO L P V #USE DEL (CL CK =20000000) AY O #incl <GL ude CD_ K 0108.C> /-------Com ie nz a e l / program a ------------------v m ain() oid { inti,j ; //pgina 0x1B

GL CD_ inicial a(1); iz GL CD, e nce ndido. GL CD_ l piar(0); im

/I /nicial o e l iz /L pio l pant l / im a al a

/ Pint punt e n e l CD / o os GL f or(i=0;i<=127;i=i+ 8){ f =0;j or(j <=63;j + 8){ =j GL CD_ punt ,1);/Pint e l o(i,j / o punt o } } }

L os re ct ngul de dibuj os an (int rnam e nt ) m e diant cuae e e t ro l adas a l f l am a uncin GL CD_ l a. ine L os parm e t ros q ue re cibe GL CD_ re ct angul o(x1, y1, x2, y2, col or) s on:

/-------------------------------------------------------------------------------/ / Dibuj una l a de s de (x1,y1) a (x2,y2) de col (0 o 1) / a ine or /-------------------------------------------------------------------------------/ v GL oid CD_ l a(intx1, inty1, intx2, inty2, int col ine 1 or) { /De cl v / aro ariabls ------------------e s igne d int x, y, incre m e nt x, incre m e nt y, dis t o_ o_ ancia_ x, dis t ancia_ y; s igne d l P; ong inti;

x1: un byt , e s l coorde nae a /Cal o l dif re ncias e nt l coorde nadas de orige n y / cul as e re as da " (h oriz ont ) de l e s x" al a ino q uina s upe rior iz q uie rda de l de s t dis t ancia_ x = abs ((s igne d int )(x2 - x1)); re ct ngul con v ore s v io, al l dis t ancia_ y = abs ((s igne d int )(y2 - y1)); dos de 0 a 127 (iz q uie rda a de re ch a). /I /nicial o x e y con l coorde nadas de orige n iz as y1: un byt , e s l coorde nae a x = x1; da " (v rt ) de l e s q uina y" e ical a y = y1; s upe rior iz q uie rda de l ct re ngul con v ore s v idos de o, al l /Cal o e l e nt de l incre m e nt (pos it os o / cul s ido os os iv 0 a 63 (arriba a abaj o). ne gat os ) iv x2: un byt , e s l coorde nae a /e n f / uncin de l pos icin de l a orige n y e l s t de ino da " (h oriz ont ) de l e s x" al a if > x2) incre m e nt x = -1;e le incre m e nt x = 1; (x1 o_ s o_ q uina inf rior de re ch a de l e if > y2) incre m e nt y = -1;e le incre m e nt y = 1; (y1 o_ s o_ re ct ngul con v ore s v io, al l dos de 0 a 127 (iz q uie rda a /Si l dis t / a ancia h oriz ont e s m ayor a l v rt ... al a e ical de re ch a). if t (dis ancia_ x >= dis t ancia_ y) y2: un byt , e s l coorde nae a { P = 2 * dis t ancia_ y - dis t ancia_ x; da " (v rt ) de l e s q uina y" e ical a f or(i=0;i<=dis t ancia_ x;+ + i) inf rior de re ch a de l re ct e n{ gul con v ore s v idos de o, al l GL CD_ punt o(x, y, col or); 0 a 63 (arriba a abaj o). col un bit " = re ct or: , 0" nguif < 0) (P l e n bl o anco, " = re ct 1" ngu{ P + = 2 * dis t ancia_ y; l e n ne gro. o x + = incre m e nt x;} o_ e le s { P + = 2*dis t ancia_ y - 2*dis t ancia_ x; x + = incre m e nt x; o_ L " as " s on re ct as caj ngul os y + = incre m e nt y; o_ } pint ados e n s u int rior con e l e } m is m o col q ue e l or borde e x} t rior T bin s e dibuj (ine . am an t rnam e nt ) m e diant l ae e e l am /Si l dis t / a ancia v rt e ical s m ayor a l h oriz ont ... e a al das a l f a uncin GL CD_ l ine e le s a. L parm e t os ros q ue re ci{ P = 2 * dis t ancia_ x - dis t ancia_ y; be GL CD_ caj a(x1, y1, x2, f or(i=0;i<=dis t ancia_ y;+ + i) y2, col s on: or) { GL CD_ punt o(x, y, col or); if < 0) (P x1: un byt , e s l coorde nae a { P + = 2 * dis t ancia_ x; da " (h oriz ont ) de l e s x" al a //pgina 0x1C

y + = incre m e nt y;} o_ q uina s upe rior iz q uie rda de l e le s re ct ngul con v ore s v io, al l { P + = 2 * dis t ancia_ x - 2 * dis t ancia_ y; dos de 0 a 127 (iz q uie rda a x + = incre m e nt x; o_ de re ch a). y + = incre m e nt y;} o_ y1: un byt , e s l coorde nae a } da " (v rt ) de l e s q uina y" e ical a } s upe rior iz q uie rda de l ct re n} gul con v ore s v idos de o, al l 0 a 63 (arriba a abaj o). x2: un byt , e s l coorde nae a / Ej m pl de us o de GL / e o CD_ l a(x1, y1, x2, y2, col ine or) da " (h oriz ont ) de l e s x" al a #incl <16F877A.h > ude q uina inf rior de re ch a de l #de v *=16 e ice re ct ngul con v ore s v io, al l #incl <s t ib.h > ude dl dos de 0 a 127 (iz q uie rda a #f e s H S,NO W DT us ,NO L P V de re ch a). y2: un byt , e s l coorde nae a #USE DEL (CL CK =20000000) AY O da " (v rt ) de l e s q uina y" e ical a #incl <GL ude CD_ K 0108.C> inf rior de re ch a de l ct e re ngul con v ore s v idos de 0 a o, al l /-------Com ie nz a e l / program a ----------------------63 (arriba a abaj o). v m ain() oid col un bit " = caj e n or: , 0" a { bl anco, " = caj e n ne gro. 1" a inti; GL CD_ inicial a(1); iz GL CD_ l piar(0); im Es t e s l f a a uncin q ue dibuj a un circul Elint rior de lciro. e cul pe rm ane ce de lcol de l o or f ondo. Es t am e nt h abl rict e ando, s e dibuj s ol l circunf a o a e re ncia. L parm e t os ros q ue re cibe GL CD_ circul o(x1, y1, radio, col s on: or) x1: un byt , e s l coorde nae a da " (h oriz ont ) de lce nt x" al ro de lcircul con v ore s v io, al l /I /nicial o e l CD, e nce ndido. iz GL /L pio l pant l / im a al a

/ Dibuj e j " / o e X" GL CD_ l a(0, 32, 127, 32, 1); ine f or(i=0;i<=127;i=i+ 8){ GL CD_ l a(i,31,i,33,1);} ine / Dibuj e j " / o e Y" GL CD_ l a(64, 0, 64, 64, 1); ine f or(i=0;i<=63;i=i+ 8){ GL CD_ l a(63,i,65,i,1);} ine / Dibuj l " / o a graf ica" GL CD_ l a(0,63,127,0,1); ine }

//pgina 0x1D

dos de 0 a 127 (iz q uie rda a de re ch a). y1: un byt , e s l coorde nae a da " (v rt ) de l ce nt y" e ical ro de lcircul con v ore s v io, al l dos de 0 a 63 (arriba a abaj o). radio: un byt , e s e l e radio de l circunf re ncia (e n pixe a e ls ). e col un bit " = circul e n or: , 0" o bl anco, " = circul e n ne 1" o gro. L as circunf re ncias s e h an e re s ue l m e diant e l" gorit t o e al m o de l punt m e dio" q ue o , div ide l circunf re ncia e n 8 a e part s s im t e ricas , e v ando it ut iz ar f il uncione s com o s e no, cos e no o pot ncias , q ue v e ol v ran m uy lnt l t a de l e e a a are t ado. raz

/-------------------------------------------------------------------------------/ / Dibuj un re ct / a ngul de s de (x1,y1) a (x2,y2) o / de col (0 1). / or /----------------------------------------------------------------------/ v GL oid CD_ re ct angul o(intx1, inty1, intx2, inty2, int col 1 or) { GL CD_ l a(x1,y1,x2,y1,col ine or); GL CD_ l a(x1,y1,x1,y2,col ine or); GL CD_ l a(x1,y2,x2,y2,col ine or); GL CD_ l a(x2,y1,x2,y2,col ine or); } / Ej m pl de GL / e o CD_ re ct angul o(x1, y1, x2, y2, col or) #incl <16F877A.h > ude #de v *=16 ice #incl <s t ib.h > ude dl #f e s H S,NO W DT us ,NO L P V #USE DEL (CL CK =20000000) AY O #incl <GL ude CD_ K 0108.C> /-------Com ie nz a e l / program a ----------------------v m ain() oid { inti; GL CD_ inicial a(1); iz GL CD_ l piar(0); im /I /nicial o e l CD, e nce ndido. iz GL /L pio l pant l / im a al a

/ Dibuj un re ct / o ngul o GL CD_ re ct angul o(10,10,117,40,1); }

//pgina 0x1E

/----------------------------------------------------------------------/ / Dibuj un re ct / a ngul PI o NTADO de s de (x1,y1) a (x2,y2) / de col (0 o 1) / or /----------------------------------------------------------------------/ v GL oid CD_ caj a(intx1, inty1, intx2, inty2, int col 1 or) { /De cl v / aro ariabls ------------------e inti; f or(i=y1; i<=y2; + ) { i+ GL CD_ l a(x1,i,x2,i,col } ine or); } / Dibuj / ando una caj a #incl <16F877A.h > ude #de v *=16 ice #incl <s t ib.h > ude dl #f e s H S,NO W DT us ,NO L P V #USE DEL (CL CK =20000000) AY O #incl <GL ude CD_ K 0108.C> /-------Com ie nz a e l / program a ----------------------v m ain() oid { inti; GL CD_ inicial a(1); iz GL CD_ l piar(0); im /I /nicial o e l CD, e nce ndido. iz GL /L pio l pant l / im a al a

/ Dibuj una caj / o a GL CD_ caj a(20,20,115,32,1); } /----------------------------------------------------------------------/ / Dibuj un circul con ce nt e n (x1,y1), radio / a o ro / y col (0 1) / or /----------------------------------------------------------------------/ v GL oid CD_ circul o(intx1, inty1, intradio, int col 1 or) { s igne d intd, x, y; /I /nicial o l v iz as ariabls . e d = 1 - radio; x = 0; y = radio; / Dibuj l cuat pxe ls q ue " n" s obre l e j s / o os ro e cae os e / cart s ianos . / e GL CD_ punt o(x1, y1 + radio, col or); //pgina 0x1F

GL CD_ punt o(x1, y1 - radio, col or); GL CD_ punt o(x1 + radio, y1, col or); GL CD_ punt o(x1 - radio, y1, col or); /Es t e s e l / e bucl q ue pint l oct os de l circunf re ncia. e a os av a e w h il(x < y) { e if < 0) {d = d + 2 * x + 3; (d } e le {d = d + 2 * (x - y ) + 5; s y=y-1; } x = x + 1; /Pone e l / punt e n cada uno de l " ant s " o os oct e . GL CD_ punt o(x1 + x, y1 + y, col or); GL CD_ punt o(x1 - x, y1 + y, col or); GL CD_ punt o(x1 + x, y1 - y, col or); GL CD_ punt o(x1 - x, y1 - y, col or); GL CD_ punt o(x1 + y, y1 + x, col or); GL CD_ punt o(x1 - y, y1 + x, col or); GL CD_ punt o(x1 + y, y1 - x, col or); GL CD_ punt o(x1 - y, y1 - x, col or); } } / Dibuj / ando un circul o #incl <16F877A.h > ude #de v *=16 ice #incl <s t ib.h > ude dl #f e s H S,NO W DT us ,NO L P V #USE DEL (CL CK =20000000) AY O #incl <GL ude CD_ K 0108.C> /-------Com ie nz a e l / program a ----------------------v m ain() oid { inti; GL CD_ inicial a(1); iz GL CD_ l piar(0); im /I /nicial o e l CD, e nce ndido. iz GL /L pio l pant l / im a al a

/ Dibuj v / o arios circul os f or(i=10;i<=100;i=i+ 16){ GL CD_ circul o(i,30,i/ 2,1);} 5+ }

//pgina 0x20

H ay dos f uncione s acce s orias e n l q ue s e bas a e l as f uncionam ie nt de t o oda l a l ra. Ef ct am e nt , de ibre e iv e f a indire ct o indire ct t orm a a odas l f as uncione s im plm e ne t adas h ace n us o de GL CD_ le BYTE(int l e 1 ado) y GL CD_ e nv iaBYTE(int l 1 ado, BYTE dat para le r o e s cribii byo) e t s e n e ldis pl A cont e ay. inuacin, e lcdigo f nt de caue e da una. Por l o pue de s de s cargar t im l l ria GL a ibre CD_ K 0108.C h acie ndo cl aq u. ick

/----------------------------------------------------------------------/ / Es cribe un byt e n una de l m it s de l pant l / e as ade a al a / (l / ado=0:iz q L ado=1:de r) /----------------------------------------------------------------------/ v GL oid CD_ e nv iaBYTE(int l 1 ado, BYTE dat o) { if ado) out _ h igh (GL (l put CD_ CS2); / Se lcciono l m it / e a ad corre s pondie nt e e le out _ h igh (GL s put CD_ CS1); out _ l (GL put ow CD_ RW ); / M odo e s crit / ura out _ d(dat put o); / Col e l o e n e l rt y... / oco dat pue o de l us (1); ay_ / ...e s pe ro. / out _ h igh (GL put CD_ E); / Pongo e l Enabl e n al y... / bit e t o de l us (2); ay_ / ...e s pe ro. / out _ l (GL put ow CD_ E); / Pongo e l Enabl e n baj / bit e o. out _ l (GL put ow CD_ CS1); out _ l (GL put ow CD_ CS2); } / L ro l l a CS1 y... / ibe a ine / CS2. /

/----------------------------------------------------------------------/ / L e un byt de una de l dos m it s de l pant l / e e as ade a al a /----------------------------------------------------------------------/ BYTE GL CD_ le BYTE(int l e 1 ado) { BYTE dat o; s e t t _ d(0xFF); _ ris out _ h igh (GL put CD_ RW );

/ Pue rt D com o e nt / o rada / GL e n M odo lct / CD e ura / Se lcciono l m it de l pl a le r / e a ad dis ay e .

if ado) out _ h igh (GL (l put CD_ CS2); e le out _ h igh (GL s put CD_ CS1); de l us (1); ay_ out _ h igh (GL put CD_ E); de l us (2); ay_ dat = input d(); o _ out _ l (GL put ow CD_ E); / Es pe ro... / / Pongo e n al e l e nabl y... / t o pin e / ...e s pe ro. / / Guardo e n " o" e l al de v l y... / dat v or ue t o / ...pongo e n baj e l e nabl. / o pin e / V lo a pone r e n baj l l as CS1 y CS2. / ue v o as ine out _ l (GL put ow CD_ CS1); out _ l (GL put ow CD_ CS2); re t dat urn o; }

//pgina 0x21

le r un t cl m at e e ado ricial con PI Sim ul or I C at DE


Una de l m ane ras m s us uals de ingre s ar dat a un m icrocont ador e s a as e os rol t s de un t cl rav e ado m at ricial En e s t t oriale xpl . e ut icare m os com o re al ar una iz rut de lct e n e le nguaj Bas ic de l nt ina e ura l e e orno PI Sim ul or I para ut iz arl C at DE il a e n nue s t proye ct . ros os
/ por: L / ucas M art Tre s e r / n / l t s e r@ gm ail m re .com

Un t cl e ado m at ricialno e s m s q ue un arre gl de pul o s adore s , t o norm al e nt ant m e ce rrados com o abie rt , dis os pue s t e n f as y col nas y os il um com part ndo al ie gunos de s us pine s , l ogrando una not e abl re duccin de e s t . Por e j m os e pl un t cl o e ado de 4 f as y 4 il col nas , l ado ge ne ral um l am m e nt 44, pos e e s l 8 pie o ne s de cone xin y 16 t cl a e as nue s t dis pos icin. ra Ah ora bie n, a l h ora de a im plm e nt un t cl e ar e ado de e s t e t ipo e n al guno de nue s t ros proye ct os de be m os re al ar una iz rut de lct pue s al ina e ura com part pine s e n s u e s t ura int rir ruct e na, e lm icrocont ador no pue rol de dil ucidar por s i s ol cuale s o l t cl pre s ionada. a e a

ot v ra ariant de le nguaj . e l e L q ue de be m os h ace r o e s v rif e icar e l s t e ado de l pul os s adore s uno a uno para s abe r s i h ubo un cam bio de e s t ado. Para l ograrl de be m os cone ct o ar l cuat col nas de lt cl as ro um e ado a cuat pine s de s al ro ida de l PI y l cuat f as a ot C, as ro il ros cuat ros pine s de e nt rada de l m icrocont ador rol . L s e cue ncia a s e guir e s a l s iguie nt : a e Act ar l prim e ra col na. iv a um V rif e icar f a a f a e n bus ca de il il un uno (1) l gico. Apagar l prim e ra col na. a um Re pe t e l ir proce dim ie nt con o l col nas s iguie nt s . as um e

Nue s t rut ra ina com o ya dij os e s t e s crit e n e le nguaim a l j Bas ic de PI Sim ul or I e C at DE, aunq ue e s f m e nt port e a cil e abl //pgina 0x23

Al l al Digit 'Nom bro l pine s q ue os 'conf an l f as . orm as il Sym bolil = RB0 f a1 Sym bolil = RB1 f a2 Sym bolil = RB2 f a3 Sym bolil = RB3 f a4 'Nom bro l pine s q ue os 'conf an l col nas . orm as um Sym bol 1 = RB4 col Sym bol 2 = RB5 col Sym bol 3 = RB6 col Sym bol 4 = RB7 col 'De f inicin de pue rt . os TRI = % 00000000 SA TRI = % 00001111 SB 'De f inicin de v ariabls . e Dim bot As Byt on e 'Com ie nz a bl ue principal oq . l oop: Gos ub ge t buton _ t PO RTA = bot on Got l o oop End En nue s t cdigo de e j m ro e pl s im plm e nt e s cane ao e e m os t odas l t cl , s i s e as e as e ncue nt al ra guna pre s ionada guarda un v or num rico e n al l v a ariabl "bot e on" y l go ue t l ras ada e l cont nido de e dich a v ariabl dire ct e nt e am e alpue rt de s al PO RTA. o ida O bv e nt l f idad de l iam e a inal cdigo e s v r l m e cnica de e a lct e ura de un t cl e ado m at ricial4x4 para com pre nde rl a, m odif icarl y adapt a a un a arl program a prct s in m ayoico re s dif t s . icul ade

'Subrut de lct de un t cl m at ina e ura e ado ricial 4x4. ge t buton: _ t bot = 0 on col = 1 1 I f a1 = 1 Th f il I f a2 = 1 Th f il I f a3 = 1 Th f il I f a4 = 1 Th f il col = 0 1 col = 1 2 I f a1 = 1 Th f il I f a2 = 1 Th f il I f a3 = 1 Th f il I f a4 = 1 Th f il col = 0 2 col = 1 3 I f a1 = 1 Th f il I f a2 = 1 Th f il I f a3 = 1 Th f il I f a4 = 1 Th f il col = 0 3 col = 1 4 I f a1 = 1 Th f il I f a2 = 1 Th f il I f a3 = 1 Th f il I f a4 = 1 Th f il col = 0 4 Re t urn

'Act o l prim e ra col na. iv a um e n bot = 1 on e n bot = 5 on e n bot = 9 on e n bot = 13 on 'Act o l s e gunda col na. iv a um e n bot = 2 on e n bot = 6 on e n bot = 10 on e n bot = 14 on 'Act o l t rce ra col na. iv a e um e n bot = 3 on e n bot = 7 on e n bot = 11 on e n bot = 15 on 'Act o l cuart col na. iv a a um e n bot = 4 on e n bot = 8 on e n bot = 12 on e n bot = 16 on 'Fin y re gre s o de s ubrut ina

//pgina 0x24

s pt a com pe t ncia im e nacional robt de ica


ElGrupo de Robt ica y Sim ul acin (GRS) pe rt ne cie nt alDe part e nt de e e am o I nie ra El rica de l Univ rs idad T cnol nge ct a e e gica NacionalFacul Re gional t ad Bah a Bl anca organiz a nue v e nt uno de l e v nt m s im port e s de l am e os e os ant pas : l" a Spt a Com pe t ncia Nacional Robot . im e de ica"
/ por: Grupo de Robt y Sim ul / ica acin / / com pe t nciarobot e ica@ f rbb.ut du.ar n.e

L a "Spt a Com pe im t ncia Nacionalde Robt e ica" s e re al ar e l14 de nov m iz ie bre de l2009 e n l ciudad de a Bah ia Bl anca, prov incia de Bue nos Aire s (Arge nt ina). En l a cat gora e Sum o e xis t n t s niv ls . Una e re e e e s l l ada pol odale n cual a l am im part icipan al nos de l niv l um e m e dio o s e cundario. L ot e s a ra l l ada l a l am ibre donde part icipan al nos univ rs it um e arios , inge nie ros o publ e n ge ne raly ico por ul o e lM ini Sum o donde t im pue de n part icipar t odas l as e dade s s ie ndo l robot de un os s t ao m e nor al am Sum o Cl ico. s Por t rce r ao cons e e cut o de s arrol m os l m odaiv l are a l idad l ada v l t L m is l am e ocis a. a m a cons is t e n una carre ra de e dos robot s e guidore s de l a ine e n un circuit ce rrado. El o prim e r robot q ue de l cant a idad de v l as ignada gana l carre ra. ue t a a L nue v re gl e nt , os os am os f os y v os de l com pe t not de a e cia e s t arn a s u dis pos icin e n //pgina 0x26

nue s t nue v pagina w e b cuya ra a dire ccin e s : w w w .grs bah iabl anca.com .ar . Con re s pe ct a l re gl o os am e nt h e m os t ado de s im pl os rat if icarl alm xim o dando l rt o ibe ad cas i abs ol a a l part ut os icipant e e n l cons t a ruccin de l robot os s y t bin durant l com pe t nam e a e cia pidie ndo s ol e nt q ue s e am e cum pl con e lpe s o y m e didas a e s t adas por l norm a por l ipul a o t o no h abr t e rancia e n l ant ol os m is m os e s t ao. e L ins cripcin al ce rt a am e n ce rrar e l da 6 de nov m ie bre . Aq ue l part l os icipant s q ue e t ngan dudas s obre s u part e icipacin e n e l v nt s e l pe dir e e o e q ue s e ins criban igual e nt m e ant de l f ch a t e a e ope porq ue de ot m ane ra no podrn com pe ra t . L ins cripcin s e ra a t s ir a rav de nue s t pagina. ra L com pe t ncia dura un a e da s ol e nt y e lao pas ado am e s e pre s e nt aron 71 robot e n s t odas l cat goras s ie ndo l as e a dis t ribucin m as o m e nos l a

s iguie nt : e

L ins cripcin no t ne a ie cos t h as t ah ora. L nico o a o q ue s e pide e s pagar un bono para l ce na de cam araa de ra q ue s e h ace t rm inada e l com pe t ncia. a e Elde s arrol de lrobot l o pue de s e r a t s de una rav ins t ucin o e n f a part it orm icul. ar Cualuie r q inq uie t ud q ue t ngan no dude n e n e s e cribir a l organiz adore s , a os l s iguie nt dire ccin de coa e rre o e lct e rnico: com pe t ne ciarobot ica@ f rbb.ut du.ar n.e

//pgina 0x27

brj a digit de pre cis in ul al con s e ns or de e f ct h al e o l


Els ico Edw in H alde s cubri (por cas ual f l idad) e l f ct q ue l v s u nom bre e n e l e e o l a e ao1879 . De s de e nt once s h an pas ado m uch os aos y s e h an de s arrol l ado m l e s s e ns ore s q ue aprov ch an e s t f nm e no. H acie ndo us o de e l t ipl e e e l os podre m os cons t una brj a digit de gran pre cis in. ruir ul al
/ por: Pabl / / o / q uick bas ic@ t rra.e s e

Ele f ct H al s e m anie o l f s t e n l t ns in t ie a a e rans v re s al ue apare ce e n un conducq t cuando e s t s om e t or ido a un cam po m agnt ico. Por e j m pl s i t ne m os un cabl e o, e e conducie ndo corrie nt y l e e pone m os un v t e t s e ns iol m ro bl e nt dos punt t e re os rans v re s als , alace rcar un im n s e e podra m e dir una pe q ue s im a t ns in. Es t e s de bido a e o q ue l e lct os e rone s q ue pas an por e lcabl s e v rn de s pl e e az ados h acia un l ado e n pre s e ncia de l im n. Ent once s apare ce una dif re ncia de t ne e s in e nt e s os dos punt re os de lcabl. Als e parar e lim n, e l t ns in t a e rans v rs alde s apae re ce . Para pode r m e dir e s t a t ns in t e rans v rs ale s ne ce s ario e am plicarl porq ue s u v or e s if a, al m uy re ducido. En e l m e rcado h ay s e ns ore s de e f ct h al e o l l als q ue int gran un am pliine e e if cador y al canz an s e ns ibil idade s de 5m V por Gaus s . Es t s igue o //pgina 0x29

s ie ndo m uy poca cos a para nue s t props it ya q ue e l ro o, cam po m agnt ico de l t rra, a ie q ue e s e lim n q ue q ue re m os m e dir e s t dbilcom o apro, an xim adam e nt 0.5 Gaus s . e En nue s t cas o ut iz are ro il m os un s e ns or 1321 de l a com paa Al gro, q ue a s u l e s al nos e nt ga una v ida re ariacin m xim a e nt l pol re os os nort y s ur de t s l 2.5m V e an o .

Es e v nt q ue s i q ue re ide e m os conv rt l t ns in anal e ir a e gica q ue of ce e l e ns or a una re s s e al digit h ay q ue e f ct al e uar un proce s o de am plicacin. if Com o ya dij os ant riorim e m e nt , e ls e ns or 1321 e nt ga e re por s u pin " UT" 2,5V cuando O est en est ado de re pos o, e s de cir s in l pre s e ncia de un a cam po m agnt ico e n s us al re de dore s . Pe ro cuando e l pol o nort de un im n e s ace rcado a e ll s al v , a ida ariar proporcional -

m e nt de 2,5V h acia l e a t ns in de f nt y s i dam os e ue e v l e lim n, e nf nt ue t a re ndol o alpol s ur l s al baj o , a ida ar de 2,5Va niv l m as a. e de Aprov ch ando e s t y e o para aum e nt l s e ns ibil ar a idad al dobl m ont m os e are dos s e ns ore s opue s t , uno os e nf nt re ado a ot ro. Si l ace rcam os al e m ont e e l pol nort de l aj o e im n, un de l s e ns ore s s uos bir 1V por e ncim a de lniv l e de re pos o ( 2,5V y e lot ) ro baj ar 1V por de baj de o dich o niv lPor l t o t ne e . o ant e m os un s e ns or q ue e nt ga re 3,5V y e lot 1,5. Si e nt ro once s cone ct os un v t e am ol m t ro e nt re s us dos s al idas " UT" t ndre m os una dif O e e re ncia s um ada de 2V (v r e f igura 1). Con e s t arre gl l e o ogram os m ul icar l s e ns ibil t ipl a idad por 2: ah ora 1 Gaus s s e rn 10m V Pe ro com o e l . cam po m agnt ico de l Tie a rra produce 5m V t , odav a re s ul ins uf nt para at t a icie e acar un conv rs or anal e gico / digit . T ndre m os q ue am pl al e if icar e s t s e al uch o m s . a m

h ora de conv rt l s e alde e ir a anal gica a digit . Por e s o al us am os e l am plicador de if ins t e nt rum acin I NA122, de m uy baj ruido y " o rail o rail t " . Es t ch ip de pre cis in s e e s ue l us ar para am plicar e if l m nim as t ns ione s corpoas e rals para e q uipos de e lct e e rocardiogram as y e nce f ograal m as . Es m uy f cilde m ont ar ya q ue s l ne ce s it una o a re s is t ncia e xt rna para de e e cirl q ue ganancia ne ce s it e am os . Si m iram os l h oj de a a dat e ncont os rare m os una f orm ul para cal ar l re s is a cul a t ncia q ue conf e igura l gaa nancia de l plicador: am if (200.000 /R) + 5 = Ganancia

Por e j m pl con una re s is e o t ncia de 360 oh m s s e e cons igue una am plicacin if de 560 v ce s l t ns in e a e e nt e . Por l q ue l 5m V rant o os de lcam po m agnt t rre s ico e t s acaran 2'8 v t por e l re ol ios pin " UT" de lI O NA122. Con e s t ganancias e lruido e s as cons ide rabl y h ay q ue e f t o con capacit s para il rarl ore l ograr al lgibl. Elorige n go e e de e s t ruido capt e ado por l os s e ns ore s h al e s un t m a l e m uy int re s ant , pe ro para e e ot ocas in. ra

En un conv rs or A/ de 10 e D bit (1023 punt de re s ol s os u-

Para e s t t e ipo de apl icacione s l am plicadoos if re s ope racionals (t e ipo L M 358) re s ul t an ine f icace s , int roduce n de m as iado ruido y no s on " rail t rail q ue o " , q uie re de cir q ue no e nt gan re e n s u s al ida una t ns in e m xim a de 5V y m nim a de 0, s ino q ue s u rango dinm ico e s bas t e m e nor l q ue ant , o nos t r problm as a l rae e a //pgina 0x2A

cin) con una t ns in de e re f re ncia de 5V l s al de e , a ida 2,8V de lI NA122 e q uiv e a al una v ariacin de 572 punt . os Al girar 360 v arias v ce s e lm ont e s e obt ne e aj ie una grf ica com o l de l a a f igura 3. Se t a de una rat f uncin SENO . Con un s e ns or s ol e nt t ne m os una am e e coorde nada: l X, o e ls e no. a T ne m os q ue ut iz ar ot e il ro s e ns or cruz ado a 9 0 grados para obt ne r e l e j Y, e l e e cos e no (v r f e igura 2). Ah ora bie n, con dos s e ns ore s cruz ados y s i giram os e lm ont e v aj arias v l ue t com plt de 360 graas e as dos , v re m os dos s e als e e com o l de l f as a igura 4. El de s f e e nt am as re bas grf icas coincide con l os 9 0. I e rpol nt ando am bas m e didas X e Y, y girando e l m ont e 360 grados , obt naj e dre m os una bonit grf de a ica punt com o e s t l de l os a a a f igura 5. Se t a de un crrat cul pe rf ct o e o, f uncin de l s e no y e lcos e no ge ne rados por e lcam po m agnt ico t e rre s t . Cabe acl re arar q ue l as im pe rf ccione s q ue s e v n e e s on de bidas a m ov ie nt im os inde bidos a l h ora de l a os e ns ayos con e l circuit re al o .

L s e als obt nidas as e e por e l circuit t ne n una o ie am plud de 572 punt , con it os e s t pode m os cal ar l pre o cul a cis in q ue t ndr nue s t e ra brj a as : ul 572 x 3.1416 = 179 6 punt de os circunf re ncia t al l e ot de crcul o

360 grados / 6 punt = 0,2 179 os grados de re s ol ucin

f uncin arco-t ange nt para e obt ne r de e s t grf e a ica circul un angul e nt 0 y 360 ar o re grados :

Ah ora unas e cuacione s con

//pgina 0x2B

' ------(v t e s e l j X , v t 1 e s e l j Y)---ol s e e ol s e e I v t = 0 And v t 1 > 0 Th e n angul = 270 f ol s ol s o I v t = 0 And v t 1 < 0 Th e n angul = 9 0 f ol s ol s o I v t > 0 And v t 1 > 0 Th e n angul = 360 - (At ol 1 / f ol s ol s o n(v t s v t ) * (180 /3.1416)) ol s I v t > 0 And v t 1 < 0 Th e n angul = -(At ol 1 /v t ) * f ol s ol s o n(v t s ol s (180 /3.1416)) I v t < 0 Th e n angul = 180 - (At ol 1 /v t ) * (180 / f ol s o n(v t s ol s 3.1416)) printangul o '------------------------------------------------------------------

At ncin: para q ue e s t e o f uncione , h ay q ue aj t e l us ar ce nt de l " ro crcul e n l o" as coorde nadas 0,0. Es t pue o de s h ace rl s im plm e nt re s o e e t ando o s um ando e l v or al ade cuado a X e Y e n e l program a. Con e s t ya t no e dre m os una bonit lct a e ura digit e n grados , con una al pre cis in m ayor de 1 grado. Sol re s t arm ar al o a guna int rf e ace at iv e n V ual ract a is Bas ic o s im il para us ar con ar nue s t h ardw are . ro

Se ns or h alAl gro 1321 (4) l l e Circuit int grado I o e NA122 (2) Re s is t ncia 47 k oh m s (4) e Re s is t ncia 360 oh m s (2) e Capacit 4,7 uF (2) or Capacit 100 nF (1) or

//pgina 0x2C

PI e n t TV un C u !
Al guna v z , com o part de al e e guno de t proye ct , h as ne ce s it us os ado m os t rar al guna inf acin e n l pant l de un t lv or? Es pos ibl q ue s i. Pe ro e l orm a al a e e is e h ardw are y e ls ofw are ne ce s arios para e s t t t e ipo de proye ct no e s f o cilde de s arrol . Sin e m bargo, ah ora podrs h ace rl Es t art o t m os t l ar o. e cul e rar cm o conv rt un PI e ir C18 e n un ge ne rador PAL de graf icos y t xt (e n bl e os anco y ne gro) con un nm e ro m uy re ducido de com pone nt s de baj cos t con un m nim o de e o o, e s f rz o de program acin. ue
/ por: Bruno Gav / ando / / bruno.gav and@ ad-v ore m .f al r

Por q ue una bibl e ca iot PAL para PI ? Si e s t ut iCs s il z ando PI , pos iblm e nt Cs e e al gun da int nt t cons t e as e ruir un dis pos it o proce s ador de iv v o, ya s e a para div rt e o de e irs com o part de un proye ct e o m s grande . Si int nt t ge e as e ne rar s e als de v o, pos ie de blm e nt h ayas v t al e e is o guna de e s t as pginas w e b: Rick ard Gune e s PI PO NG y C Eric Sm it v o re l . h de oj Es t os proye ct os s on div rt e idos , pe ro dif e s de ut iz ar icil il com o un ge ne rador de v o de ide carct r ge ne ral q ue pe rm it e , a ut iz ar un TV com o s i f s e una il ue pant l GL al a CD. H e t nido l ide a de ut e a il ar una e s calra de re s is t s iz e ore com o una f a rpida y barat orm a cde cre ar un conv rt e idor digit al a anal gico, y com e nz ado a t rabaj e n e l ofw are . ar s t

Com o l pant l de v o a al a de //pgina 0x2E

q ue s e h a m ape ado e n m e m oria, s l un PI con s uf nt o C icie e m e m oria RAM pue de ut iz ar il e s t l ra. Es por e l q ue l a ibre l o a PI PAL V o L C ide ibrary s l o f unciona con l f il PI a am ia C18. ElPI de be f C uncionar a 32M H z , con un cris t de 8M H z , al para pode r obt ne r l 64 s e os ne ce s arios para l s incroniz aa cin h oriz ont de l is t m a PAL al s e . L l ra ge ne ra una s e a ibre alPAL de 625 l as int rl ane e az das , y pue de m os t h as t 248 rar a l as v rt e s de 128 pixe ls . ne e ical e Cualuie r dis pos it o con una q iv e nt rada PAL de v o com pue s ide t pue de e m plars e para m os o e t rar l im age ne s ge ne radas as por e l C. PI Dado q ue e lm ane j de o l t m pos e s crt os ie ico, e l ofw as t re s e h a e s crit e n C con al o gunas rut inas e n e ns am bl . El ador C ut iz ado e s e lm ik roC, y pue il de s de s cargar e lproye ct com o plt (incl e o uido e l cdigo f nt ). ue e L l ra cont ne m ua ibre ie ch as f uncione s as i q ue e xpl ica-

re m os e l o de cada una de us el . l as

Prot ipo: ot Parm e t : ros De v le : ue v Re q uie re :

v PAL init oid _ (uns igne d ch ar y) y : nm e ro de l as v rt e s , h as t 128. ine e ical a Nada Elich e ro PAL l f _ ibrary.h de be s e r incl uido enel codigo f nt de l uario. El C18 ue e us PI de be f uncionar a 32M H z . PAL init _ (128);

Es t f a uncin pre para l l ra PI PAL Cuant a ibre C . o m ayor s e a l cant a idad de l as v rt e s q ue de s e e s ine e ical m os t e n e l , m e nor s e r rar TV l cant a idad de m e m oria y de re curs os q ue e l PI t nga C e para e lre s t de lprogram a. o Es t l ra t a e lcont a ibre om rol de l M ER0 y s us int rrupcioTI e ne s as ociadas . T bin ut iam il z a e l RTD. PO

Ej m pl e o:

Prot ipo: ot Parm e t : ros

Es t f a uncin cont a rol l ge ne racin de l s e alde a a v o. Cuando com ie nz a l ide a s incroniz acin PAL l v , a ariabl PAL f e Ct (uns igne d e _ ram r l ong gl ) s e incre m e nt obal a 25 v ce s por s e gundo. e

v PAL cont (uns igne d ch ar s t oid _ rol , uns igne d ch ar rd) s t: Cont de l s incroniz acin PAL rol a . PAL CNTL START : Com ie nz a s incroniz a_ _ cin PAL . PAL CNTL STO P : De t ne l s incroniz a_ _ ie a cin PAL(l ra l re curs os de l C). ibe os PI rd : Cont de re nde r PAL CNTL BL rol _ _ ANK : Sol s e m ue s t l borde s (l ra part o ran os ibe e de l re curs os de l C). os PI PAL CNTL RENDER : M ue s t t _ _ ra odo e l v o, con borde s e im age n (cons um e m s ide re curs os de l C). PI Nada L e j cucin pre v de PAL init a e ia _ (); PAL cont (PAL CNTL START _ rol _ _ , PAL CNTL RENDER); _ _

De v le : ue v Re q uie re : Ej m pl e o:

Es t f a uncin l na l l e a pant l con un pat al a rn de t re m inado. Ut iz a 0x00 para l il im piar l pant l y 0xFF para a al a pint a com plt e nt de arl e am e bl anco.

Prot ipo: ot Parm e t : ros De v le : ue v Re q uie re : Ej m pl e o:

v PAL f l igne d ch ar c) oid _ il (uns c : Pat de re l no rn l e Nada L e j cucin pre v de PAL init a e ia _ (); PAL _ f l L il (0);

Es t f a uncin cam bia e lcol de lborde q ue rode a or l im age n. a

Es t e s l f a a uncin q ue pe rm it dibuj un punt e n e ar o una pos icin de t rm inada de e l pant l a al a. //pgina 0x2F

Prot ipo: ot Parm e t : ros De v le : ue v Re q uie re : Ej m pl e o:

v PAL s e t oid _ Borde r(uns igne d ch ar borde r) borde r : PAL CO L R_ BL _ O ACK o PAL CO L R_ W H I _ O TE Nada L e j cucin pre v de PAL init a e ia _ (); PAL borde r(PAL CO L R_ BL _ _ O ACK );

Es t f a uncin dibuj ua na l a de s de (x0, y0) a (x1, ine y1).

Es t f a uncin dibuj un a circul con ce nt e n (x,y) y o ro radio z .

Prot ipo: ot Parm e t : ros

De v le : ue v Re q uie re : Ej m pl e o:

v PAL s e t oid _ Pixe l ar x, ch ar y, uns igne d (ch ch ar m ode ) x : col na de l um pixe lde 0 a 127 , y : Fil de l a pixe lde 0 a num e ro de l as -1 , ine m ode : col de l or pixe lPAL CO L R_ BL , _ O ACK , PAL CO L R_ W H I o PAL CO L R_ _ O TE _ O REV ERSE Nada L e j cucin pre v de PAL init a e ia _ (); PAL s e t _ Pixe l 20, PAL CO L R_ RE(10, _ O V ERSE);

Es t f a uncin dibuj (y a pint un re ct a) ngul o.

Es t f a uncin dibuj un a re ct ngul v o aco.

Prot ipo: ot Parm e t : ros

v PAL l (ch ar x0, ch ar y0, ch ar x1, oid _ ine ch ar y1, uns igne d ch ar m ode ) x0, y0 : Coorde nadas (f a y col na) de l il um com ie nz o de l l a. a ine x1, y1 : Coorde nadas (f a y col na) de l il um f inal l l a. de a ine m ode : col de l or pixe lPAL CO L R_ BL , _ O ACK , PAL CO L R_ W H I o PAL CO L R_ _ O TE _ O REV ERSE. Nada L e j cucin pre v de PAL init a e ia _ (); PAL l (0, 0, 127, 127, PAL CO L R_ _ ine _ O WH I TE);

Es t f a uncin e s cribe un caract r de t xt e n l f a e e o a il y col na de s e ada. Pue de s um us ar PAL box() para e s cribir _ e n v o inv rt ide e ido.

De v le : ue v Re q uie re : Ej m pl e o:

Es t f a uncin e s cribe una cade na de t xt a part e o ir de l f a y col na de s e ada. a il um

Es t f a uncin e s cribe una cade na de t xt a part e o ir de l f a y col na de s e ada. a il um Es igual l f a a uncion ant rior e , pe ro para t xt al ace nade os m os e n RO M .

//pgina 0x30

Prot ipo: ot Parm e t : ros

De v le : ue v Re q uie re : Ej m pl e o:

v PAL circl(ch ar x, ch ar y, ch ar r oid _ e , uns igne d ch ar m ode ) x : Col na de l nt de l um ce ro circul o. y : Fil de l nt de l a ce ro circul o. r : Radio de l circul o. m ode : col de l or pixe lPAL CO L R_ BL , _ O ACK , PAL CO L R_ W H I o PAL CO L R_ _ O TE _ O REV ERSE Nada L e j cucin pre v de PAL init a e ia _ (); PAL circl(30, 30, 5, PAL CO L R_ W H I _ e _ O TE);

Dibuj a una im age n (Bit ap) pre v e nt al aM iam e m ce nado e n l RO M y apuna t ado por bm , e n l pos icin a (x, y). L im age n s e r m onoa crom a, y pue de ut iz ars e l il a h e rram ie nt a para ge ne rar m apas de bit para GL s CD T69 63 de m ik roElk t e ronik a para conv rt l im age ne s . e ir as

Prot ipo: ot Parm e t : ros

v PAL box(ch ar x0, ch ar y0, ch ar x1, oid _ ch ar y1, uns igne d ch ar m ode ) x0, y0 :Coorde nadas de l e s q uina s upe rior a iz q uie rda. x1, y1 :Coorde nadas de l e s q uina inf rior a e de re ch a. m ode : col de l or pixe lPAL CO L R_ BL , _ O ACK , PAL CO L R_ W H I o PAL CO _ O TE _ L R_ REV O ERSE Nada L e j cucin pre v de PAL init a e ia _ (); PAL box(10, 10, 30, 30, PAL CO L R_ _ _ O WH I TE);

Es t f a uncin no pue de s e r l ada dire ct e nt por l am am e e l uario, pe rode be s e r col us ocada de nt de l f ro a uncin int rrupt At ncin: s i e s t e (). e n h abiladas , ot it ras int rrupcioe ne s pue de ocas ionar proble m as de s incronis m o e n e l v o. ide

De v le : ue v Re q uie re : Ej m pl e o:

Prot ipo: ot Parm e t : ros

De v le : ue v Re q uie re : Ej m pl e o:

v PAL re ct oid _ angl(ch ar x0, ch ar y0, ch ar e x1, ch ar y1, uns igne d ch ar m ode ) x0, y0 :Coorde nadas de l e s q uina s upe rior a iz q uie rda. x1, y1 :Coorde nadas de l e s q uina inf rior a e de re ch a. m ode : col de l or pixe lPAL CO L R_ BL , _ O ACK , PAL CO L R_ W H I o PAL CO L R_ _ O TE _ O REV ERSE Nada L e j cucin pre v de PAL init a e ia _ (); PAL re ct _ angl(10, 10, 30, 30, PAL CO e _ L R_ W H I O TE);

//pgina 0x31

Prot ipo: ot Parm e t : ros

De v le : ue v Re q uie re : Ej m pl e o:

v PAL ch ar(uns igne d ch ar x, uns igne d ch ar y, uns igne d ch ar c, uns igne d oid _ ch ar s iz e ) x : Col na de l um pixe l upe rior iz q uie rdo de l s caract r de 0 t 127 e , o y : Fil de l a caract r de 0 a num e ro de l as -1 e , ine c : Cdigo ASCI de l I caract r e . s iz e : El nibbl al e s e l ul icador de l al e t o m t ipl a t ura, e l o m ul ica e l baj t ipl anch o. T aos pre de f am inidos : PAL CH AR_ STANDARD, PAL CH AR_ DW I _ _ DTH , PAL CH AR_ DH EI T PAL CH AR_ DSI E _ GH , _ Z Nada L e j cucin pre v de PAL init a e ia _ (); PAL ch ar(3, 5, 'A', PAL CH AR_ DSI E); _ _ Z

Prot ipo: ot Parm e t : ros

De v le : ue v Re q uie re : Ej m pl e o:

v PAL w rit (uns igne d ch ar l uns igne d ch ar coluns igne d ch ar *s , oid _ e ig, , uns igne d ch ar s iz e ) l : L a de le xt ig ine t o col Col na de le xt : um t o s : Punt ro a l cade na de t xt (t rm inado e n NUL ) e a e o e L s iz e : El nibbl al e s e l ul icador de l al e t o m t ipl a t ura, e l o m ul ica e l baj t ipl anch o. T aos pre de f am inidos : PAL CH AR_ STANDARD, PAL CH AR_ DW I _ _ DTH , PAL CH AR_ DH EI T PAL CH AR_ DSI E _ GH , _ Z Nada L e j cucin pre v de PAL init a e ia _ (); PAL w rit (0, 5, m ySt _ e ring, PAL CH AR_ STANDARD); _

Prot ipo: ot Parm e t : ros

De v le : ue v Re q uie re : Ej m pl e o:

v PAL cons t rit (uns igne d ch ar l uns igne d ch ar colcons tuns igne d oid _ W e ig, , ch ar *s , uns igne d ch ar s iz e ) l : L a de le xt ig ine t o col Col na de le xt : um t o s : Punt ro a l cade na de t xt (t rm inado e n NUL ) e a e o e L s iz e : El nibbl al e s e l ul icador de l al e t o m t ipl a t ura, e l o m ul ica e l baj t ipl anch o. T aos pre de f am inidos : PAL CH AR_ STANDARD, PAL CH AR_ DW I _ _ DTH , PAL CH AR_ DH EI T PAL CH AR_ DSI E _ GH , _ Z Nada L e j cucin pre v de PAL init a e ia _ (); PAL w rit (0, 5, m yCons t St _ e ant ring, PAL CH AR_ STANDARD); _

//pgina 0x32

Prot ipo: ot Parm e t : ros

De v le : ue v Re q uie re : Ej m pl e o:

v PAL pict (uns igne d ch ar x, uns igne d ch ar y, cons tuns igne d ch ar oid _ ure *bm , uns igne d ch ar s x, uns igne d ch ar s y) x : col na de l um pixe l upe rior iz q uie rdo de l im age n. s a y : f a de l il pixe l upe rior iz q uie rdo de l im age n. s a bm : Punt ro al m ap e n RO M e bit s x : Anch o de l im age n. a s y : Al de l im age n. t o a Nada L e j cucin pre v de PAL init a e ia _ (); PAL pict (0, 0, pict 128, 128); _ ure ,

L im age n s iguie nt a e m ue s t e le s q ue m a e lct ra e rico de l ardw are propue s t h o. Elcoraz n de lcircuit o e s un PI C18F4620. C1, C3 y C4 s on conde ns adore s de de s acopl. El PI f e C unciona con un cris t de 8 M H z . D1 al s e ut iz a com o un s e ns or de il t m pe rat e ura cone ct ado al

Prot ipo: v PAL I ot oid _ SR() Parm e t : ros De v le : Nada ue v Re q uie re : Ej m pl e o: L e j cucin pre v de PAL init a e ia _ (); v int rrupt oid) oid e (v { PAL I _ SR(); }

//pgina 0x33

conv rs or anal e ogico digit al de lPI L s e alde v o C. a ide s e obt ne de l re s is t s ie os ore R8 y R9 . L puladore s s e os s e m plan para conf e igurar e l s of. t L s e al de s al a ida pue de apl icars e dire ct e nam t a l e nt e a rada de v o ide com pue s t de un aparat de o o TV .

Els iguie nt program a e s irv de e j m pl de com o e e o pue de s ut iz ar l f il as uncione s incl uidas e n l PI a C PAL L ibrary. En un PI C18F4620 ut il a s ol e nt e l25% de l iz am e a RO M y e l 55% de l RAM ! a L prim e r pant l de l a al a program a m ue s t una im ara ge n de 128x128 pixe ls , con e un borde parpade ant . El e program a e s pe ra a q ue s e pule l t cl cone ct s a e a ada a RB7 para m os t l s e gunrar a da pant l al a. L s e gunda pant l a al a m ue s t un re l -calndario y ra oj e l t m pe rat a e ura. L h ora s e a m ue s t s im ul am e nt e n ra t ane e f a digit y anal orm al gica. RB0 cam bia l m inuos t , RB1 l h oras , RB2 e l os as da, RB3 e lm e s y RB4 e l ao. RB5 pe rm it aj t l e us ar a t m pe rat e ura. Pre s ionando RB7 j o a l ant riore s opunt as e cione s , l v ore s de cre os al m e nt an e n l ugar de incre m e nt e . ars

El arch iv z ip cont ne : o ie PAL l _ ibrary.c, 37 K b : Cdigo f nt de l l ria ue e a ibre PAL l _ ibrary.h , 2 K b : De f inicione s de l l ria a ibre PAL m o.c, 15 K b : Cdigo de l j m pl de e e o PAL m o.e e d, 1 K b : De f de inicin de l EEPRO M a PAL m o.h e x, 46 K b : Arch iv H EX f de o para e l C18F4620 PI PAL m o.ppc, 2 K b : m ik roC proj ct de e pict s .h , 9 K b : bit ap de e j m pl ure m e o

Pue de s de s cargar e l proye ct com plt incl o e o, uido el codigo f nt de s de aq u. ue e //pgina 0x34

/ * *f e il : PAL m o.c de * proj ct : PI PALSO FTW ARE VDEO GENERATO R DEM O e C I * aut or h : Bruno Gav and * com pilr : m ik roC V e 6.2 * dat e : January 17, 2006 * * de s cript ion : * Th is program dis pl a cl , a calndar and t e t m pe rat on a TVs cre e n ays ock e h e ure * and s h ow s h ow t us e t e PI PALl o h C ibrary. * pre s s RB7 t s k ip t e w e l e s cre e n o h com * t adj tcl and calndar pre s s : o us ock e , * RB0 t adj tm inut o us e * RB1 t adj th our o us * RB2 t adj tday o us * RB3 t adj tm ont o us h * RB4 t adj tye ar o us * RB5 t adj tt m pe rat o us e ure * pre s s RB7 att e s am e t e t de cre m e nt h im o . * *t arge tde v : ice * PI C18F4620 @ 32 M h z (8 M h z crys t + H S PL ) al L * * L nce : ice * Fe e lre e t us e t is s ource code atyour ow n ris k s . f o h * * h is t : ory * cre at d j e anuary 2007 * * s e e m ore de t s on h tp:/w w w .m icro-e xam pls .com / ail t / e */ #incl ude #incl ude " PAL L _ ibrary.h " " ure s .h " pict

/ ************* * DEFI TI NS NI O *************/ / * * graph */ #de f ine #de f ine #de f ine #de f ine #de f ine #de f ine

ic cl ock CL _ CENTER_ X 9 0 K CL _ CENTER_ Y 60 K CL _ RADI K US_ PSS 28 CL _ RADI K US_ SS 25 CL _ RADI K US_ M N 20 CL _ RADI K US_ H H 15 16 / ce nt r / e / cl radius / ock / s e conds / / m inut s / e / h ours / / num be r oft m pe rat s am pls / e ure e

#de f DEG_ NBH I ine STO //pgina 0x35

/ * * num be r ofv rt e ical pixe l s *f rom 1 t 128 incl d o ude * t e m ore pixe l you h av : h s e * - t e ls s RAM you h av h e e * - t e ls s M CU t e you h av h e im e */ #de f PAL Y ine _ 128 / * * s im pl t e s t ure de f ion e im ruct init */ t de fs t ype ruct { uns igne d ch ar s s ; / s e conds / uns igne d ch ar m n ; / m inut s / e uns igne d ch ar h h ; / h ours / uns igne d ch ar m d ; / day in m ont , f / h rom 1 t 31 o uns igne d ch ar w d ; / day in w e e k , m onday=0, t s day=1, .... s unday=6 / ue uns igne d ch ar m o ; / m ont num be r f / h , rom 1 t 12 o /(and notf / rom 0 t 11 as w it unix C t e !) o h im uns igne d int yy ; / ye ar Y2K com pl , f / iant rom 189 2 t 2038 o }Tim e St ruct; / ******************** * RO M CO NSTANTS ********************/ / * * m ont nam e s h */ cons tuns igne d ch ar m ont St h r[13][4] = { " ?" " ? ?, Jan" " b" " ar" " , Fe , M , Apr" " ay" " , M , Jun" " " " , Jul Aug" " p" " ct , " , , Se , O " Nov , " c" " De }; / * * day ofw e e k nam e s */ cons tuns igne d ch ar w Days t r[7][4] = { " on" " " " e d" " u" " , " " " M , Tue , W , Th , Fri" Sat , Sun" }; / ******************** * RAM V ABL ARI ES ********************/ / * * s cre e n m e m ory m ap //pgina 0x36

* do notch ange t is l ! h ine */ uns igne d ch ar PAL s cre e n[PAL X * PAL Y /8] ; _ _ _ / * * ge ne ral purpos e s t ring */ uns igne d ch ar s t r[20] ; ch ar de gRe f; / DAC t m pe rat re f re nce / e ure e ch ar de gH is t o[DEG_ NBH I STO ] ; / t m pe rat s am pls bufe r /e ure e f ch ar tdx = 0 ; I / t m pe rat s am pls inde x /e ure e uns igne d l ong s e cO fs e t= 0 ; f / re f re nce t e s t p / e im am uns igne d l ong ol r = 0 ; dCt / f e count r back up / ram e Tim e St ruct t ; s /t e st / im ruct / ************************* * FUNCTI NS O *************************/ / * * adj tt e s t us im ructm e m be r */ v oid adj t us (uns igne d ch ar *v uns igne d ch ar m in, uns igne d ch ar m ax) , { if RTB.F7) (PO { if == m in) *v = m ax ; (*v e le (*v ; s )-} e le s { if == m ax) *v = m in ; (*v e le (*v + ; s )+ } } / * * conv rtv ue v int s t e al o ring point d t by p, lading z e ro bl s ifbl is s e t e o e ank k */ v oid ch ar2s t r(uns igne d ch ar *p, uns igne d ch ar v uns igne d ch ar bl) , k { *p = v /10 + '0' ; if k & & (*p == '0')) (bl { *p = ' ' ; } p+ + ; *p = v % 10 + '0' ; //pgina 0x37

p+ + ; *p = 0 ; } / * * draw s cre e n w it de corat iff l s e t us ing v o m ode m ode h ion ulis , ide */ v oid draw Scre e n(uns igne d ch ar f luns igne d ch ar m ode ) ul , { s t ic uns igne d ch ar os x = CL _ CENTER_ X, os y = CL _ CENTER_ Y, at K K om x = CL _ CENTER_ X, om y = CL _ CENTER_ Y, K K oh x = CL _ CENTER_ X, oh y = CL _ CENTER_ Y ; K K uns igne d int i ; int t; uns igne d ch ar s s ; uns igne d ch ar s x, s y, m x, m y, h x, h y ; PAL cont (PAL CNTL START m ode ) ; _ rol _ _ , if ul (f l ) / draw f l cre e n w it de corat / uls h ion { PAL f l ; _ il (0) PAL cons t rit ( 0, 0, " _ W e \xC9 \xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\ xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xBB" PAL CH AR_ STANDARD) ; , _ PAL cons t rit ( 1, 0, " _ W e \xBA PALLBRARY DEM O \xBA" PAL CH AR_ STANDARD) ; I , _ PAL cons t rit ( 2, 0, " _ W e \xC8\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\ xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xBC" PAL CH AR_ STANDARD) ; , _ PAL box(0, 0, 127, 21, PAL CO L R_ REV _ _ O ERSE) ; PAL cons t rit ( 3, 0, " _ W e \xC9 \xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCB\xCD\xCD\ xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xBB" PAL CH AR_ STANDARD) ; , _ PAL cons t rit ( 4, 0, " _ W e \xBA \xBA \xBA" PAL CH AR_ STANDARD) ; , _ PAL cons t rit ( 5, 0, " _ W e \xBA \xBA \xBA" PAL CH AR_ STANDARD) ; , _ PAL cons t rit ( 6, 0, " _ W e \xBA \xBA \xBA" PAL CH AR_ STANDARD) ; , _ PAL cons t rit ( 7, 0, " _ W e \xBA \xBA \xBA" PAL CH AR_ STANDARD) ; , _ PAL cons t rit ( 8, 0, " _ W e \xBA \xBA \xBA" PAL CH AR_ STANDARD) ; , _ PAL cons t rit ( 9 , 0, " _ W e \xBA \xBA \xBA" PAL CH AR_ STANDARD) ; , _ PAL cons t rit (10, 0, " _ W e \xBA \xBA \xBA" PAL CH AR_ STANDARD) ; , _ PAL cons t rit (11, 0, " _ W e \xCC\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCA\xCD\xCD\ xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xB9 " PAL CH AR_ STANDARD) ; , _ PAL cons t rit (12, 0, " _ W e \xBA \xBA" PAL CH AR_ STANDARD) ; , _ PAL cons t rit (13, 0, " _ W e \xBA \xBA" PAL CH AR_ STANDARD) ; , _ PAL cons t rit (14, 0, " _ W e \xBA \xBA" PAL CH AR_ STANDARD) ; , _ PAL cons t rit (15, 0, " _ W e \xC8\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\ xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xBC" PAL CH AR_ STANDARD) ; , _ PAL w rit (4, 3, " _ e H :" PAL CH AR_ DH EI T) ; , _ GH

PAL cons t rit (12, 3, " _ W e TEM P : " 0x31) ; . , //pgina 0x38

PAL cons t rit (12, 17, " 8C" 0x31) ; _ W e \xf , f s = 0 ;s s < 60 ;s s + + ) or(s { s x = CL _ CENTER_ X - (cos E3(9 0 + 6 * s s ) * CL _ RADI K K US_ PSS) /1000 ; s y = CL _ CENTER_ Y - (s inE3(9 0 + 6 * s s ) * CL _ RADI K K US_ PSS) /1000 ; PAL s e t _ Pixe l x, s y, PAL CO L R_ W H I (s _ O TE) ; if s % 5) == 0) ((s { PAL s e t _ Pixe l x + 1, s y, PAL CO L R_ W H I (s _ O TE) ; PAL s e t _ Pixe l x - 1, s y, PAL CO L R_ W H I (s _ O TE) ; PAL s e t _ Pixe l x, s y + 1, PAL CO L R_ W H I (s _ O TE) ; PAL s e t _ Pixe l x, s y - 1, PAL CO L R_ W H I (s _ O TE) ; } } } if (PAL f e Ct > O l r) _ ram r dCt { uns igne d ch ar h ; / it t e t updat t e cl & calndar / 's im o e h ock e

ol r = PAL f e Ct + 24 ; / pre pare ol r f ne xtupdat t e dCt _ ram r / dCt or e im / conv rtt e s t p t dat and t e / e im am o e im Tim e _ Epoch T oDat (s e cO fs e t+ PAL f e Ct /25, & t ) ; e f _ ram r s

/ * * draw anal cl og ock */ s x = CL _ CENTER_ X - (cos E3(9 0 + 6 * t .s s ) * CL _ RADI K s K US_ SS) /1000 ; s y = CL _ CENTER_ Y - (s inE3(9 0 + 6 * t .s s ) * CL _ RADI K s K US_ SS) /1000 ; m x = CL _ CENTER_ X - (cos E3(9 0 + 6 * t .m n) * CL _ RADI K s K US_ M N) /1000 ; m y = CL _ CENTER_ Y - (s inE3(9 0 + 6 * t .m n) * CL _ RADI K s K US_ M N) /1000 ; h = (t .h h % 12) * 5 + (t .m n /8) ; s s h x = CL _ CENTER_ X - (cos E3(9 0 + 6 * h ) * CL _ RADI K K US_ H H ) /1000 ; h y = CL _ CENTER_ Y - (s inE3(9 0 + 6 * h ) * CL _ RADI K K US_ H H ) /1000 ; if x != oh x) || (h y != oh y)) ((h { PAL l (CL _ CENTER_ X, CL _ CENTER_ Y, oh x, oh y, _ ine K K PAL CO L R_ BL _ O ACK ) ; } if x != om x) || (m y != om y)) ((m {

//pgina 0x39

PAL l (CL _ CENTER_ X, CL _ CENTER_ Y, om x, om y, PAL CO L R_ BL _ ine K K _ O ACK ) ; } if x != os x) || (s y != os y)) ((s { PAL l (CL _ CENTER_ X, CL _ CENTER_ Y, os x, os y, _ ine K K PAL CO L R_ BL _ O ACK ) ; } PAL l (CL _ CENTER_ X, CL _ CENTER_ Y, h x, h y, PAL CO L R_ W H I _ ine K K _ O TE) ; PAL l (CL _ CENTER_ X, CL _ CENTER_ Y, m x, m y, PAL CO L R_ W H I _ ine K K _ O TE) ; PAL l (CL _ CENTER_ X, CL _ CENTER_ Y, s x, s y, PAL CO L R_ W H I _ ine K K _ O TE) ; / * * printdat and t e e im */ ch ar2s t t, t .s s , 0) ; r(s r s PAL w rit (4, 7, s t, PAL CH AR_ DH EI T) ; _ e r _ GH ch ar2s t t, t .m n, 0) ; r(s r s PAL w rit (4, 4, s t, PAL CH AR_ DH EI T) ; _ e r _ GH ch ar2s t t, t .h h , 1) ; r(s r s PAL w rit (4, 1, s t, PAL CH AR_ DH EI T) ; _ e r _ GH PAL cons t rit (6, 2, w daySt s .w d], PAL CH AR_ STANDARD) ; _ W e r[t _ PAL cons t rit (7, 2, m ont St s .m o], PAL CH AR_ DH EI T) ; _ W e h r[t _ GH ch ar2s t t, t .m d, 1) ; r(s r s PAL w rit (6, 5, s t, 0x32) ; _ e r w ordT r(t .yy, s t ; oSt s r) PAL w rit (9 , 1, s t + 1, PAL CH AR_ DSI E) ; _ e r _ Z / * * s av ol v ue f f tanal cl claning atne xtupdat e d al or as og ock e e */ os x = s x ; os y = s y ; om x = m x ; om y = m y ; oh x = h x ; oh y = h y ; t= de gRe f- Adc_ Re ad(4) ; / re ad t m pe rat s e ns or / e ure t*= 221 ; t/ 102 ; = t= 25 + t; / t m pe rat coe ficie ntoft e s il /e ure f h icon j unct ion / ge tt e re s ulin ce l / h t cius

/ * * adj tl it us im s */ //pgina 0x3A

if < -9 9 ) (t { t= -9 9 ; } if > 9 9 ) (t { t= 9 9 ; } / * * av rage v ue s e al */ de gH is t I = t; o[tdx] tdx+ + ; I if I == DEG_ NBH I (tdx STO ) { tdx = 0 ; I } t= 0 ; f = 0 ;i < DEG_ NBH I or(i STO ;i+ + ) { t+ = de gH is t ; o[i] } t/ DEG_ NBH I = STO ; / * * printt m pe rat e ure */ if < 0) (t { i = -t; PAL cons t rit (12, 11, " , 0x31) ; _ W e -" } e le s { i = t; PAL cons t rit (12, 11, " " 0x31) ; _ W e , } ch ar2s t t, i, 1) ; r(s r PAL w rit (12, 12, s t, 0x32) ; _ e r } / re s t v o re nde ring ifitw as s t / ore ide oppe d PAL cont (PAL CNTL START PAL CNTL RENDER) ; _ rol _ _ , _ _ } / * * int rrupts e rv rout e ice ine */ v oid int rrupt oid) e (v {

//pgina 0x3B

/ * * do PALs t f uf */ PAL I _ SR() ; } / * * m ain program */ v m ain(v oid oid) { uns igne d ch ar i ; / * * I O conf / igurat ion */ ADCO N1 = 0x0f; TRI = 0xf ; SA f PO RTA = 0 ; TRI = 0xf ; SB f PO RTB = 0 ; TRI = 0xf ; SC f PO RTC = 0 ; TRI = 0 ; SD PO RTD = 0 ; TRI = 0 ; SE PO RTE = 0 ; de gRe f= EEPRO M _ re ad(0) ; / ge tt m pe rat cal ion f / e ure ibrat rom EEPRO M / * * de f tt e and dat aul im e */ t .s s = 0 ; s t .m n = 0 ; s t .h h = 12 ; s t .m d = 1 ; s t .m o = 1 ; s t .yy = 2007 ; s s e cO fs e t= Tim e _ dat T f e oEpoch (& t ) ; s / * * s t v o and dis pl f ts cre e n art ide ay irs */

/l / ibrary cal l

//pgina 0x3C

PAL init _ (PAL Y) ; _ / initPALl / ibrary PAL f l ; _ il (0) / clar s cre e n / e PAL pict (0, 0, l _ ure ogo_ bm p, 128, 128) ; / paintpict / ure PAL cont (PAL CNTL START PAL CNTL RENDER) ; / s t v o and re nde ring _ rol _ _ , _ _ / art ide i=0; w h il(PO RTB == 0) / w aitf a k e y t be pre s s e d e / or o { / * * ch ange borde r col t o t e s pe r s e cond or w im */ if (PAL f e Ct > 12) _ ram r { PAL s e t _ Borde r(i) ; i = !i ; PAL f e Ct = 0 ; _ ram r } } PAL s e t _ Borde r(PAL CO L R_ BL _ O ACK ) ;/clar borde r / e draw Scre e n(1, PAL CNTL BL _ _ ANK ) ;/draw f l cre e n in bl m ode (f t r) / uls ank as e f ; or(;) { if RTB & 0b1111111) / a k e y is pre s s e d (PO / { Tim e _ Epoch T oDat (s e cO fs e t+ PAL f e Ct /25, & t ) ; e f _ ram r s / * * calndar s e tings e t */ if RTB.F0) (PO { adj t t .m n, 0, 59 ) ; us (& s t .s s = 0 ; s } if RTB.F1) (PO { adj t t .h h , 0, 59 ) ; us (& s t .s s = 0 ; s } if RTB.F2) (PO { adj t t .m d, 1, 31) ; us (& s } if RTB.F3) (PO { adj t t .m o, 1, 12) ; us (& s } if RTB.F4) (PO //pgina 0x3D

{ if RTB.F7) t .yy-- ;e le t .yy+ + ; (PO s s s } s e cO fs e t= Tim e _ dat T f e oEpoch (& t ) ; / ne w t e s t p s / im am / * * t m pe rat cal ion e ure ibrat */ if RTB.F5) (PO { if RTB.F7) (PO { de gRe f ; -EEPRO M _ w rit (0, de gre f ; e ) } e le s { de gRe f + ; + EEPRO M _ w rit (0, de gre f ; e ) } } w h il(PO RTB & 0b1111111) ;/ w aitf t e k e y t be re las e d e / or h o e PAL f e Ct = 0 ; _ ram r ol r = 0 ; dCt } draw Scre e n(0, PAL CNTL RENDER) ; / updat s cre e n _ _ / e } } / re s e tcount rs / e

//pgina 0x3E

También podría gustarte