Sony Ericsson Razmjena s 89c51

S

saadh

Guest
# uključiti <C:\c51\inc\REG51.h>
# uključiti <AT89X51.H>
sbit RS = P1 ^ 3;
sbit RW = P1 ^ 4;
sbit E = P1 ^ 5;
sbit BF ^ P0 = 7;
sbit događanja ^ P2 = 1;
SFR DATA_BUS = 0x80; / / Port 0
pougljiti data1, data2;
nepotpisani pougljiti rcvd [2];
nepotpisani pougljiti J;
bitni ok = 0;

Serijski //************** inicijalizacija FUNKCIJA ************

void init ()
(
TMOD = 0x20; / / odabire način
tj. (korištenje timer1 u mode2)
TH1 = 0xFD; / / postavlja brzina prijenosa podataka (0xFD = 9600)
SCON = 0x50; / / s_mode 1, uart 1sb-8db-sb
TR1 = 1; / / pokreće timer1
)

//************** FUNKCIJA za slanje karakter STRING ************

poniłtava sendString (nepotpisano pougljiti * a)
(
dok (* a! = '\ 0')
(
SBUF =* A; / / SBUF se registrirati za slanje / primanje podataka serijski
a (TI == 0);
TI = 0; / / prenositi zastavom.
a ;
)
)

//************** Funkciju POŠALJI SINGLE karakter ************

poniłtava sendChar (nepotpisano pougljiti b)
(
SBUF = b;
a (TI == 0);
TI = 0;
)FUNKCIJA //************** za primanje karakter ************

nepotpisani pougljiti rcv ()
(
dok (RI == 0);
RI = 0; / / primanje flag
povratak SBUF;
)

//*************** Kašnjenje FUNKCIJA **********************
poniłtava kašnjenje (int a)

(
int i, j;

for (i = 0; i <= a; i )

for (j = 0; j <= 100; j );
)
//************** MOBILE ODGOVOR PREGLED FUNKCIJA ************

poniłtava checkOK ()
(
for (j = 0; j <2; j )
rcvd [j] = rcv ();
if (rcvd [0] == 'O' & & rcvd [1] == 'K')
ok = 1;
drugi
ok = 0;
)
//************************ Za provjeru LCD spremna ili ne ***************** **
int spreman ()
(
BF = 1;
Rs = 0;
RW = 1;
dok (BF == 1)
(
E = 0;
E = 1;
)
povratak 1;
)
/ / Funkcija Ready Završava

/*/************************ ZA kašnjenje (počinje) ****************** **
/ poniłtava kašnjenje ()
(
int x;for (x = 0, x <= 1000; x )
(
)
) * /
/ / Funkcija Delay Završavastatički poniłtava LCD_Pulse_E (int t) (
nepotpisani pougljiti I;
E = 1; for (i = 0; i <t; i ) i = i;
E = 0; for (i = 0; i <t; i ) i = i;
)

LCD //********************* Run FUNKCIJA ***********************

int LCD_Run_Command (nepotpisano pougljiti naredbu)
(
if (spreman ())
(
DATA_BUS = Command;
Rs = 0; zakašnjenja (100);
RW = 0; zakašnjenja (100);
LCD_Pulse_E (255);
)
povratak 1;
)

LCD //****************** SHOW ****************************

int LCD_Show (nepotpisano pougljiti karaktera)
(
if (spreman ())
(
DATA_BUS = lik;
RS = 1; zakašnjenja (100);
RW = 0; zakašnjenja (100);
LCD_Pulse_E (255);
zakašnjenja (100);
)
povratak 1;
)

//**************** LCD inicijalizirate ************************LCD_Initialize int () (

LCD_Run_Command (0x38); / /
8. Podaci linije, dvije linije, 5x7 Font.
LCD_Run_Command (0x0E); / / Display = ON, Cursor = ON, Cursor treptajućim = ON
LCD_Run_Command (0x01); / / Obriąi zaslon i vratiti pokazivač na početnu poziciju
LCD_Run_Command (0x06);
LCD_Run_Command (0x06); / / Tokom čitati / pisati samo rad pokazivača (ne teksta)
LCD_Run_Command (0x80), / / Pokazivač na Line 1, Pozicija 0
povratak 1;
)

//************** ČITANJE Primljene poruke *****************
poniłtava read_msg ()
(
int a = 0, b = 0, c = 0;
pougljiti rd_msg [10];

rd_msg [0] = 0;

RI = 0;
TI = 0;
sendString ( "AT CMGF = 1 \ r"); / / ove naredbe PDU mode pretvoriti u text modu
zakašnjenja (300);
zakašnjenja (300);

TI = 0;
sendString ( "AT CMGR = 1"); / / naredba čita ovu poruku iz memorije SIM

TI = 0;

dok je (! TI)
()
TI = 0;

SBUF = 0x0D; / / slanje prijevozu vratiti na raskinuti comand
TI = 0;

a (b == 0)
(
dok (RI == 1 & & b == 0)
(
rd_msg [a] = SBUF;

if (rd_msg [0 ]==' ')// ovaj korak pronalazi Command CMGR:
////////////////////////////////////////////////// /////////////////////////
(
RI = 0;
a ;

if (rd_msg [5 ]==':')
(
RI = 0;
if (rd_msg [1] == 'C' & & rd_msg [3] == 'G' & & rd_msg [4] == 'R')
(
if (rd_msg [6 ]!='#')// "#" symbol se koristi kao SMS protokol
(a = 6;)

if (rd_msg [6 ]=='#')
(

data1 = 'C' & (rd_msg [7]);ako (a ==

<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Hladno" border="0" />(b = 1;) / / ovom izjavom je najudaljeniji, dok (b == 0) petlja
)
)

drugi
(
a = 0;
rd_msg [0] = 0;

)
)

ako (a == 6 & & rd_msg [5 ]!=':')
(
a = 0;
rd_msg [0] = 0;
)
)

drugi
(
RI = 0;
a = 0;
)
) / / KRAJ ", dok (RI == 1 & & b == 0)"

) / / KRAJ ", dok (b == 0)"
) / / END funkcije "poniłtava read_msg ()"

/************************************************* *************************/
/ * SNDING PORUKA BACK TO BASE STATION * /
/************************************************* *************************/
poniłtava sndng_msg ()
(
/ / check = 0;

RI = 0;
TI = 0;
sendString ( "AT CMGF = 1 \ r ");// ove naredbe PDU mode pretvoriti u text modu
zakašnjenja (100);
/ / kašnjenje ();

TI = 0;
sendString ( "AT CMGS =");
zakašnjenja (100);
sendString ( "\" 033345004994 \ "\ r");
zakašnjenja (100);
/ / TI = 0;
/ / Send_serial ( "Meter tačkama:");
/ / Kašnjenje ();

TI = 0;
SBUF = (0x30 | data2); / / slanje prvi broj SIM memoriji
dok je (! TI) / / ovo je cifra ORed sa 0x30 generirati ASCII kôd digit_1
()

TI = 0;
SBUF = 0x1A;
dok je (! TI)
()
TI = 0;)
//************************************************ *********
/ / * GLAVNE FUNKCIJE *
//************************************************ *********

poniłtava glavni ()
(

HNK int = 0;
int a, b, c, d, v, w, x, y, z;zakašnjenja (100);
LCD_Initialize ();

LCD_Show ( 'M');
LCD_Show ( 'E');
LCD_Show ( 'T');
LCD_Show ( 'E');
LCD_Show ( 'R');
LCD_Show ( '');
LCD_Show ( 'R');
LCD_Show ( 'E');
LCD_Show ( 'A');
LCD_Show ( 'D');
LCD_Show ( 'I');
LCD_Show ( 'N');
LCD_Show ( 'G');LCD_Run_Command (0xC0); / / pokazivač na redak 2

LCD_Show ( 'U');
LCD_Show ( 'N');
LCD_Show ( 'I');
LCD_Show ( 'T');
LCD_Show ( '');
LCD_Show ( '');

a (1)
(
LCD_Run_Command (0xC8);
događanja = 1;
if (događaji == 0)
(
dok (događaji == 0);
HNK HNK = 1;
)
init (); / / inicijalizira serijska komunikacija
zakašnjenja (100);
sendString ( "at");
sendChar (0x0d); / / 0x0d = oznaka kraja retka
checkOK ();
if (ok == 1)
(
zakašnjenja (100);
sendString ( "AT CPM =");
sendChar (0x22); / / 0x22 = "
sendString ( "ME"); / / za odabir memorije telefona
sendChar (0x22); / / 0x22 = "
zakašnjenja (100);
sendString ( "AT CMGF = 1"); / / Tekst za odabir načina rada
sendChar (0x0d); / / 0x0d = oznaka kraja retka
checkOK ();
if (ok == 1)
(
zakašnjenja (100);
read_msg ();
sendString ( "AT CMER = 0,0,0,1 \ r");
checkOK ();
zakašnjenja (100);
sndng_msg ();

)
)if (HNK> = 0 & & HNK <10)
(

x = HNK;

x = x 48;data1 = x;

LCD_Show (data1);

)else (if (HNK> = 10 & & HNK <100)
(

x = cnt/10;
HNK% y = 10;
y y = 48;

x = x 48;

data1 = x;

LCD_Show (data1);

data1 = y;
LCD_Show (data1);)

drugi
(

if (HNK> = 100 & & HNK <1000)
(
x = cnt/10;
z = HNK% 10;

y = x% 10;
x = x/10;

x = x 48;
y y = 48;
z = z 48;

data1 = x;
LCD_Show (data1);

data1 = y;
LCD_Show (data1);

data1 = z;
LCD_Show (data1);)

drugi
(

if (HNK> = 1000 & & HNK <10000)

(
x = cnt/10;
z = HNK% 10;

y = x% 10;
x = x/10;
w = x% 10;
x = x/10;

x = x 48;
w w = 48;
y y = 48;
z = z 48;
data1 = x;
LCD_Show (data1);

data1 = w;
LCD_Show (data1);

data1 = y;
LCD_Show (data1);

data1 = z;

LCD_Show (data1);
)

drugi
(
if (HNK> = 10000 & & HNK <99999)

(

x = cnt/10;
z = HNK% 10;

y = x% 10;
x = x/10;
w = x% 10;
x = x/10;
v = x% 10;
x = x/10;

x = x 48;
v =
48 V;
w w = 48;
y y = 48;
z = z 48;

data1 = x;
LCD_Show (data1);

data1 = v;
LCD_Show (data1);

data1 = w;
LCD_Show (data1);

data1 = y;
LCD_Show (data1);

data1 = z;
LCD_Show (data1);

)
drugi
(
HNK = 0;
LCD_Run_Command (0xC8);
x = 0;
LCD_Show (x);

v = 0;
LCD_Show (v);

w = 0;
LCD_Show (w);

y = 0;
LCD_Show (y);

z = 0;
LCD_Show (z);

))

)

)

)

))
To je broj im koristeći brojati ibterrupts iz energetskog metar n pretvoriti ga pogodnim jedinice n zatim ih poslati putem T290-i slušalica automatski ..Ali to još uvijek ne radi, čak i ako taj program radi na simulator ?????

 

Welcome to EDABoard.com

Sponsor

Back
Top