You are on page 1of 24

#include <mega8.

h>
#include <delay.h>
#include <stdio.h>
int k=0;
int i=0;
char vector [8]={''!'"'!'#'!'$'!'%'!'&'!'''!'(');
int *=0;
char dato;
++ l,hanumeric -#$ .odule /unctions
#include <alcd.h>
++ %0ternal 1nterru,t 0 service routine
interru,t [%2341530] void e0t4int04isr6void7
{
delay4ms6807;
k=9:k; 9
i/6k==97
{
,rint/6;<r=>%?1@5% -%3> => AB'><r;7;

)
else
{
scan/6;Cc;!Ddato7;

)



)
++ $eclare your gloEal variaEles here
void main6void7
{
++ $eclare your local variaEles here
++ 1n,ut+@ut,ut =orts initialiFation
++ =ort " initialiFation
++ &uncG=1n &uncH=1n &uncI=1n &unc8=1n &uncJ=1n &uncK=1n &unc9=1n &unc0=1n
++ ?tateG=3 ?tateH=3 ?tateI=3 ?tate8=3 ?tateJ=3 ?tateK=3 ?tate9=3 ?tate0=3
=@>3"=0000;
$$>"=0000;
++ =ort # initialiFation
++ &uncH=1n &uncI=1n &unc8=1n &uncJ=1n &uncK=1n &unc9=1n &unc0=1n
++ ?tateH=3 ?tateI=3 ?tate8=3 ?tateJ=3 ?tateK=3 ?tate9=3 ?tate0=3
=@>3#=0000;
$$>#=0000;
++ =ort $ initialiFation
++ &uncG=1n &uncH=1n &uncI=1n &unc8=1n &uncJ=1n &uncK=1n &unc9=1n &unc0=1n
++ ?tateG=3 ?tateH=3 ?tateI=3 ?tate8=3 ?tateJ=3 ?tateK=3 ?tate9=3 ?tate0=3
=@>3$=0000;
$$>$=0000;
++ 3imer+#ounter 0 initialiFation
++ #lock sourceL ?ystem #lock
++ #lock valueL 3imer 0 ?to,,ed
3##>0=0000;
3#530=0000;
++ 3imer+#ounter 9 initialiFation
++ #lock sourceL ?ystem #lock
++ #lock valueL 3imer9 ?to,,ed
++ .odeL 5ormal to,=00&&&&
++ @#9 out,utL $iscon.
++ @#9" out,utL $iscon.
++ 5oise #ancelerL @//
++ 1n,ut #a,ture on &alling %dge
++ 3imer9 @ver/loM 1nterru,tL @//
++ 1n,ut #a,ture 1nterru,tL @//
++ #om,are .atch 1nterru,tL @//
++ #om,are " .atch 1nterru,tL @//
3##>9=0000;
3##>9"=0000;
3#539(=0000;
3#539-=0000;
1#>9(=0000;
1#>9-=0000;
@#>9(=0000;
@#>9-=0000;
@#>9"(=0000;
@#>9"-=0000;
++ 3imer+#ounter K initialiFation
++ #lock sourceL ?ystem #lock
++ #lock valueL 3imerK ?to,,ed
++ .odeL 5ormal to,=00&&
++ @#K out,utL $isconnected
??>=0000;
3##>K=0000;
3#53K=0000;
@#>K=0000;
++ %0ternal 1nterru,t6s7 initialiFation
++ 1530L @n
++ 1530 .odeL -oM level
++ 1539L @//
'1#>N=0080;
.#B#>=0000;
'1&>=0080;
++ 3imer6s7+#ounter6s7 1nterru,t6s7 initialiFation
31.?O=0000;
++ B?>3 initialiFation
++ B?>3 disaEled
B#?>"=0000;
++ B?>3 initialiFation
++ #ommunication =arametersL 8 $ata! 9 ?to,! 5o =arity
++ B?>3 >eceiverL @n
++ B?>3 3ransmitterL @n
++ B?>3 .odeL synchronous
++ B?>3 "aud >ateL PH00
B#?>=0000;
B#?>"=0098;
B#?>#=008H;
B">>(=0000;
B">>-=00JJ;
++ nalog #om,arator initialiFation
++ nalog #om,aratorL @//
++ nalog #om,arator 1n,ut #a,ture Ey 3imer+#ounter 9L @//
#?>=0080;
?&1@>=0000;
++ $# initialiFation
++ $# disaEled
$#?>=0000;
++ ?=1 initialiFation
++ ?=1 disaEled
?=#>=0000;
++ 3Q1 initialiFation
++ 3Q1 disaEled
3Q#>=0000;
++ l,hanumeric -#$ initialiFation
++ #onnections s,eci/ied in the
++ =ro*ectN#on/igureN# #om,ilerN-iErariesNl,hanumeric -#$ menuL
++ >? : =@>3" "it 0
++ >$ : =@>3" "it 9
++ %5 : =@>3" "it K
++ $8 : =@>3" "it 8
++ $I : =@>3" "it I
++ $H : =@>3" "it H
++ $G : =@>3" "it G
++ #haracters+lineL 8
lcd4init687;
++ 'loEal enaEle interru,ts
#asm6;sei;7
Mhile 697
{


/or 6i=0;i<G;iRR7 {

lcd4goto0y6i!07;
lcd4,utchar6dato7 ;
lcd4goto0y6i:9!07;
lcd4,utchar6' '7 ;
delay4ms69007;
);
lcd4clear67;
/or 6*=0;*<G;*RR7 {
lcd4goto0y6*!K7;
lcd4,utchar6dato7 ;
lcd4goto0y6*:9!K7;
lcd4,utchar6' '7 ;
delay4ms69007;
);
lcd4clear67;
/or 6;*>0;*::7 {
lcd4goto0y6*!K7;
lcd4,utchar6dato7 ;
lcd4goto0y6*R9!K7;
lcd4,utchar6' '7 ;
delay4ms69007;
lcd4clear67;
);
lcd4clear67;
/or 6;i>0;i::7 {
lcd4goto0y6i!07;
lcd4,utchar6dato7 ;
lcd4goto0y6iR9!07;

lcd4,utchar6' '7 ;
delay4ms69007;
);
lcd4clear67;
)


)
#include <mega8.h>
#include <stdio.h>
#include <delay.h>
int i=0!n9!nK!res!au0=0;
void encendido6void7{
i/6i==97{
,rint/6 ;?istema ctivado <r @,eraciones .atematicasL<r;7;
,rint/6;?uma L s <r;7;
,rint/6;>esta L r <r;7;
,rint/6;.ulti,licacionL m <r;7;
,rint/6;1ngrese =rimer 5umeroL <r;7;
=@>3".0=9;
delay4ms6K007;
)
i/6i==07{
,rint/6;?istema ,agado;7;
=@>3".0=0;
delay4ms6K007;
au0=0;
)
)
++ %0ternal 1nterru,t 0 service routine
interru,t [%2341530] void e0t4int04isr6void7
{
++ =lace your code here
i=9:i;
encendido67;

)
#i/nde/ >2"8
#de/ine >2"8 9
#endi/
#i/nde/ 32"8
#de/ine 32"8 0
#endi/
#i/nde/ B=%
#de/ine B=% K
#endi/
#i/nde/ $@>
#de/ine $@> J
#endi/
#i/nde/ &%
#de/ine &% 8
#endi/
#i/nde/ B$>%
#de/ine B$>% I
#endi/
#i/nde/ >2#
#de/ine >2# G
#endi/
#de/ine &>.15'4%>>@> 69<<&%7
#de/ine =>13S4%>>@> 69<<B=%7
#de/ine $34@T%>>B5 69<<$@>7
#de/ine $34>%'1?3%>4%.=3S 69<<B$>%7
#de/ine >24#@.=-%3% 69<<>2#7
++ B?>3 >eceiver Eu//er
#de/ine >24"B&&%>4?1U% 8
char r04Eu//er[>24"B&&%>4?1U%];
#i/ >24"B&&%>4?1U% <= KIH
unsigned char r04Mr4inde0!r04rd4inde0!r04counter;
#else
unsigned int r04Mr4inde0!r04rd4inde0!r04counter;
#endi/
++ 3his /lag is set on B?>3 >eceiver Eu//er over/loM
Eit r04Eu//er4over/loM;
++ B?>3 >eceiver interru,t service routine
interru,t [B?>34>2#] void usart4r04isr6void7
{
char status!data;
status=B#?>;
data=B$>;
sMitch6data7{
case '0'L

i/6au0==97{
nK=0;
,rint/6;<r 1ngrese la @,eracion .atematicaL <r;7;
)
i/6au0==07{
n9=0;
,rint/6;<r 1ngrese ?egundo 5umeroL <r;7;
au0RR;
)
Ereak;
case '9'L
i/6au0==97{
nK=9;
,rint/6;<r 1ngrese la @,eracion .atematicaL <r;7;
)
i/6au0==07{
n9=9;
,rint/6;<r 1ngrese ?egundo 5umeroL <r;7;
au0RR;
)

Ereak;
case 'K'L
i/6au0==97{
nK=K;
,rint/6;<r 1ngrese la @,eracion .atematicaL <r;7;
)
i/6au0==07{
n9=K;
,rint/6;<r 1ngrese ?egundo 5umeroL <r;7;
au0RR;
)
Ereak;
case 'J'L
i/6au0==97{
nK=J;
,rint/6;<r 1ngrese la @,eracion .atematicaL <r;7;
)
i/6au0==07{
n9=J;
,rint/6;<r 1ngrese ?egundo 5umeroL <r;7;
au0RR;
)
Ereak;
case '8'L
i/6au0==97{
nK=8;
,rint/6;<r 1ngrese la @,eracion .atematicaL <r;7;
)
i/6au0==07{
n9=8;
,rint/6;<r 1ngrese ?egundo 5umeroL <r;7;
au0RR;
)
Ereak;
case 'I'L
i/6au0==97{
nK=I;
,rint/6;<r 1ngrese la @,eracion .atematicaL <r;7;
)
i/6au0==07{
n9=I;
,rint/6;<r 1ngrese ?egundo 5umeroL <r;7;
au0RR;
)
Ereak;
case 'H'L
i/6au0==97{
nK=H;
,rint/6;<r 1ngrese la @,eracion .atematicaL <r;7;
)
i/6au0==07{
n9=H;
,rint/6;<r 1ngrese ?egundo 5umeroL <r;7;
au0RR;
)
Ereak;
case 'G'L
i/6au0==97{
nK=G;
,rint/6;<r 1ngrese la @,eracion .atematicaL <r;7;
)
i/6au0==07{
n9=G;
,rint/6;<r 1ngrese ?egundo 5umeroL <r;7;
au0RR;
)
Ereak;
case '8'L
i/6au0==97{
nK=8;
,rint/6;<r 1ngrese la @,eracion .atematicaL <r;7;
)
i/6au0==07{
n9=8;
,rint/6;<r 1ngrese ?egundo 5umeroL <r;7;
au0RR;
)
Ereak;
case 'P'L
i/6au0==97{
nK=P;
,rint/6;<r 1ngrese la @,eracion .atematicaL <r;7;
)
i/6au0==07{
n9=P;
,rint/6;<r 1ngrese ?egundo 5umeroL <r ;7;
au0RR;
)
Ereak;
)
sMitch6data7
{
case 's'L
,rint/6;<r ?umaL <r;7;
res=n9RnK;
,rint/6;<r Cd R Cd = Cd <r;!n9!nK! res7;
delay4ms6K007;
Ereak;
case 'r'L
,rint/6;<r >estaL <r;7;
res=n9:nK;
,rint/6;<r Cd : Cd = Cd <r;!n9!nK! res7;
delay4ms6K007;
Ereak;
case 'm'L
,rint/6;<r .ulti,licaciVnL <r;7;
res=n9WnK;
,rint/6;<r Cd W Cd = Cd <r;!n9!nK! res7;
delay4ms6K007;
Ereak;
)

i/ 66status D 6&>.15'4%>>@> N =>13S4%>>@> N $34@T%>>B577==07
{
r04Eu//er[r04Mr4inde0RR]=data;
#i/ >24"B&&%>4?1U% == KIH
++ s,ecial case /or receiver Eu//er siFe=KIH
i/ 6RRr04counter == 07
{
#else
i/ 6r04Mr4inde0 == >24"B&&%>4?1U%7 r04Mr4inde0=0;
i/ 6RRr04counter == >24"B&&%>4?1U%7
{
r04counter=0;
#endi/
r04Eu//er4over/loM=9;
)
)
)
#i/nde/ 4$%"B'43%>.15-41@4
++ 'et a character /rom the B?>3 >eceiver Eu//er
#de/ine 4-3%>53%4'%3#(>4
#,ragma usedR
char getchar6void7
{
char data;
Mhile 6r04counter==07;
data=r04Eu//er[r04rd4inde0RR];
#i/ >24"B&&%>4?1U% X= KIH
i/ 6r04rd4inde0 == >24"B&&%>4?1U%7 r04rd4inde0=0;
#endi/
#asm6;cli;7
::r04counter;
#asm6;sei;7
return data;
)
#,ragma used:
#endi/
++ ?tandard 1n,ut+@ut,ut /unctions
#include <stdio.h>
++ $eclare your gloEal variaEles here
void main6void7
{
++ $eclare your local variaEles here
++ 1n,ut+@ut,ut =orts initialiFation
++ =ort " initialiFation
++ &uncG=1n &uncH=1n &uncI=1n &unc8=1n &uncJ=1n &uncK=1n &unc9=1n &unc0=1n
++ ?tateG=3 ?tateH=3 ?tateI=3 ?tate8=3 ?tateJ=3 ?tateK=3 ?tate9=3 ?tate0=3
=@>3"=0000;
$$>"=00&&;
++ =ort # initialiFation
++ &uncH=1n &uncI=1n &unc8=1n &uncJ=1n &uncK=1n &unc9=1n &unc0=1n
++ ?tateH=3 ?tateI=3 ?tate8=3 ?tateJ=3 ?tateK=3 ?tate9=3 ?tate0=3
=@>3#=0000;
$$>#=0000;
++ =ort $ initialiFation
++ &uncG=1n &uncH=1n &uncI=1n &unc8=1n &uncJ=1n &uncK=1n &unc9=1n &unc0=1n
++ ?tateG=3 ?tateH=3 ?tateI=3 ?tate8=3 ?tateJ=3 ?tateK=3 ?tate9=3 ?tate0=3
=@>3$=0000;
$$>$=0000;
++ 3imer+#ounter 0 initialiFation
++ #lock sourceL ?ystem #lock
++ #lock valueL 3imer 0 ?to,,ed
3##>0=0000;
3#530=0000;
++ 3imer+#ounter 9 initialiFation
++ #lock sourceL ?ystem #lock
++ #lock valueL 3imer9 ?to,,ed
++ .odeL 5ormal to,=00&&&&
++ @#9 out,utL $iscon.
++ @#9" out,utL $iscon.
++ 5oise #ancelerL @//
++ 1n,ut #a,ture on &alling %dge
++ 3imer9 @ver/loM 1nterru,tL @//
++ 1n,ut #a,ture 1nterru,tL @//
++ #om,are .atch 1nterru,tL @//
++ #om,are " .atch 1nterru,tL @//
3##>9=0000;
3##>9"=0000;
3#539(=0000;
3#539-=0000;
1#>9(=0000;
1#>9-=0000;
@#>9(=0000;
@#>9-=0000;
@#>9"(=0000;
@#>9"-=0000;
++ 3imer+#ounter K initialiFation
++ #lock sourceL ?ystem #lock
++ #lock valueL 3imerK ?to,,ed
++ .odeL 5ormal to,=00&&
++ @#K out,utL $isconnected
??>=0000;
3##>K=0000;
3#53K=0000;
@#>K=0000;
++ %0ternal 1nterru,t6s7 initialiFation
++ 1530L @n
++ 1530 .odeL -oM level
++ 1539L @//
'1#>N=0080;
.#B#>=0000;
'1&>=0080;
++ 3imer6s7+#ounter6s7 1nterru,t6s7 initialiFation
31.?O=0000;
++ B?>3 initialiFation
++ #ommunication =arametersL 8 $ata! 9 ?to,! 5o =arity
++ B?>3 >eceiverL @n
++ B?>3 3ransmitterL @n
++ B?>3 .odeL synchronous
++ B?>3 "aud >ateL PH00
B#?>=0000;
B#?>"=00P8;
B#?>#=008H;
B">>(=0000;
B">>-=00JJ;
++ nalog #om,arator initialiFation
++ nalog #om,aratorL @//
++ nalog #om,arator 1n,ut #a,ture Ey 3imer+#ounter 9L @//
#?>=0080;
?&1@>=0000;
++ $# initialiFation
++ $# disaEled
$#?>=0000;
++ ?=1 initialiFation
++ ?=1 disaEled
?=#>=0000;
++ 3Q1 initialiFation
++ 3Q1 disaEled
3Q#>=0000;
++ 'loEal enaEle interru,ts
#asm6;sei;7
Mhile 697
{
++ =lace your code here
)
)

You might also like