久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2587|回復: 1
打印 上一主題 下一主題
收起左側

0.96OLED單片機萬年歷程序 GA6走AT指令

[復制鏈接]
跳轉到指定樓層
樓主
發現一個兩年前寫的東西,可以自定義鬧鐘個數(為了穩妥我設置最多6個),超時報警,1分鐘無人按下取消鬧鐘會發送短信給用戶。
有個問題就是GA6走AT指令,發完短信有程序概率GG,也懶得去修改了。
確定好用,之前開出工廠板,焊接上就能跑,需要自己取,本人不提供任何技術支持。

單片機源程序如下:
  1. #include "REG51.h"
  2. #include "oled.h"
  3. #include "bmp.h"
  4. #include "24c02.h"
  5. #include "ds1302.h"
  6. #include "string.h"
  7. #include "GA6_module_errors.h"


  8. #define uchar unsigned char
  9. #define uint  unsigned int

  10. #define Buf_Max                    70         //串口1緩存長度
  11. #define STABLE_TIMES          20        //等待上電后穩定
  12. #define UART1_SendLR() UART1_SendData(0X0D)

  13.         //DS1302引腳定義,可根據實際情況自行修改端口定義
  14. uint aa;
  15. unsigned char pp;
  16. bit close;
  17. bit dunxin_Flag = 0;
  18. bit led = 0;

  19. //初始時間定義
  20. uchar time_buf[8] = {0x20,0x10,0x09,0x14,0x23,0x59,0x50,0x02};//初始時間
  21. uchar readtime[14];//當前時間
  22. uchar set[16] = {0x02,0x00,0x00,0x05,0x00,0x05,0x01,0x08,0x01,0x07,0x00,0x00,0x00,0x08,0x03,0x00};//年月日的每一位
  23. uchar sec_buf=0;  //秒緩存
  24. uchar sec_flag=0; //秒標志位

  25. //多組鬧鐘設置變量區
  26. uchar nao_change;
  27. uchar nao_number;                                                        //鬧鐘總個數
  28. uchar nao_this;                                 //當前時那個鬧鐘
  29. uchar nao_temp_number[4];                        //存放當前修改鬧鐘處
  30. uchar ten_delay[4];


  31. xdata uchar Uart1_Buf[Buf_Max];
  32. uchar First_Int = 0;

  33. static uchar  *phone_num = "AT+CMGS=\"15142345200\""; //撥打電話,修改這里可以修改撥打的電話。

  34. uint count_20ms;

  35. int ret;
  36. //功能:延時1毫秒
  37. //入口參數:x
  38. //出口參數:無
  39. //說明:晶振為12M

  40. /***********************按鍵定義*************************************************/
  41. sbit key1=P2^0;
  42. sbit key2=P2^1;
  43. sbit key3=P2^2;
  44. sbit key4=P0^1;
  45. uchar status=0,sta=0;//按鍵功能選擇定義(年0,月1,日2,時3,分4 )
  46. /////////////////////////////////////////////

  47. sbit key_stop = P0^2;

  48. ////////////////
  49. sbit BEEZ = P0^7;
  50. sbit LED_B = P2^3;
  51. sbit LED_G = P2^4;
  52. sbit LED_R = P2^5;

  53. void delay_ms1(uint ms);   //延時ms個20ms  ms*20ms
  54. void CLR_Buf(void);      //清串口接收緩存
  55. uchar          Find(uchar *a);        //查找字符串
  56. void UART1_SendData(uchar dat);   //串口1發送 1字節
  57. void UART1_SendString(char *s);//串口1發送 字符串
  58. void UART1_Send_Command(char *s);
  59. uchar   UART1_Send_AT_Command(uchar *b,uchar *a,uchar wait_time,uint interval_time);//at命令發送
  60. uchar UART1_Send_AT_Command_END(uchar *b,uchar *a,uchar wait_time,uint interval_time);

  61. uchar Wait_CREG(uchar query_times);


  62. //
  63. void Timer0Init(void)                //20毫秒@115200
  64. {
  65.         TMOD &= 0xF0;               
  66.         TMOD |= 0x01;                //
  67.         TL0 = (65536-20000)%256;                //
  68.         TH0 = (65536-20000)/256;                //
  69.         TF0 = 0;                //
  70.         ET0 = 1;              //
  71.         TR0 = 1;                //開始計時
  72. }

  73. void Uart1Init(void)                //9600bps@11.05926MHz
  74. {
  75.         PCON &= 0x7F;                //
  76.         SCON = 0x50;                //
  77.         TMOD &= 0x0F;                //
  78.         TMOD |= 0x20;                //
  79.         TL1 = 0xFD;                  //
  80.         TH1 = 0xFD;                  //
  81.         ET1 = 0;                    //
  82.         TR1 = 1;                    //
  83.         ES  = 1;                                        //
  84. }

  85. int check_status(void)
  86. {
  87.         int ret;
  88.        
  89.         ret = UART1_Send_AT_Command("AT","OK",3,50);//測試通信是否成功
  90.         if(ret == 0)
  91.         {
  92.                 return COMMUNITE_ERROR;
  93.         }
  94.        
  95.         ret = UART1_Send_AT_Command("AT+CPIN?","READY",2,50);//查詢卡是否插上
  96.         if(ret == 0)
  97.         {
  98.                 return NO_SIM_CARD_ERROR;
  99.         }
  100.        
  101.         ret = Wait_CREG(3);//查詢卡是否注冊到網絡
  102.         if(ret == 0)
  103.         {
  104.                 return SIM_CARD_NO_REG_ERROR;
  105.         }
  106.         return 1;
  107. }

  108. /***************************************************************
  109. 注:當然你可以返回其他值,來確定到底是哪一步發送指令出現失敗了。
  110. ****************************************************************/
  111. int send_text_message(char *content)
  112. {
  113.         uchar ret;
  114.         char end_char[2];
  115.        
  116.         end_char[0] = 0x1A;//結束字符
  117.         end_char[1] = '\0';
  118.        
  119.         //設置存儲位置
  120.         ret = UART1_Send_AT_Command("AT+CPMS=\"SM\",\"ME\",\"SM\"","OK",3,100);
  121.         if(ret == 0)
  122.         {
  123.                 return AT_CPMS_ERROR;
  124.         }
  125.        
  126.         ret = UART1_Send_AT_Command("AT+CMGF=1","OK",3,50);//配置為TEXT模式
  127.         if(ret == 0)
  128.         {
  129.                 return AT_CMGF_ERROR;
  130.         }
  131.        
  132.        
  133.         ret = UART1_Send_AT_Command("AT+CSCS=\"GSM\"","OK",3,50);//設置字符格式
  134.         if(ret == 0)
  135.         {
  136.                 return AT_CSCS_ERROR;
  137.         }
  138.        
  139.         ret = UART1_Send_AT_Command(phone_num,">",3,50);//輸入收信人的電話號碼
  140.         if(ret == 0)
  141.         {
  142.                 return AT_CMGS_ERROR;
  143.         }
  144.        
  145.         UART1_SendString(content); //此函數發送短信內容 不加回車換行
  146.         ret = UART1_Send_AT_Command_END(end_char,"OK",1,250);//發送結束符,等待返回ok,等待5S發一次,因為短信成功發送的狀態時間比較長
  147.         if(ret == 0)
  148.         {
  149.                 return END_CHAR_ERROR;
  150.         }
  151.        
  152.         return 1;
  153. }

  154. ///////

  155. void delay(uint t)  
  156. {
  157. uint b;
  158. for(;t;t--)
  159.   for(b=0;b<121;b++);
  160. }

  161. void Delay_xms(uint x)
  162. {
  163.   uint i,j;
  164.   for(i=0;i<x;i++)
  165.     for(j=0;j<112;j++);
  166. }

  167. /******************************************************************************/
  168. /*****************************按鍵功能函數*************************************/
  169. void key_1()     //選擇變量函數
  170. {
  171.        
  172.          key1=1;
  173.          if(key1==0)
  174.           delay(10);                                                                                                                                                                                                                               
  175.          {
  176.           if(key1==0)
  177.           {
  178.            if(++status>12)
  179.                  {
  180.                                 if(++sta>4)
  181.                                 {
  182.                                         sta = 0;
  183.                                         status = 0;
  184.                                 }

  185.                  } //1控制年千位的變化,2控制年百位的變化,3控制年十位的變化
  186.           }       //4控制年個位的變化,5控制月十位的變化,6月個位,
  187.           while(key1==0);
  188.          }
  189. }

  190. ////////////////////////////////////////////////////////////////////////////
  191. void key_4()
  192. {
  193.         key4= 1;
  194.         if(key4==0)
  195.         {
  196.                 delay(10);
  197.                 if(key4==0)
  198.                 {
  199.                         if(++nao_change>2)
  200.                         {
  201.                                 nao_change = 0;
  202.                         }
  203.                 }
  204.         }
  205.         while(key4==0);
  206. }
  207. ////////////////////////////////////////////////////////////////////////////////

  208. /******************************************************************************/
  209. void key_2()       //加函數
  210. {
  211.        
  212.          key2=1;
  213.          if(key2==0)
  214.          {
  215.                   delay(10);
  216.                   if(key2==0)
  217.                   {
  218.                    switch(status)
  219.                    {
  220.                             case 1:if(++set[0]>9)set[0]=0;break;
  221.                             case 2:if(++set[1]>9)set[1]=0;break;
  222.                             case 3:if(++set[2]>1)set[2]=0;break;
  223.                             case 4:if(++set[3]>9)set[3]=1;break;
  224.                             case 5:if(++set[4]>9)set[4]=0;break;
  225.                                   case 6:if(++set[5]>9)set[5]=0;break;
  226.                                   case 7:if(++set[6]>9)set[6]=0;break;
  227.                                   case 8:if(++set[7]>9)set[7]=0;break;
  228.                                   case 9:if(++set[8]>9)set[8]=0;break;
  229.                                  case 10:if(++set[9]>9)set[9]=0;break;
  230.                                  case 11:if(++set[10]>9)set[10]=0;break;
  231.                                  case 12:if(++set[11]>9)set[11]=0;break;
  232.                    }
  233.                          
  234.                          switch(sta)
  235.                    {
  236.                            case 1:if(++set[12]>2)set[12]=0;break;
  237.                                  case 2:if(++set[13]>9)set[13]=0;break;
  238.                                  case 3:if(++set[14]>5)set[14]=0;break;
  239.                                  case 4:if(++set[15]>9)set[15]=0;break;         
  240.                    }
  241.                          
  242.                          switch(nao_change)
  243.                          {
  244.                                  case 1:if(++nao_number>6)nao_number=6;write24c02(250,nao_number);break; //這里寫修改鬧鐘總個數
  245.                                  case 2:if(++nao_this>nao_number)nao_this=nao_number;write24c02(251,nao_this);break; //這里修改當前數值
  246.                          }
  247.                          
  248.           }
  249.         while(key2==0);
  250.          }
  251. }
  252. /*****************************************************************************/
  253. void key_3()//減函數
  254. {
  255.        
  256.           key3=1;
  257.          if(key3==0)
  258.          {
  259.                   delay(10);
  260.                   if(key3==0)
  261.                   {
  262.                    switch(status)
  263.                    {
  264.                             case 1:if((set[0]--)<=0)set[0]=9;break;
  265.                             case 2:if((set[1]--)<=0)set[1]=9;break;
  266.                             case 3:if((set[2]--)<=0)set[2]=1;break;
  267.                             case 4:if((set[3]--)<1)set[3]=9;break;
  268.                             case 5:if((set[4]--)<=0)set[4]=9;break;
  269.                                   case 6:if((set[5]--)<=0)set[5]=9;break;
  270.                                   case 7:if((set[6]--)<=0)set[6]=9;break;
  271.                                   case 8:if((set[7]--)<=0)set[7]=9;break;
  272.                                   case 9:if((set[8]--)<=0)set[8]=9;break;
  273.                                   case 10:if((set[9]--)<=0)set[9]=9;break;
  274.                                  case 11:if((set[10]--)<=0)set[10]=9;break;
  275.                                  case 12:if((set[11]--)<=0)set[11]=9;break;
  276. //                                 case 13:if((set[12]--)<=0)set[12]=9;break;
  277. //                                 case 14:if((set[13]--)<=0)set[13]=9;break;
  278. //                                 case 15:if((set[14]--)<=0)set[14]=9;break;
  279. //                                 case 16:if((set[15]--)<=0)set[15]=9;break;
  280.                    }
  281.                          switch(sta)
  282.                    {
  283.                            case 1:if((set[12]--)<=0)set[12]=2;break;
  284.                                  case 2:if((set[13]--)<=0)set[13]=9;break;
  285.                                  case 3:if((set[14]--)<=0)set[14]=5;break;
  286.                                  case 4:if((set[15]--)<=0)set[15]=9;break;         
  287.                    }
  288.                          
  289.                          switch(nao_change)
  290.                          {
  291.                                  case 1:if((nao_number--)<=1)nao_number=1;write24c02(250,nao_number);break; //這里寫修改鬧鐘總個數
  292.                                  case 2:if((nao_this--)<=1)nao_this=1;
  293.                                                                 if(nao_this>nao_number)nao_this=nao_number;
  294.                                                                 write24c02(251,nao_this);break; //這里修改當前數值
  295.                          }
  296.                          
  297.                   }
  298.                   while(key3==0);
  299.          }
  300. }


  301. /*****************************************************************************/
  302. void key_time()    //按鍵設置時間的處理
  303. {
  304. if(status>0)
  305. {
  306.          ds1302_write_time(time_buf,set);
  307. }
  308. }
  309. ///////////////////////////////鬧鐘/////////////////////

  310. void naozhong()    //鬧鐘
  311. {
  312.         if((readtime[8]==set[12])&&(readtime[9]==set[13])&&(readtime[10]==set[14])&&(readtime[11]==set[15])&&(readtime[12]==0)&&(readtime[13]==0))
  313.         {   
  314.                 led = 1;
  315.                 ten_delay[0] = set[12];
  316.                 ten_delay[1] = set[13];
  317.                 ten_delay[2] = set[14];
  318.                 ten_delay[3] = set[15]+1;
  319.                 if(nao_this>=nao_number)
  320.                 {
  321.                         nao_this=1;
  322.                 }
  323.                
  324.                 nao_this++;
  325.                 write24c02(251,nao_this);
  326.         }
  327.         if((readtime[8]==ten_delay[0])&&(readtime[9]==ten_delay[1])&&(readtime[10]==ten_delay[2])&&(readtime[11]==ten_delay[3]))
  328.         {
  329.                 //響應鬧鐘10分鐘后,發送短信
  330.                 dunxin_Flag = 1;
  331.                 led = 0;
  332.         }
  333. }

  334. void stop()
  335. {
  336.        
  337.          key_stop=1;
  338.         if(led == 1)
  339.         {
  340.          if(key_stop==0)
  341.           delay(10);                                                                                                                                                                                                                               
  342.          {
  343.           if(key_stop==0)
  344.           {
  345.            led =0;
  346.           }      
  347.           while(key_stop==0);
  348.                 //記錄此刻時間點  6 到 9
  349.                 write24c02(100,set[6]);
  350.                 write24c02(101,set[7]);
  351.                 write24c02(102,set[8]);
  352.                 write24c02(103,set[9]);
  353.                 }
  354. }
  355. }

  356. void Time_chack()
  357. {
  358.                 set[0] = readtime[2];
  359.                 set[1] = readtime[3];
  360.                 set[2] = readtime[4];
  361.                 set[3] = readtime[5];
  362.                 set[4] = readtime[6];
  363.                 set[5] = readtime[7];
  364.                 set[6] = readtime[8];
  365.                 set[7] = readtime[9];
  366.                 set[8] = readtime[10];
  367.                 set[9] = readtime[11];
  368.                 set[10] = readtime[12];
  369.                 set[11] = readtime[13];
  370. }

  371. void BEEZ_Waring()
  372. {
  373.         if(led)
  374.         {
  375.                 BEEZ = 0;   //opens
  376.                 LED_B = 0;
  377.                 LED_G = 0;
  378.                 LED_R = 0;
  379.         }
  380.         else
  381.         {
  382.                 BEEZ = 1;
  383.                 LED_B = 1;
  384.                 LED_G = 1;
  385.                 LED_R = 1;
  386.         }
  387. }


  388. /////////////////////////////////////////////////////////
  389. int main(void)
  390. {       
  391.         uchar i;
  392.        
  393.         BEEZ = 1;
  394.         LED_B = 1;
  395.         LED_G = 1;
  396.         LED_R = 1;
  397.         //讀取鬧鐘時間
  398. //        write24c02(250,1);write24c02(251,1);//初始化鬧鐘個數
  399.         //

  400.         nao_number = read24c02(250);
  401.         nao_this= read24c02(251);
  402.         //讀取結束
  403.         Delay_xms(50);//等待系統穩定
  404.         ds1302_init(); //DS1302初始化
  405.         // Uart_init(0); //波特率初始化為2400
  406.         Delay_xms(10);
  407. //        ds1302_write_time(); //寫入初始值
  408.         OLED_Init();                        //初始化OLED  
  409.         OLED_Clear();
  410.        
  411.         OLED_InitDIsply_DS1302(); //顯示固定UI
  412.         //up all right

  413.         Uart1Init(); //串口初始化
  414.         Timer0Init();//TIM0初始化
  415.         EA = 1;      //開啟總中斷

  416.         for(i = 0;i < STABLE_TIMES;i++)//等待網絡穩定
  417.         {
  418.                 delay_ms1(50);
  419.         }

  420.         while(1)
  421.         {       
  422.                
  423.                 set[12] = read24c02(nao_this*4-3);  //1    5
  424.                 set[13] = read24c02(nao_this*4-2);  //2    6
  425.                 set[14] = read24c02(nao_this*4-1);  //3    7
  426.                 set[15] = read24c02(nao_this*4-0);  //4    8

  427.                
  428.                 ds1302_read_time(time_buf,readtime);  //讀取時間
  429.                 //set = readtime
  430.                 //start 0 to over 11
  431.                
  432.                 Time_chack();
  433.                
  434.     OLED_Disply_DS1302(readtime,set);
  435.                 //顯示吃藥時間
  436.                 OLED_ShowNum(45,6,(read24c02(100)),1,16);//
  437.                 OLED_ShowNum(54,6,(read24c02(101)),1,16);
  438.                 OLED_ShowNum(72,6,(read24c02(102)),1,16);
  439.                 OLED_ShowNum(81,6,(read24c02(103)),1,16);
  440.                
  441.                 OLED_ShowNum(0,6,nao_number,1,16);
  442.                 OLED_ShowNum(18,6,nao_this,1,16);
  443.                
  444.                 Disply_Time_Mark(status,sta,nao_change);
  445.                 key_1();
  446.                 key_2();
  447.                 key_3();
  448.                 key_4();
  449.                 key_time();
  450.                 naozhong();
  451.                 stop();
  452.                
  453.                 if(!((nao_temp_number[0] == set[12]) && (nao_temp_number[1] == set[13]) && (nao_temp_number[2] == set[14]) &&(nao_temp_number[3] == set[15])))
  454.                 {
  455.                         write24c02(nao_this*4-3,set[12]); //this 1 存放到 1  0    this 2 存放到 5  1
  456.                         write24c02(nao_this*4-2,set[13]); //this 1 存放到 2  0    this 2 存放到 6  1
  457.                         write24c02(nao_this*4-1,set[14]); //this 1 存放到 3  5    this 2 存放到 7  0
  458.                         write24c02(nao_this*4-0,set[15]); //this 1 存放到 4  5    this 2 存放到 8  0
  459.                         nao_temp_number[0] = set[12];
  460.                         nao_temp_number[1] = set[13];
  461.                         nao_temp_number[2] = set[14];
  462.                         nao_temp_number[3] = set[15];
  463.                 }

  464.                 BEEZ_Waring();
  465.                 if(dunxin_Flag)
  466.                 {
  467.                         dunxin_Flag = 0;
  468.                         if(ret == 1)
  469.                         {
  470.                                 ret = send_text_message("waring!");//發送TEXT短信
  471.                         }
  472.                 }
  473.         }
  474.        
  475. }          

  476. void Timer0_ISR() interrupt 1
  477. {
  478.         TR0=0;//關定時器
  479.         TL0 = (65536-20000)%256;                //重設定時器初值
  480.         TH0 = (65536-20000)/256;                //
  481.        
  482.         if(count_20ms > 0) //20ms延時計數器
  483.         {
  484.                 count_20ms--;
  485.         }       
  486.        
  487.         TR0=1;//開定時器
  488. }


  489. /********************* UART1中斷函數************************/
  490. void UART1_ISR (void) interrupt 4
  491. {
  492.         if (RI)
  493.         {
  494.                 RI = 0;                           //清除RI位
  495.                 Uart1_Buf[First_Int] = SBUF;            //將接收到的字符串存到緩存中
  496.                 First_Int++;                          //緩存指針向后移動
  497.                 if(First_Int >= Buf_Max)                 //如果緩存滿,將緩存指針指向緩存的首地址
  498.                 {
  499.                         First_Int = 0;
  500.                 }               
  501.         }
  502.         if (TI)
  503.         {
  504.                 TI = 0;                          //清除TI位
  505.         }
  506. }


  507. /*******************************************************************************
  508. * 函數名 : CLR_Buf
  509. * 描述   : 清除串口2緩存數據
  510. * 輸入   :
  511. * 輸出   :
  512. * 返回   :
  513. * 注意   :
  514. *******************************************************************************/
  515. void CLR_Buf(void)
  516. {
  517.         uchar k;
  518.         for(k=0;k<Buf_Max;k++)      //將緩存內容清零
  519.         {
  520.                 Uart1_Buf[k] = 0x00;
  521.         }
  522.     First_Int = 0;              //接收字符串的起始存儲位置
  523. }


  524. /*******************************************************************************
  525. * 函數名 : Find
  526. * 描述   : 判斷緩存中是否含有指定的字符串
  527. * 輸入   :
  528. * 輸出   :
  529. * 返回   : unsigned char:1 找到指定字符,0 未找到指定字符
  530. * 注意   :
  531. *******************************************************************************/

  532. uchar Find(uchar *a)
  533. {
  534.         ES = 0;  //改進程序
  535.         if(strstr(Uart1_Buf,a)!=NULL)
  536.         {
  537.                 ES = 1;
  538.                 return 1;
  539.         }       
  540.         else
  541.         {
  542.                 ES = 1;
  543.                 return 0;
  544.         }
  545.                
  546. }



  547. /*******************************************************************************
  548. * 函數名 : Wait_CREG
  549. * 描述   : 等待模塊注冊成功
  550. * 輸入   :
  551. * 輸出   :
  552. * 返回   :
  553. * 注意   :
  554. *******************************************************************************/
  555. uchar Wait_CREG(uchar query_times)
  556. {
  557.         uchar i;
  558.         uchar k;
  559.         uchar j;
  560.         i = 0;
  561.         CLR_Buf();
  562.         while(i == 0)                               
  563.         {

  564.                 UART1_Send_Command("AT+CREG?");
  565.                 delay_ms1(100);
  566.                
  567.                 for(k=0;k<Buf_Max;k++)                             
  568.                 {
  569.                         if((Uart1_Buf[k] == '+')&&(Uart1_Buf[k+1] == 'C')&&(Uart1_Buf[k+2] == 'R')&&(Uart1_Buf[k+3] == 'E')&&(Uart1_Buf[k+4] == 'G')&&(Uart1_Buf[k+5] == ':'))
  570.                         {
  571.                                          
  572.                                 if((Uart1_Buf[k+7] == '1')&&((Uart1_Buf[k+9] == '1')||(Uart1_Buf[k+9] == '5')))
  573.                                 {
  574.                                         i = 1;
  575.                                         return 1;
  576.                                 }
  577.                                
  578.                         }
  579.                 }
  580.                 j++;
  581.                 if(j > query_times)
  582.                 {
  583.                         return 0;
  584.                 }
  585.                
  586.         }
  587.         return 0;
  588. }



  589. /*----------------------------
  590. UART1 發送串口數據
  591. -----------------------------*/
  592. void UART1_SendData(uchar dat)
  593. {
  594.         ES=0;                        //關串口中斷
  595.         SBUF=dat;                       
  596.         while(TI!=1);        //等待發送成功
  597.         TI=0;                        //清除發送中斷標志
  598.         ES=1;                        //開串口中斷
  599. }
  600. /*----------------------------
  601. UART1 發送字符串
  602. -----------------------------*/
  603. void UART1_SendString(char *s)
  604. {
  605.         while(*s)//檢測字符串結束符
  606.         {
  607.                 UART1_SendData(*s++);//發送當前字符
  608.         }
  609. }

  610. /**********************************
  611. 發送命令
  612. **********************************/
  613. ……………………

  614. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼


所有資料51hei提供下載:
writebug代碼.zip (131.24 KB, 下載次數: 8)

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏4 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:393260 發表于 2020-6-13 16:39 | 只看該作者
想要發短信,記得把號碼改了
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 免费在线视频一区二区 | 国产精品久久久久久久粉嫩 | 免费国产视频 | 精品久久久久久久久久 | 亚洲精品乱码久久久久v最新版 | 欧美高清hd | 久久大| 在线亚洲精品 | 国产黄色电影 | 男人的天堂视频网站 | 亚洲精品成人免费 | 午夜小视频在线播放 | 成人一区av偷拍 | 国产成人精品久久 | 成人免费视频网站在线观看 | 午夜免费看视频 | 欧美一a一片一级一片 | 精品亚洲永久免费精品 | 凹凸日日摸日日碰夜夜 | 91亚洲国产成人久久精品网站 | 一区二区三区四区国产 | 亚洲视频欧美视频 | 三级成人片 | 在线观看视频你懂得 | 亚洲精品久| 麻豆久久久久久久 | 欧美久久免费观看 | 美女黄色在线观看 | 蜜桃av一区二区三区 | 久久精品二区 | 亚洲黄色av | 欧美激情在线播放 | 国产成人精品一区二区三区在线 | 亚洲一区二区免费视频 | 国产伊人精品 | 九一国产精品 | 亚洲第一网站 | 91麻豆产精品久久久久久夏晴子 | 一区二区三区国产 | 日韩视频在线观看中文字幕 | av激情影院|