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

標題: STC_12C5A60S2和W77E58 雙串口程序,代碼 [打印本頁]

作者: 51黑芯片    時間: 2016-1-16 23:03
標題: STC_12C5A60S2和W77E58 雙串口程序,代碼
/****************************************************************/
/* 煜:根據“ 2016-12-4”
/*    http://www.zg4o1577.cn/mcu/3297.html STC12串口1(獨立波特率發生器)使用
/*    http://www.zg4o1577.cn/mcu/3298.html STC12單片機串口2的應用
/* 自整合
/*
/*
/* stc12c5a.h   stc12的頭文件從:http://www.zg4o1577.cn/mcu/3282.html 這里下載.
/*
/***************************************************************/

  1. #include<12C5A60S2.h>
  2. #include<stdio.h>     //輸入輸出函數,要用到printf
  3. #include<string.h>     //字符串函數
  4. #define uchar unsigned char
  5. #define uint unsigned int
  6. #define Buf_Max 40
  7. #define Buf_Max_one 40
  8. #define Delay_Time 600
  9.          //引腳
  10. sbit M33_on=P1^0;     //M33啟動信號腳  
  11. sbit H_rd=P3^7;      //RD_即OE腳   H_表示跟SRAM 相關 外部數據存儲器_讀選通
  12. sbit H_wr=P3^6;      //we_即WR腳        外部數據存儲器_寫選通
  13. //sbit H_oe=       //ds1250存儲器,不需要?
  14. sbit H_ale=P3^0;     //74H573



  15. uchar i;
  16. uchar  Rec_Buf[]={"hello! Jim\n"};
  17. uchar  Rec_Buf_one[]={"Buf_CK_one\n"};

  18. /****************************************************************/
  19. /* 函數聲明
  20. /*
  21. /*
  22. /***************************************************************/
  23. void Delay_ms(unsigned int time);
  24. void Init(void);
  25. void Serial_Iint(void);
  26. void Serial_Iint_one(void);
  27. void Send_Char(uchar a);
  28. void Send_Char_one(uchar a);
  29. void Send_String(uchar *tab);
  30. void Send_String_one(uchar *tab);
  31. bit HanChun(unsigned char *a);
  32. void CLR_Buf(void);
  33. void CLR_Buf_one(void);

  34. /****************************************************************/
  35. /* 函數
  36. /*
  37. /*
  38. /***************************************************************/
  39. void Delay_ms(unsigned int time)
  40. {
  41. unsigned int i_c;
  42. for(;time>0;time--)
  43. {
  44.   i_c=600;      //1T單片機i=600,若是12T單片機i=125
  45.   while(i_c--);
  46. }
  47. }
  48. /****************************************************************/
  49. /* 主函數
  50. /*
  51. /*
  52. /***************************************************************/
  53. void main(void)   
  54. {
  55. Init();        //P端口初始化為低電平 //影響第2串口_發送不成功;why        
  56.   
  57. M33_on=1;Delay_ms(5000);   //點火信號__M33_開機_拉低500ms_開機  12C的速度快3倍左右,故延時3倍時間
  58. M33_on=0;Delay_ms(800);
  59. M33_on=1;Delay_ms(500);
  60. Delay_ms(1000); Delay_ms(1000); Delay_ms(1000);

  61. TI=1;        //把TI置位1次,才能使用printf。
  62. S2CON&=0xFF;        //把TI置位1次,才能使用printf。

  63. Serial_Iint();

  64. Send_String("AT\n"); Delay_ms(500);     //發送握手指令,
  65. Send_String_one("AT\n");Delay_ms(500);     //發送握手指令,
  66. Send_String("AT\n"); Delay_ms(500);     //發送握手指令,
  67. Send_String_one("AT\n");Delay_ms(500);     //發送握手指令,
  68. Send_String("AT\n"); Delay_ms(500);     //發送握手指令,
  69. Send_String_one("AT\n");Delay_ms(500);     //發送握手指令,
  70.   //Send_Char(0x0d);    //回車
  71.   //Send_Char(0x0a);    //換行
  72.   Delay_ms(500);
  73. /*
  74. while(!HanChun("OK"))    //等待回應->握手成功
  75. {
  76.   //Send_String("AT\r\n");  //AT沒發成功的話,再次發送
  77.   Send_String("AT");    //AT沒發成功的話,再次發送
  78.    //Send_String("AT");   //發送聯機指令 //或者用Send_String函數
  79.    Send_Char(0x0d);    //發送回車符   
  80.    Send_Char(0x0a);    //發送換行符
  81.    Delay_ms(60000);
  82. }
  83. CLR_Buf();       //清除緩存區內容
  84. */

  85. Send_String("AT+CPMS=\"MT\",\"MT\",\"MT\"\n");  //短信操作都在MT(模塊終端)中進行 //1MT_讀取/刪除 2MT_寫入/發送 3MT_接收并儲存位置
  86. Delay_ms(500);
  87. Send_String_one("AT+CPMS=\"MT\",\"MT\",\"MT\"\n");  
  88.   //while(!HanChun("OK"));   //等待設置成功
  89.   //CLR_Buf();      //清除緩存內容
  90. Delay_ms(2000);
  91. Send_String("AT+CNMI=2,1\n");    //設置當有新短信到來時提示
  92. Send_String_one("AT+CNMI=2,1\n");   
  93.    
  94.   //while(!HanChun("OK"));      
  95.   //CLR_Buf();               
  96. Delay_ms(2000);
  97.    
  98. Send_String("AT+CMGF=0\n");    //消息格式 0_PDU模式 1_文本(TEXT)模式
  99. Send_String_one("AT+CMGF=0\n");      
  100.   //while(!HanChun("OK"));      
  101.   //CLR_Buf();
  102. Delay_ms(2000);


  103. while(1)
  104. {
  105.   Send_String(Rec_Buf);   //從串口發送出去
  106.   Delay_ms(1000);
  107.   
  108.   Send_String_one(Rec_Buf_one); //從(第2)串口發送出去
  109.   Delay_ms(1000);

  110. }
  111. }
  112. void Init(void)
  113. {
  114. P0=0x00;
  115. P1=0x0c;       //得設為0x0c;即避開串口腳,不能把串口腳設為低電平,否則第2串口不能發送
  116. P2=0x00;
  117. }


  118. bit HanChun(unsigned char *a)   //串口0_判斷緩存中是否有指定的字符串 ,有時_返回1
  119. {          //祥
  120. if(strstr(Rec_Buf,a)!=NULL)   //如果Rec_Buf包含了a,則為1;否則為0
  121.    return 1;
  122. else
  123.    return 0;
  124. }
  125. /****************************************************************/
  126. /* 串口0(即燒寫口)
  127. /*
  128. /*
  129. /***************************************************************/
  130. void Serial_Iint(void)     //已修正,可行
  131. {
  132.     TMOD = 0x20;    //定時器1工作在方式2  8位自動重裝
  133.     SCON = 0x50;    //串口1工作在方式1  10位異步收發 REN=1允許接收
  134.     //TH1 = 0xFA;  //定時器1初值
  135.     TH1 = 0xFD;  //定時器1初值
  136.     TL1 = TH1;
  137.     TR1 = 1;  //定時器1開始計數
  138.     EA =1;   //開總中斷
  139.     ES =1;   //開串口1中斷
  140.     S2CON = 0x50;   //串口2工作在方式1  10位異步收發 S2REN=1允許接收
  141.     //BRT = 0xFA;  //獨立波特率發生器初值
  142.     BRT = 0xFD;  //獨立波特率發生器初值
  143.     AUXR = 0x10;    //BRTR=1 獨立波特率發生器開始計數
  144.     IE2 =0x01;  //開串口2中斷  ES2=1
  145. }
  146. //------------------------------------------------------
  147. void Send_Char(uchar a) //*******************發送一個字符
  148. {
  149. ES=0;
  150. SBUF=a;
  151. Delay_ms(200);
  152. while(!TI);   //等待TI變為1
  153. TI=0;    //TI清0
  154. ES=1;
  155. }
  156. void Send_String(uchar *tab)//*******************發送一個字符串
  157. {
  158. ES=0;
  159. while(*tab!='\0')
  160. {
  161.   Send_Char(*tab++);
  162. }
  163. ES=1;
  164. }
  165. void CLR_Buf(void)      //清除緩存區內容
  166. {
  167. unsigned char k;
  168. for(k=0;k<Buf_Max;k++)   
  169. {
  170.     Rec_Buf[k]=0;
  171. }
  172. i=0;             //接收字符串的起始存儲位置
  173. }
  174. void Serial_Int(void) interrupt 4 //********************串口1中斷函數
  175. {
  176. ES=0;   //關串口中斷,防止中斷的嵌套
  177. if(TI)   //如果是串口1發送中斷(TI)不進行處理
  178. {
  179.   TI=0;  //TI清0
  180. }
  181. if(RI)   
  182. {
  183.   RI=0;  //RI清0
  184.   Rec_Buf[i]=SBUF;
  185.   i++;
  186.   if(i>Buf_Max)
  187.   {
  188.    i=0;
  189.   }
  190. }
  191. ES=1;   //開啟串口中斷
  192. }

  193. /****************************************************************/
  194. /* 串口2(即第2串口)
  195. /*
  196. /*
  197. /***************************************************************/
  198. void Send_Char_one(uchar a)   //*******************發送一個字符
  199. {
  200. IE2=0x00;
  201. S2BUF=a;
  202. Delay_ms(200);
  203. while(!(S2CON&0x02));   //while(!S2TI) 等待S2TI變為1
  204. S2CON&=0xFD;     //S2TI清0
  205. IE2=0x01;
  206. }
  207. void Send_String_one(uchar *tab) //*******************發送一個字符串
  208. {
  209. IE2=0x00;
  210. while(*tab!='\0')
  211. {
  212.   Send_Char_one(*tab++);
  213. }
  214. IE2=0x01;
  215. }
  216. void CLR_Buf_one(void)      //清除緩存區內容
  217. {
  218. unsigned char k;
  219. for(k=0;k<Buf_Max;k++)   
  220. {
  221.     Rec_Buf_one[k]=0;
  222. }
  223. i=0;             //接收字符串的起始存儲位置
  224. }
  225. void Serial_Int_one(void) interrupt 8 //********************串口2中斷函數
  226. {
  227. IE2=0x00;      //關串口中斷,防止中斷的嵌套
  228. if(S2CON&0x02)     //如果是串口2發送中斷(S2TI)不進行處理
  229. {
  230.   S2CON&=0xFD;    //S2TI清0
  231. }
  232. if(S2CON&0x01)   
  233. {
  234.   S2CON&=0xFE;    //S2RI清0
  235.   Rec_Buf_one[i]=S2BUF;
  236.   i++;
  237.   if(i>Buf_Max_one)
  238.   {
  239.    i=0;
  240.   }
  241. }
  242. IE2=0x01;      //開啟串口中斷
  243. }
復制代碼









歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 欧美激情久久久 | 免费亚洲网站 | 日韩一区二区三区四区五区六区 | 中文字幕在线视频一区二区三区 | 成人日韩av| 久久国产精品99久久久久久丝袜 | 久久亚洲一区二区三区四区 | 特级黄一级播放 | 日韩精品久久久久 | 国产大片一区 | 日韩毛片在线观看 | 久久av一区二区三区 | av片在线观看网站 | 一级欧美一级日韩片 | 香蕉一区二区 | 欧美精品久久久久久久久老牛影院 | 国产亚洲精品综合一区 | 日韩一区二区在线视频 | 国产高清视频在线观看播放 | 日日操夜夜操视频 | 亚洲视频一区二区三区 | 亚洲免费视频一区二区 | 亚洲欧美日韩精品久久亚洲区 | 久久不卡 | 亚洲成人av在线 | 色橹橹欧美在线观看视频高清 | 欧美一区二区三区在线看 | 日韩精品一区二区三区中文在线 | 999视频在线播放 | 国产一区二区免费 | 欧美日韩视频在线播放 | 国产精品久久久久久久岛一牛影视 | 日本成人综合 | 日韩视频精品在线 | 四虎影院在线观看免费视频 | 精品久久久久久久久久久久久久 | 日韩中文一区二区三区 | 亚洲成人在线视频播放 | 一区在线免费视频 | 亚洲精品视频在线 | 久久久久久色 |