Ohje rajapinnat ATmega32 GSM-modeemi

K

kumarprabhatn

Guest
Moi ..

Olen käyttänyt tätä ohjelmaa käyttäen codevision AVR.Se testit AT ja AT CMGF = 1 komento ..

Code:

# include <mega32.h>

# include <stdio.h>

# include <delay.h># define RXB8 1

# define TXB8 0

# define UPE 2

# define OVR 3

# define FE 4

# define UDRE 5

# define RXC 7

# define RXCIE 7

# define Ursel 7

# define RXEN 4

# define USBS 3

# define TXEN 3

# define UCSZ0 1# define FRAMING_ERROR (1 <<FE)

# define PARITY_ERROR (1 <<UPE)

# define DATA_OVERRUN (1 <<OVR)

# define DATA_REGISTER_EMPTY (1 <<UDRE)

# define RX_COMPLETE (1 <<RXC)unsigned char on [4] = ( 'A', 'T', '\ r', '\ n ");

unsigned char atcmgf [11] = ( 'A', 'T',' ',' C "," M "," G "," F','=',' 1 "," \ r "," \ n ");

int j;

unsigned char hävittämään;

int voimassa = 0x00;mitätön modem_init_micro ()

(

unsigned int baudr = 103; / * Arvo UBRR for 9600 Baud * /

/ * Aseta baudinopeus * /

UBRRH = (unsigned char) (baudr>> 8);

UBRRL = (unsigned char) baudr;

/ * Ota vastaanotin ja lähetin * /

UCSRB = (1 <<RXCIE) | (1 <<RXEN) | (1 <<TXEN);

/ * Set frame format: 8data, 2stop bit * /

UCSRC = (1 <<Ursel) | (1 <<USBS) | (3 <<UCSZ0);

)mitätön checkat ()

(

for (j = 0, j <4; j )

(

while (! (UCSRA & (1 <<UDRE)))

;

/ * Laita tiedot puskuri, lähettää tiedot * /

UDR = on [j];

)

for (j = 0, j <4; j )

(

while (! (UCSRA & (1 <<RXC)))

;

/ * Get-ja säilytä saanut indeksi buffer * /

hävittämään = UDR;

if (hävittämään == "O")

voimassa = 1;

)

)mitätön checkcmgf ()

(

if (voimassa == 1)

(

voimassa = 0;

for (j = 0, j <11; j )

(

while (! (UCSRA & (1 <<UDRE)))

;

/ * Laita tiedot puskuri, lähettää tiedot * /

UDR = atcmgf [j];

)

for (j = 0, j <4; j )

(

while (! (UCSRA & (1 <<RXC)))

;

/ * Get-ja säilytä saanut indeksi buffer * /

hävittämään = UDR;

if (hävittämään == "O")

voimassa = 2;

)

)

)mitätön main (void)

(/ / Input / Output Ports initialization

/ / Port A käynnistystoimien

/ / Func7 = Vuonna Func6 = Vuonna Func5 = Vuonna Func4 = Vuonna Func3 = Vuonna Func2 = Vuonna Func1 = Vuonna Func0 = Out

/ / State7 = T State6 = T State5 = T State4 = T State3 = T State2 = T State1 = T State0 = 0

PORTA = 0x00;

DDRA = 0x01;/ / Port B käynnistystoimien

/ / Func7 = Vuonna Func6 = Vuonna Func5 = Vuonna Func4 = Vuonna Func3 = Vuonna Func2 = Vuonna Func1 = Vuonna Func0 = In

/ / State7 = T State6 = T State5 = T State4 = T State3 = T State2 = T State1 = T State0 = T

PORTB = 0x00;

DDRB = 0x00;/ / Port C käynnistystoimien

/ / Func7 = Vuonna Func6 = Vuonna Func5 = Vuonna Func4 = Vuonna Func3 = Vuonna Func2 = Vuonna Func1 = Vuonna Func0 = In

/ / State7 = T State6 = T State5 = T State4 = T State3 = T State2 = T State1 = T State0 = T

PORTC = 0x00;

DDRC = 0x00;/ / Port D initialization

/ / Func7 = Vuonna Func6 = Vuonna Func5 = Vuonna Func4 = Vuonna Func3 = Vuonna Func2 = Vuonna Func1 = Vuonna Func0 = In

/ / State7 = T State6 = T State5 = T State4 = T State3 = T State2 = T State1 = T State0 = T

PORTD = 0x00;

DDRD = 0x00;/ / Timer / Counter 0 käynnistystoimien

/ / Clock source: System Clock

/ / Kellon arvo: Timer 0 päältä

/ / Mode: Normal top = FFH

/ / OC0 output: Katkaistu

TCCR0 = 0x00;

TCNT0 = 0x00;

OCR0 = 0x00;/ / Timer / Counter 1 käynnistystoimien

/ / Clock source: System Clock

/ / Kellon arvo: Timer 1 Pysäytetty

/ / Mode: Normal top = FFFFh

/ / OC1A output: lopettaa.

/ / OC1B output: lopettaa.

/ / Noise Canceler: Off

/ / Input Capture on Falling Edge

/ / Timer 1 Overflow Interrupt: Off

/ / Input Capture Interrupt: Off

/ / Vertaa A Match Interrupt: Off

/ / Compare B Match Interrupt: Off

TCCR1A = 0x00;

TCCR1B = 0x00;

TCNT1H = 0x00;

TCNT1L = 0x00;

ICR1H = 0x00;

ICR1L = 0x00;

OCR1AH = 0x00;

OCR1AL = 0x00;

OCR1BH = 0x00;

OCR1BL = 0x00;/ / Timer / Counter 2 käynnistystoimien

/ / Clock source: System Clock

/ / Kellon arvo: Timer 2 Pysäytetty

/ / Mode: Normal top = FFH

/ / OC2 output: Katkaistu

ASSR = 0x00;

TCCR2 = 0x00;

TCNT2 = 0x00;

OCR2 = 0x00;/ / External Interrupt (s) käynnistystoimien

/ / INT0: Off

/ / INT1: Off

/ / INT2: Off

MCUCR = 0x00;

MCUCSR = 0x00;/ / Timer (s) / Counter (s) Interrupt (s) käynnistystoimien

TIMSK = 0x00;/ / USART käynnistystoimien

/ / Communication Parameters: 8 Data, 2 Stop, No Parity

/ / USART Receiver: On

/ / USART Lähettimen: Käytössä

/ / USART Mode: Asynchronous

/ / USART Baud Rate: 115200

UCSRA = 0x00;

UCSRB = 0x18;

UCSRC = 0x8E;

UBRRH = 0x00;

UBRRL = 0x08;/ / Analog vertailutehdas käynnistystoimien

/ / Analog vertailutehdas: Off

/ / Analog vertailutehdas Input Capture on Timer / Counter 1: Off

ACSR = 0x80;

SFIOR = 0x00;modem_init_micro ();

checkat ();

delay_ms (100);

checkcmgf ();

delay_ms (100);

if (voimassa == 1)

(

kun taas (1)

(

PORTA.0 = 1;

delay_ms (1000);

PORTA.0 = 0;

delay_ms (1000);

)

)

else if (voimassa == 2)

PORTA.0 = 1;

muuten

PORTA.0 = 0;)
 
Saatat joutua liittämään RTS signaalin GSM Modeemi.Jos käytät SIM300, että voi olla ongelma.Tarvitset myös lisätä

while (1);

mitään vastaavia lopussa teidän tärkein ominaisuus

 

Welcome to EDABoard.com

Sponsor

Back
Top