Abstract Este laboratory is designed so that students can
understand the operation of a pic using the basic functions such as move data to a memory location, add it or subtract it and analyze the language of communication between machine and user. I INTRODUCTION ste l!ortorio est dise"do #r $ue el lu%no #ued entender el &un'ion%iento de un #i' e%#lendo ls &un'iones !(si's 'o%o es %o)er un dto un #osi'i*n de %e%ori, su%rlo o restrlo y nli+r el len,u-e de 'o%uni''i*n . II /0RCO T.ORICO Assembler 0sse%!rer es un len,u de !-o ni)el 12en,u-e .ns%!ldor1, tiene instru''iones %uy !(si's y est( %uy 'er'no l len,u-e de %($uin. Nor%l%ente se utili+ #r #ro,r%r %i'ro#ro'esdores, #ero t%!i3n e4isten inter&'es de #ro,r%'i*n en l #'. Te #so l,unos lin5s 'on l,unos %nules, #ero son un #o'o di&6'iles #or$ue tienes $ue 'ostu%!rrte 'o%o tr!- el len,u-e #ri%ero, ten #'ien'i y %u'7 #r('ti'. PIC 2os 8IC son un &%ili de %i'ro 'ontroldor ti#o RISC &!ri'dos #or /i'ro'7i# Te'nolo,6 In'. y deri)dos del 8IC1950, ori,inl%ente desrrolldo #or l di)isi*n de %i'roele'tr*ni' de :enerl Instru%ent. .l no%!re 'tul no es un 'r*ni%o. .n relidd, el no%!re 'o%#leto es 8IC%i'ro, un$ue ,enerl%ente se utili+ 'o%o 8eri#7erl Inter&'e Controller ;'ontroldor de inter&+ #eri&3ri'o<. .l 8IC ori,inl se dise"* #r ser usdo 'on l nue) C8U de 19 !its C819000. Siendo en ,enerl un !uen C8U, 3st ten6 %ls #rest'iones de entrd y slid, y el 8IC de = !its se desrroll* en 1>75 #r %e-orr el rendi%iento del siste% $uitndo #eso de .?S l C8U. .l 8IC utili+! %i'ro '*di,o si%#le l%'endo en RO/ #r reli+r ests tres@ y un$ue el t3r%ino no se us! #or $uel enton'es, se trt de un dise"o RISC $ue e-e'ut un instru''i*n 'd 4 'i'los del os'ildor. !"A E# !# PIC un su%dor es un 'ir'uito l*,i'o $ue 'l'ul l o#er'i*n
su%. .n los 'o%#utdores %odernos se en'uentr en lo $ue
se deno%in Unidd rit%3ti'o l*,i' ;02U<. :enerl%ente reli+n ls o#er'iones rit%3ti's en '*di,o !inrio de'i%l o ACD e4'eso B, #or re,l ,enerl los su%dores e%#len el siste% !inrio. .n los 'sos en los $ue se est3 e%#lendo un 'o%#le%ento dos #r re#resentr nC%eros ne,ti)os el su%dor se 'on)ertir( en un su%dorDrestdor ;0dderD su!tr'ter "A$E%IA&E ESo&tFre /820A E /nul del 8IC 1=&452 E Instru''i*n de %ne-o de sse%!ler E 0#untes de 'lse. III DI0:R0/0 D. 02:ORIT/O P%'(%A"A ) Gin'lude H#1=&452.in'I@ R1 e$u 0401 R2 e$u 0402 or, 0400 ,oto strt or, 040= ret&ie or, 041= ret&ie strt %o)lF 0400 @ 0<AORR0R .2 R.:ISTRO J C0R:0NDO2O CON C.RO 0 'lr& R1 @ lle)r el )lor del re,istro J l re,istro K 'lr& R2 @ !orr l #osi'ion del re,istro K %o)lF dL10L @ %o)er 10 en 7e4de'i%l J %o)F& R1 @ %o)er el re,istro J l re,istro K %o)lF 0400 @ 'r, J 'on un 0 , #r e)itr $ue el B se su%e 'on el 00M CIC2O @ A< INICIO D. CIC2O 80R0 D.CR./.NT0R .2 10 C0R:0DO .N R1 N 0U/.NT0R D. B .N B 20 8OSICION R2 ddlF DLBL @ su%r en el re,istro J B en de'i%l %o)F& R2 @%o)er el )lor de J l #si'ion de %e%ori R2 de'&s+ R1 @ de're%ent l #osi'ion R1 7st $ue se :OTO CIC2O @ SI NO CU/82. 20 CONDICION S. D.OU.2O. 02 INCIO D.2 CIC2O .ND
7ere ,oto 7ere end P%'(%A"A * ???????????????????????????????????????????????????????????????????????????????? Gin'lude H#1=&452.in'I@ T022.R 1 Quintero Sneyder, 45112017. Quintero, Sneyder, 45112017. or, 0400 ,oto strt or, 040= ret&ie or, 041= ret&ie strt %o)lF 0400 @ !orrdo del re,istro F %o)lF 047> @ 'r,r el F 'on 7>M %o)F& 0401 @ ,urddo en l #osi'ion 01 de %e%ori %o)lF 04&5 @ 'r,r el F 'on &5M %o)F& 0402 @ ,urddo en l #osi'ion 02 de %e%ori %o)lF 04e2 @ 'r,r el F 'on e2M %o)F& 040B @ ,urddo en l #osi'ion 0B de %e%ori %o)lF 0400 @ !orrdo del re,istro F ddF& 0401,F @su%r F 'on el dto $u est en l #osi'ion 01 'lr& 0404 ATKS' ST0TUS, C @#re,unt si l su% d 'rry no slte de lo 'ontrrio slte in'&s+ 0404 @ si 7y 'rry su%e uno l 04 ddF& 0402,F @su%r F 'on el dto $u est en l #osi'ion 02 ATKS' ST0TUS, C in'&s+ 0404 ddF& 040B,F @su%r F 'on el dto $u est en l #osi'ion 0B ATKS' ST0TUS, C in'&s+ 0404 'lr& 0405 %o)F& 0405 @ ,urde el )lor de l su% sin 'rrys en l #osi'ion 05 7ere ,oto 7ere end ?????????????????????????????????????????????????????????????????????????????????????????? ?????? P%'(%A"A + ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -include.p)/f01*.inc2 !"A3$'$A& e4u 5657 8!"A 9E& A&('%I$"' org 5655 ('$' start org 565/ 8interrupcion de alta prioridad retfie 8retorno programa principal org 56)/ 8interrupcion de ba:a prioridad retfie start C&%; 8 <'%%A9' 9E ; clrf 565= 8 <'%%A9' registro > clrf 5657 8 <'%%A9' registro > clrf 5605 8 <'%%A9' registro > clrf 560) 8 <'%%A9' registro > clrf 560* 8 <'%%A9' registro > clrf 560+ 8 <'%%A9' registro > movlw 567) 8 carga ; con 567)? movwf 5605 8 mover ; a una posicion de memoria 5605 movlw 56// 8 carga ; con 56// movwf 560) 8 mover ; a una posicion de memoria 560) movlw 56=@ 8 carga ; con 56=@? movwf 560* 8 mover ; a una posicion de memoria 560* movlw 56@7 8 carga ; con 56@7? movwf 560+ 8 mover ; a una posicion de memoria 5605 movlw 5655 8 ; E CA%(A9' C'# 5 addwf 5605,w 8 !"A% E& AA&'% (!A%9A9' E# &A P'ICI'# 5B05 C'# ; C (!A%9A9' E# ; btfsc $A$!,C 8 AE%I>ICA% I ?AC CA%%C I #' A&$A incf 565= 8I#C%E"E#$E E# !#' C!A#9' #' A&$A &A A#$E%I'% &I#EA addwf 560),w btfsc $A$!,C incf 565= addwf 560*,w btfsc $A$!,C incf 565= addwf 560+,w btfsc $A$!,C incf 565= movwf !"A3$'$A& 8E& AC!"A&' 9E ; E "!EAE A &A P'ICI'# 5B57 here goto here end ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, P%'(%A"A 0 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -include .p)/f01*.inc2 resultado e4u 565+ org 5655 goto start org 565/ retfie org 56)/ retfie start clrw movlw 56=e @ 'r,r el F 'on 0P9. movwf 565* movlw 560c @ 'r,r el F 'on 044C movwf 565) subwf 565*,w 8 resta el resultado y lo guarda en ; movwf resultado Quintero, Sneyder, 45112017. here goto here end ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, P%'(%A"A 1 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, -include .p)/f01*.inc2 8libreria del pic)/f01* org 5655 goto start org 565/ retfie org 56)/ retfie start movlw @=? 8cargar el resultado @=? a ; sublw =*? 8restar =*? con @=? movwf 5651 8mover el resultado a el espacio btfss $A$!,C 8rectificar si da carry , si no salta el siguiente codigo decfsz ;%E( 8decrementa en > saltar si es 5 movlw *7? 8cargar *7? a ; movwf 56+0 8llevar ; a la posicion indicada movlw )*? 8cargar )*? en ; subwf 56+0 ,w 8restar el valor de ; con el valor de la posicion indicada movwf 5650 8mover el resultado a la posicion indicada end ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, IA C'#C&!CI'#E .n est #r('ti' se lo,r* 'o%#render el %ne-o del re,istro F, -unto 'on un #e$ue" #rte del set de instru''iones, sint4is de este %is%o #r s6 lo,rr reli+r ls o#er'iones deseds, Todos los '*di,os &ueron %uy si%ilres e4'e#'i*n de l instru''i*n $ue deter%in! l o#er'i*n y $ue el %ne-o de )ri!les &ue el %is%o #r ls o#er'iones rit%3ti's, otro #r ls o#er'iones l*,i's y 'o%#le%ento. .n l iter'iones $ue se 7i'ieron 'on el siste% de si%ul'i*n se 'o%#rende 'o%o es l o#erti)idd entre el dto y l #osi'i*n de re,itsro. Quintero, Sneyder, 45112017.