Está en la página 1de 64

/ /DESCARGA GRATUI TA / /

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

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

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

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

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

.indice

M dul o PI C TRAI NER 28

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

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

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

m dul o PI C TRAI NER 28


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

Siguie ndo con l a s e rie de pl acas de s t inadas a f orm ar part e de nue s t ro e nt re nador m odul ar PI C TRAI NER, v am os av e r com o cons t ruir e l m dul o q ue pe rm it e re al iz ar e xpe rim e nt os con PI Cs de 28 pine s . Dado q ue e l dis e o de l circuit oyl a pl aca de circuit o im pre s o s e as e m e j a m uch o a l as dos ant e riore s (PI C TRAI NER 40 y PI C TRAI NER 18), s ol o v e re m os s us punt os m s re l ev ant e s , pudie ndo e l l e ct or cons ul t ar l os ot ros art cul os de l a s e rie para conoce r m s de t al l e s int e re s ant e s s obre e l proye ct o. Aligualq ue ant es, t e ne m os q ue re com e ndar f ue rt e m e nt e l a cons ul t a de l as h oj as de dat os de l os ch ips q ue q ue ram os pinch ar e n e s t a pl 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 a m is m a f orm a, e s t o no s e garant iz a e n e l 100% de l os m ode l os .

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

//pgina 0x05

//pgina 0x06

ne ra de dos t ornil l os pe rm it e al im e nt ar a l a pl aca, y un diodo 1N4007 prot e ge al circuit o de una cone xin con l a pol aridad e q uiv ocada. T al com o re com ie nda l a h oj a de dat os de l re gul ador de v ol t aj e , h e m os col ocado l os dos conde ns adore s de 0.1 uF de rigor . Ade m s , un conde ns ador e l e ct rol t ico de 470uF/ 16V f il t ra e l poco rippl e q ue pue da h abe r e s capado al f il t ro de l a f ue nt e e xt e rna, y un diodo 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 est al im e nt ado. T alcom o ocurra con l as pl acas para m icrocont rol adore s de 18 o 40 pine s , e n l ugar de ut il iz ar un cris t al com o os cil ador de l PI C h e m os col ocado 3 de e l l os , t am bie n s e l e ccionabl es mediant e una s e rie de j um pe rs (ide nt if icados com o JP4, JP5 y JP6). De e s t a m ane ra podre m os probar nue s t ros program as o m icrocont rol adore s a dif e re nt es f re cue ncias de t rabaj o. L os dos conde ns adore s de 22pF com pl et an e s t a part e de l circuit o. En cas o de ut il iz ar PI Cs q ue f uncione n a m s de 20 M H z , e s pos ibl e q ue 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 oca m s de un j um pe r a l a v e z e lm icrocont rol ador no f uncionar. En cuant o a l os cris t al e s , h e m os e l e gido (com o pue de v e rs e e n e le s q ue m a el ct rico) v al ore s de 4M H z , 8M H z y 20M H z , pe ro nada im pide ut il iz ar ot ros . Ell e ct or //pgina 0x07

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

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

enel e nt re nador . L a nica e xce pcin, o de s v o de l o norm al , q ue pue de s v e r e n e l diagram a de l os cone ct ore s e s e n l os pine s corre s pondie nt es a RB6 (CL O CK ) y RB7 (DATA), ya q ue pos e e n un re s is t or de 220 oh m s e n s e rie . Cum pl e n con l a f uncin de pe rm it ir program ar e l PI C m e diant e e l cone ct or I CSP s in ne ce s idad de re t irar e lcabl e q ue cone ct a e le nt re nador con e lm odul o de t urno. Por s upue s t o, s i l o de s e as pue de s re e m pl az ar e s os dos re s is t ore s por s e ndos pue nt e s . Sol o de be rs q uit ar e l cabl e pl ano a l a h ora de re program ar e l PI C. Elpin 1, q ue corre s ponde al RESET e n l os m icrocont rol adore s PI C de 28 pine s com pat ibl e s con est e e nt re nador , est a unido a un pul s ador a t rav s de un re s is t or de 470 oh m s y a + V m e diant e ot ro de 4.7K y un diodo 1N4148. Al pre s ionar e lpul s ador , e lm icrocont rol ador s e re s e t e a. Durant e el f uncionam ie nt o norm al de l program a, e lpin e s t a a +V . El diodo im pide l os probl em as q ue podran s urgir e nt re l as al im e nt acione s de l m dul o y de l program ador al ut il iz ar e l cone ct or I CSP . l as m is m as norm as q ue e xpl icam os e n e l art cul o principal de nue s t ra re v is t a nm e ro 4, as q ue no de be ras t e ne r probl e m as a l a h ora de de t e rm inar l a f uncin de cada pin. Com o re gl a ge ne ral , re cue rda q ue de l os pine s e xt e riore s de cada cone ct or //pgina 0x08 s ol o s e e m pl e a uno (+ V ) y l os ot ros cuat ro e s t n s in cone ct ar . De l o cinco int e rior , uno corre s ponde a GND y l os ot ros 4 a dat os . De be rias t e ne r a m ano e lgraf ico con l a f 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 os , e s t ars alt ant o de q ue bas t a con de s cargar e l arch iv o PDF corre s pondie nt e alPCB de s de nue s t ra W e b, y m e diant e l af orm a q ue m s t e gus t e (pue de s us ar e l

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

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

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

//pgina 0x09

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

m odo de dire ccionam ie nt o indire ct ose e m pl e an dos re gis t ros e s pe cial es:el FSR y e l I NDF

En l a program acin de l os m icrocont rol adore s PI C l a m ayora de l as ins t ruccione s e m pl e an dire ccionam ie nt o dire ct o, pe ro t am bin e s pos ibl e q ue ope re n e n un m odo de dire ccionam ie nt o indire ct o. Para e s t e m odo s e e m pl ean dos re gis t ros e s pe cial es: e lFSR y e lI NDF (e s t e l t im o no e s un re gis t ro f s ico). El re gis t ro FSR se e m pl e a para s e al ar o apunt ar a una dire ccin de l a m e m oria RAM cuyo cont e nido pue de s e r l e do o e s crit o de f orm a indire ct a e m pl e ando cual q uie r ins t ruccin q ue us e com o ope rando al re gis t ro I NDF . Es t a f orm a de dire ccionam ie nt o e s part icul arm e nt e t ilcuando s e m ane j an t abl as o arre gl os de dat os . Ut il iz are m os e l dire ccionam ie nt o I ndire ct o para cre ar l a t abl a de cont rol de l Dis pl ay de 7 s e gm e nt os y e n e s t e cas o no ut il iz are m os e lpul s ador , s ol o se h ar e lcont ador aut om t ico de 0 a 9 . Al iniciar e l m icrocont rol a-

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

//pgina 0x0B

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

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

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

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

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

//pgina 0x0C

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

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

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

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

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

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

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

guie nt e ins t ruccin.

Prim e ro s e de be guardar e lcont e nido de lre gis t ro W y STATUS. El probl ema de m ov e r W a ot ro re gis t ro (h acie ndo us o de m ov f ) es q ue e s t a ins t ruccin corrom pe l a bande ra Z , m odif icando e lre gis t ro de STATUS. Se gn l a h oj a de dat os ot 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 os re gis t ros s in m odif icarl os .

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

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

//pgina 0x11

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

; **** I nicio de l M icro **** Re s e t org 0x00 ;Aq u com ie nz a e l m icro.got o I nicio ;Sal t o a inicio de m i program a.; **** V e ct or de I nt e rrupcin **** org 0x04 ;At ie ndo I nt e rrupcin.got o I 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 ov l w b'11111101' ;RB0 com o e nt rada y RB1 com o s al ida.m ov w fTRI SB bs f O PTI O N_ REG,I NTEDG ;Conf ig. Por f l anco As ce nde nt e .bcf STATUS,RP0 ;Pas o de l Banco 1 al Banco 0 bcf PO RTB,L e d ;El L e d com ie nz a apagado.m ov l w b'10010000' ;H abil it am os GI EyI NTE (int e rrupcin por RB0) m ov w fI NTCO N ; **** Bucl e inf init o **** Bucl e nop ; got o Bucl e ; ; ............................................. ; **** Rut ina de s e rv icio de I nt e rrupcin **** ; **** I nt e rrupcin por RB0 **** I SR bt f ss I NTCO N,I NTF ;Cons ul t am os s i e s por RB0.re t f ie ;No, Sal im os de int e rrupcin.cal l De m ora_ 20m s ;Com prue ba s i e s re bot e .bt f s s PO RTB,Pul s ador got o Fin_ I SR ;Es re bot e , e nt once s s al im os .bt f s s PO RTB,L ed ;Si e s t a pre ndido, l o apagam os .got o Pre nde r_ L ed bcf PO RTB,L ed ;Apagam os L ed got o Fin_ I SR Pre nde r_ L ed bs f PO RTB,L ed ;Ence nde m os L ed //pgina 0x12

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

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

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

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

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

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

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

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

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

Nul l _t e cl a cl rf NT e cl a re t urn

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

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

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


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

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

Es por e l l o q ue nos h e 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 ros proye ct os . L as f uncione s q ue posee est al ibre ra s on l as s iguie nt es: GL CD_ l im piar(col or) GL CD_ inicial iz a(m odo) GL CD_ punt o(x, y, col or) GL CD_ l ine a(x1, y1, x2, y2, 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 as cone xione s e nt re e lPI C y e lGL CD s on l as s iguie nt es:

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

/ / -------------------------------------------------------------------------------/ /GL CD_ inicial iz a(m odo) - Es t af uncin inicial iz a e l L CD. / / -------------------------------------------------------------------------------v oid GL CD_ inicial iz a(int 1 m odo) { / /Pone l os pine s de cont rol enel est ado corre ct o. out put _ h igh (GL CD_ RESET); out put _l ow (GL CD_ E); out put _l ow (GL CD_ CS1); out put _l ow (GL CD_ CS2); out put _l ow (GL CD_ DI ); / /M odo ins t ruccin / /Env io dat os de inicial iz acin ----------------------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 iz a e nce ndido. Sino, apagado. if (m odo == 1) { GL CD_ e nv iaBYTE(GL CD_ l ado_ CS1, 0x3F); / /Encie ndo e l GL CD GL CD_ e nv iaBYTE(GL CD_ l ado_ CS2, 0x3F);} el se { GL CD_ e nv iaBYTE(GL CD_ l ado_ CS1, 0x3E); / /Apago e l GL CD GL CD_ e nv iaBYTE(GL CD_ l ado_ CS2, 0x3E);} / /Borro l a pant al l a GL CD_ l im piar(0); } " pint a" t oda l a pant al l a con uno u ot ro col or . Si re cibe com o parm e t ro un " 1" , l a pint ar com pl et am e nt e de ne gro. Si re cibe un " 0" , l a l im piar por com pl et o. Su f uncionam ie nt o t am bin e s m uy s e ncil l o, y s e " apoya" e n GL CD_ e nv ia BYTE() para e s cribir e n e l GL CD. Re corre am bas m it ade s de l GL 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 l e gido pint ar o borrar .

//pgina 0x19

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

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

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

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

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

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

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

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

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

L os re ct ngul os de dibuj an (int e rnam e nt e ) m e diant e cuat ro l l am adas a l a f uncin GL CD_ l ine a. 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 a una l ine a de s de (x1,y1) a (x2,y2) de col or (0 o 1) / / -------------------------------------------------------------------------------v oid GL CD_ l ine a(intx1, inty1, intx2, inty2, int 1 col or) { / / De cl aro v ariabl e s ------------------s igne d int x, y, incre m e nt o_ x, incre m e nt o_ y, dis t ancia_ x, dis t ancia_ y; s igne d l ong P; inti;

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

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

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

//pgina 0x1D

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

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

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

//pgina 0x1E

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

/ /Dibuj o una caj a GL CD_ caj a(20,20,115,32,1); } / / ----------------------------------------------------------------------/ /Dibuj a un circul o con ce nt ro e n (x1,y1), radio / /y col or (0 1) / / ----------------------------------------------------------------------v oid GL CD_ circul o(intx1, inty1, intradio, int 1 col or) { s igne d intd, x, y; / / I nicial iz o l as v ariabl es. d = 1 - radio; x = 0; y = radio; / /Dibuj ol os cuat ro pxe l e s q ue " cae n" s obre l os e j es / /cart e s ianos . 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 es el bucl e q ue pint al os oct av os de l a circunf e re ncia. w h il e (x < y) { if (d < 0) {d = d + 2 * x + 3; } el s e {d = d + 2 * (x - y ) + 5; y=y-1; } x = x + 1; / / Pone e l punt o e n cada uno de l os " oct ant es" . 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 ude <16F877A.h > #de v ice *=16 #incl ude <s t dl ib.h > #f us e s H S,NO W DT ,NO L V P #USE DEL AY (CL O CK =20000000) #incl ude <GL CD_ K 0108.C> / / -------Com ie nz a e l program a ----------------------v oid m ain() { inti; GL CD_ inicial iz a(1); GL CD_ l im piar(0); / / I nicial iz o e l GL CD, e nce ndido. / / L im pio l a pant al l a

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

//pgina 0x20

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

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

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

/ /Pue rt o D com o e nt rada / /GL CD e n M odo l e ct ura / /Se l e cciono l a m it ad de l dis pl ay a l eer .

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

//pgina 0x21

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


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

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

ot ra v ariant e de l l e nguaj e. L o q ue de be m os h ace r es v e rif icar e l est ado de l os pul 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 o de be m os cone ct ar l as cuat ro col um nas de lt e cl ado a cuat ro pine s de s al ida de l PI C, y l as cuat ro f il as a ot ros cuat ros pine s de e nt rada de l m icrocont rol ador . L a s e cue ncia a s e guir e s l a s iguie nt e: Act iv ar l a prim e ra col um na. V e rif icar f il aaf il a e n bus ca de un uno (1) l gico. Apagar l a prim e ra col um na. Re pe t ir e l proce dim ie nt o con l as col um nas s iguie nt es.

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

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

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

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

//pgina 0x24

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


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

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

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

s iguie nt e:

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

//pgina 0x27

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


El f s ico Edw in H al l de s cubri (por cas ual idad) e l ef e ct o q ue l l ev a s u nom bre e n e l 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 t ipl e s s e ns ore s q ue aprov e ch an e s t e f e nm e no. H acie ndo us o de e l l os podre m os cons t ruir una brj ul a digit al de gran pre cis in.
/ /por: Pabl o/ / q uick bas ic@ t e rra.e s

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

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

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

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

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

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

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

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

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

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

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

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

Ah ora unas e cuacione s con

//pgina 0x2B

' ------(v ol t s es el ej e X,v ol t s1es el ej e Y)---I fv ol t s = 0 And v ol t s 1 > 0 Th e n angul o = 270 I fv ol t s = 0 And v ol t s 1 < 0 Th e n angul o=90 I fv ol t s > 0 And v ol t s 1 > 0 Th e n angul o = 360 - (At n(v ol t s1/ v ol t s ) * (180 /3.1416)) I fv ol t s > 0 And v ol t s 1 < 0 Th e n angul o = -(At n(v ol t s 1 /v ol t s)* (180 /3.1416)) I fv ol t s < 0 Th e n angul o = 180 - (At n(v ol t s 1 /v ol t s ) * (180 / 3.1416)) printangul o '------------------------------------------------------------------

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

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

//pgina 0x2C

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

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

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

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

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

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

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

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

Ej e m pl o:

Prot ot ipo: Parm e t ros :

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

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

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

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

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

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

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

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

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

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

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

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

Prot ot ipo: Parm e t ros :

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

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

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

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

Prot ot ipo: Parm e t ros :

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

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

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

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

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

//pgina 0x30

Prot ot ipo: Parm e t ros :

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

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

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

Prot ot ipo: Parm e t ros :

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

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

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

Prot ot ipo: Parm e t ros :

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

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

//pgina 0x31

Prot ot ipo: Parm e t ros :

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

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

Prot ot ipo: Parm e t ros :

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

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

Prot ot ipo: Parm e t ros :

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

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

//pgina 0x32

Prot ot ipo: Parm e t ros :

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

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

L a im age n s iguie nt e m ue s t ra e le s q ue m a e l e ct rico de l h ardw are propue s t 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 e . El PI C f unciona con un cris t alde 8 M H z . D1 s e ut il iz a com o un s e ns or de t e m pe rat ura cone ct ado al

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

//pgina 0x33

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

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

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

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

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

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

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

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

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

* do notch ange t h is l 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 e m pe rat ure re f e re nce ch ar de gH is t o[DEG_ NBH I STO ] ; / /t e m pe rat ure s am pl e s buf f er ch ar t I dx = 0 ; / /t e m pe rat ure s am pl e s inde x uns igne d l ong s e cO f f s e t= 0 ; / /re f e re nce t im e s t am p uns igne d l ong ol dCt r= 0 ; / /f ram e count e r back up Tim e St ruct t s ; / /t im e s t ruct / ************************* * FUNCTI O NS *************************/ / * * adj us tt im e s t ructm e m be r */ v oid adj us t (uns igne d ch ar *v , uns igne d ch ar m in, uns igne d ch ar m ax) { if (PO RTB.F7) { if (*v == m in) *v = m ax ; el s e (*v )-- ; } el se { if (*v == m ax) *v = m in ; el s e (*v )+ + ; } } / * * conv e rtv al ue v int ost ring point edt o by p, l e ading z e ro bl ank s ifbl k is s e t */ 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 (bl k & & (*p == '0')) { *p = ' ' ; } p+ + ; *p = v % 10 + '0' ; //pgina 0x37

p+ + ; *p = 0 ; } / * * draw s cre e n w it h de corat ion iff ul l is s e t , us ing v ide o m ode m ode */ v oid draw Scre e n(uns igne d ch ar f ul l , uns igne d ch ar m ode ) { st at ic uns igne d ch ar os x = CL K _ CENTER_ X, os y = CL K _ CENTER_ Y, om x = CL K _ CENTER_ X, om y = CL K _ CENTER_ Y, oh x = CL K _ CENTER_ X, oh y = CL K _ CENTER_ Y ; 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 rol (PAL _ CNTL _ START , m ode ) ; if (f ul l ) / /draw f ul l s cre e n w it h de corat ion { PAL _f il l (0) ; PAL _ cons t W rit e ( 0, 0, " \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 W rit e ( 1, 0, " \xBA PALL I BRARY DEM O \xBA" , PAL _ CH AR_ STANDARD) ; PAL _ cons t W rit e ( 2, 0, " \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 O R_ REV ERSE) ; PAL _ cons t W rit e ( 3, 0, " \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 W rit e ( 4, 0, " \xBA \xBA \xBA" , PAL _ CH AR_ STANDARD) ; PAL _ cons t W rit e ( 5, 0, " \xBA \xBA \xBA" , PAL _ CH AR_ STANDARD) ; PAL _ cons t W rit e ( 6, 0, " \xBA \xBA \xBA" , PAL _ CH AR_ STANDARD) ; PAL _ cons t W rit e ( 7, 0, " \xBA \xBA \xBA" , PAL _ CH AR_ STANDARD) ; PAL _ cons t W rit e ( 8, 0, " \xBA \xBA \xBA" , PAL _ CH AR_ STANDARD) ; PAL _ cons t W rit e ( 9 , 0, " \xBA \xBA \xBA" , PAL _ CH AR_ STANDARD) ; PAL _ cons t W rit e (10, 0, " \xBA \xBA \xBA" , PAL _ CH AR_ STANDARD) ; PAL _ cons t W rit e (11, 0, " \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 W rit e (12, 0, " \xBA \xBA" , PAL _ CH AR_ STANDARD) ; PAL _ cons t W rit e (13, 0, " \xBA \xBA" , PAL _ CH AR_ STANDARD) ; PAL _ cons t W rit e (14, 0, " \xBA \xBA" , PAL _ CH AR_ STANDARD) ; PAL _ cons t W rit e (15, 0, " \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 e (4, 3, " H :" , PAL _ CH AR_ DH EI GH T) ;

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

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

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

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

//pgina 0x39

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

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

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

//pgina 0x3B

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

/ /l ibrary cal l

//pgina 0x3C

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

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

//pgina 0x3E

También podría gustarte