mga sir tanong ko lng kung may iba pang way bukod sa printf(); para mag send ng AT commands?
Bakit po di kayo gagamit ng printf() sir?
void initGSM(){ pause(200); printf("ATE0"); // First lest turn echo off cr(); // We need to pause as we will discard all received data after "ATE0\r" pause(200); printf("AT+CFUN=1"); cr(); pause(200); printf("AT+CMGF=1"); cr(); pause(200); printf("AT+CMGS=\"+639\""); pause(100); cr(); pause(100); printf("ok na ko!"); pause(100); ctrl_z();}
void read(){ int gsm; printf("AT+CMGR=1\r"); // SEND AT+CMGR=1 pause(500); for (gsm=0;gsm<=160;gsm++) { LED_DATA[gsm]= getch(); }}
Hindi po. May ibang function po ako para magscroll. Ginagamit ko lang po yung printf for initialization of gsm. Ay sir, pwde po patulong dito? Hindi po kasi mabasa ng mcu ko yung message e. Nagiging blanko kapag ginamit ko yung function na to. Sa umpisa may value yung LED_DATA ko. Na-iscroll naman po yung value nung LED_DATA. Pero kapag ginamit ko na yung function read() nagiging blanko na.
...Tx_String("AT+CMGF=1\n"); //set to text modeWaitRX();...Tx_String("AT+CMGR=1\n"); //read message entry #1WaitRX();...
void send(char c){ /*UART0*/ while (!(U0STAT0 & 0x04)); //Transmit Data register enabled U0TXD = c; //Send data}////////////////////////////////////Transmit string// and wait till response is completevoid Tx_String(char*sptr){ for(;*sptr;++sptr) { if(*sptr == 0x0A) send(0x0D); else send(*sptr); }}void WaitRX(void){ rxptr = Rx; rxlen=0; rxtmr=45; while(rxtmr>0);}
WARNING (747) --> Segment overlap occurs while binding the segment 'FAR_DATA' WARNING (747) --> EDATA has an out of range address of E:0425 WARNING (747) --> FAR_DATA has an out of range address of E:0377 to E:0425
#include <ez8.h>#include <stdio.h>//#include "SCANCODE.h"#include "functions.h"//PB0 = Strobe//PB1 = Data//PB2 = Clockvoid main(){ Clear_Display_Ram(); PAAF = 0x30; PADD = 0xff; PBDD &= ~0x07; PCDD = 0x00; PBOUT = 0xff; PCOUT = 0xff; initUART(); initGSM(); //read(); for(d=0;d<64;d++) { clock(); } strobe(); d = 0; while(1) { Display(); i++; if(i == 1)//SPEED NG DISPLAY { i = 0; shift(); } }}
#include <eZ8.h>#include "cmap.h"#include <sio.h>#include <string.h>void clock(void);void strobe(void);void cr(void);void pause(int duration);void Tx_String(char*sptr);void ctrl_z(void);unsigned short int space;unsigned char *Display_Ram;unsigned char char_pointer;unsigned char mask;char count; unsigned char shift_counter;unsigned short int i;unsigned short int cnt;unsigned short int d;char *LED_DATA = "Useful for your tweets on Twitter, as well as a multitude of other applications, this is a free online calculator which counts the number of characters or letters in a text.";void load(void){ unsigned char counter1; if(LED_DATA[char_pointer]==0x00) { char_pointer = 0; space = 12; } for(counter1 = 0; counter1 < 5; counter1++) { if(space>0) { Display_Ram[63 + counter1] = 0x00; } else Display_Ram[63 + counter1] = character_data[(LED_DATA[char_pointer] - 0x20)][counter1]; } Display_Ram[68] = 0x00; char_pointer++; if(space==1) { //read(); } if(space>0) { space--; char_pointer = 0; } }void Clear_Display_Ram(void){ unsigned char rcount; memset(Display_Ram,' ',150); for(rcount = 0; rcount < 69; rcount++) Display_Ram[rcount] = 0x00;}void shift(void) { unsigned char i; for(i=0;i<69;i++) Display_Ram[i] = Display_Ram[i+1]; shift_counter++; if(shift_counter == 6) { shift_counter = 0; load(); }}void scan(void){ for (count=63;count>(-1);count--) //95 { if ((Display_Ram[count] & mask) == mask) { PBOUT |= 0x02; } else { PBOUT &= ~0x02; } clock(); } strobe();}#define INTEN 150void Display(void){ unsigned char bit = 0x01; mask = 0x80; for(cnt=0;cnt<8;cnt++) { scan(); PCOUT = ~bit; for(d=0;d<INTEN;d++); PCOUT = 0xff; mask = mask >> 1; bit = bit << 1; }}void clock(void){ PBOUT &= ~0x04; // clock hi PBOUT |= 0x04; // clock low}void strobe(void){ PBOUT &= ~0x01; // strobe hi PCOUT |= 0x01; // strobe low}void initUART(void){ init_uart(_UART0, _DEFFREQ, 9600); select_port(_UART0); pause(1000);}void initGSM(void){ pause(200); Tx_String("ATE0"); pause(500); cr(); Tx_String("AT+CFUN=1"); pause(300); cr(); Tx_String("AT+CMGS=\"+639"); pause(100); cr(); Tx_String("Hallu!!"); pause(200); ctrl_z();}void pause(int duration){ int i2; int j2; for (i2=0;i2<duration;i2++) { for (j2=0;j2<325;j2++); }}void ctrl_z(void){ putch(26);}void cr(void){ putch(13);}void read(void){ short int gsm; Tx_String("AT+CMGR=1\n"); for(gsm=0;gsm<=150;gsm++) { LED_DATA[gsm] = getch(); } cr();}void send(char c){ /*UART0*/ while (!(U0STAT0 & 0x04)); //Transmit Data register enabled U0TXD = c; //Send data}void Tx_String(char*sptr){ for(;*sptr;++sptr) { if(*sptr == 0x0A) send(0x0D); else send(*sptr); }}
sir ask lng po ung serial communication po ba ng zilog at ng modem is always open?