利用8051撰寫AT command 的問題

看板ASM (組合語言)作者 (不彥其煩)時間15年前 (2009/12/14 23:06), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/2 (看更多)
各位大大好,我是新手,不太會發文,如有違規,敬請見諒唷! 如果有大大會解答這個問題的話,可以向我丟水球嗎?非常需要各位大大的協助! 非常迫切需要,這星期要交! 我的問題如下: 使用Keil C撰寫; LED設定為P1^0 ; senser設定為P2^0 每當一senser = = 1(感測到) ,則LED = 1(閃爍),之後再發送ATcommand。 我的疑問是,我的AT command是已宣告字元的方式來撰寫,不知道這樣寫是否可以使用。 再來是我們是使用RS-232傳輸介面來與GSM MODEN做溝通,senser感測到以後傳送 AT command 給GSM MODEN,GSM MODEN將會傳送簡訊給使用者的手機。 想請問RS-232定義的部分有無問題,以及AT command的寫法有無錯誤。 以下是我的程式碼: #include<AT89x52.h> sbit led = P1^0;//LED腳位定義 sbit sensor = P2^0;//感應器 char *C1="AT"; char *C2="AT+CMGF=1"; char *C3="AT+CMGS=0986426579"; char *C4="THIS IS A TEST"; delay(int d) //延遲副程式 { int i,j; for(i=0;i<d;i++) for(j=0;j<200;j++); } init_rs232() //初始化RS232通訊介面 <<這裡怪怪的 分號的部份>> { //通訊協定:<9600 N 8 1> SCON=0x50; //設定串列界面工作模式1,接收資料致能 TMOD=0x20; //設定計時器1工作於模式2 TH1=0xFD; //設定鮑率為9600BPS TR1=1; //啟動計時器1開始計數 TI=1; //設定串列傳送中斷產生旗號 } tx_char(unsigned char c) //傳送一位元組資料 { while(1) if(TI)break; //等待傳送中斷旗號產生 TI=0; //清除串列傳送中斷旗號 SBUF=c; //由串列埠傳送資料出去 } tx_str(char*str) //傳送字串資料 { do{tx_char(*str++);} while(*str!='\0'); } void main(void) { int i=0; init_rs232(); //初始化RS232通訊介面 delay(500); while(i==20) { led=0; delay(500); led=1; delay(500); i=i+1; } while(sensor ==1) { if (sensor ==0)//收到訊號 { tx_str(C1); //傳送執行訊息出去 led=0;//LED亮 delay(500); led=1;//LED不亮 tx_str(C2); //傳送執行訊息出去 led=0;//LED亮 delay(500); led=1;//LED不亮 tx_str(C3); //傳送執行訊息出去 led=0;//LED亮 delay(500); led=1;//LED不亮 tx_str(C4); //傳送執行訊息出去 led=0;//LED亮 delay(500); led=1;//LED不亮 } led=1;//LED不亮 } } 謝謝各位大大的耐心觀看,高手來幫幫我吧!感激不盡! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.168.47.118 ※ 編輯: maxwellyann 來自: 118.168.47.118 (12/14 23:12)
文章代碼(AID): #1B9bI1Jc (ASM)
討論串 (同標題文章)
文章代碼(AID): #1B9bI1Jc (ASM)