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
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