TC35I.txt
上传用户:wlzajs
上传日期:2022-05-26
资源大小:1k
文件大小:3k
源码类别:

手机短信编程

开发平台:

C/C++

  1. #include<STC12C5A60S2.h> 
  2. #include<string.h> 
  3. #define uchar unsigned char 
  4. #define uint unsigned int 
  5. uchar code ATE0[]="ATE0";      //禁止回显 
  6. uchar code CMGF[]="AT+CMGF=1"; //设置短信为TEXT模式 
  7. uchar code CREG[]="AT+CREG?";  //查询网络注册情况 
  8. uchar code CMGS[]="AT+CMGS=";  //发送短信 
  9. uchar code PHONE[11]="13515380480"; 
  10. uchar TC35[60]="n";           //串口中断接收数组并赋予初值 
  11. uchar SM[]=""; 
  12. uchar NUM; 
  13. sbit LED=P0^7; 
  14. bit flag=0;   //串行口中断标志位 
  15. //延时程序 
  16. void delay(uint t) 
  17.   while(t--); 
  18. //清除中断接收数组 
  19. void TC35_clr() 
  20.   uchar i; 
  21.   for(i=0;i<60;i++) 
  22.   TC35[i]=0; 
  23. //初始化串口 
  24. void init_UART() 
  25.   SCON=0X50; 
  26.  // S2CON=0X50; 
  27.   BRT=0Xfd; 
  28.   AUXR=0X11; 
  29.   ES=1; 
  30.  // IE2=0X01; 
  31.   IP=0X02;      //串行口,定时器0为高优先级 
  32.   IPH=0X12; 
  33.   IT0=1;      //中断0下降沿触发 
  34.   IT1=1;      //中断1下降沿触发 
  35.   IE=0X97;    //开总中断,串行口,定时器0,外部中断0,1   不开定时器1中断 
  36. //串口中断 
  37. void ser()interrupt 4 
  38.   uchar i; 
  39.   ES=0; 
  40.   for(i=0;i<NUM;i++) 
  41.    {      
  42.      while(!RI);RI=0; 
  43.      TC35[i]=SBUF; 
  44.    } 
  45.   flag=1; 
  46.   ES=0; 
  47. //禁止回显 
  48. void FS_ATE0()    
  49.   uchar i=0; 
  50.   ES=0; 
  51.   while(ATE0[i]!='') 
  52.   { 
  53.     SBUF=ATE0[i]; 
  54.     while(!TI); 
  55.     TI=0; 
  56.     i++; 
  57.   } 
  58.   SBUF=0x0d; 
  59.   while(!TI); 
  60.   TI=0; 
  61.   NUM=11; 
  62.   ES=1; 
  63. //改为TEXT模式 
  64. void FS_CMGF()    
  65.   uchar i=0; 
  66.   ES=0; 
  67.   while(CMGF[i]!='') 
  68.   { 
  69.     SBUF=CMGF[i]; 
  70.     while(!TI); 
  71.     TI=0; 
  72.     i++; 
  73.   } 
  74.   SBUF=0x0d; 
  75.   while(!TI); 
  76.   TI=0; 
  77.   NUM=6; 
  78.   ES=1; 
  79. //查询网络注册情况 
  80. void FS_CREG()    
  81.   uchar i=0; 
  82.   ES=0; 
  83.   while(CREG[i]!='') 
  84.   { 
  85.     SBUF=CREG[i]; 
  86.     while(!TI); 
  87.     TI=0; 
  88.     i++; 
  89.   } 
  90.   SBUF=0x0d; 
  91.   while(!TI); 
  92.   TI=0; 
  93.   NUM=20; 
  94.   ES=1; 
  95.    
  96. //void GET_PHONE() 
  97. CLEAR_TC35() 
  98.  uchar a; 
  99.  for(a=0;a<50;a--) 
  100.   TC35[a]=0; 
  101. //发送短信  
  102. void FS_CMGS()    
  103.   uchar i=0; 
  104.   uchar h=0; 
  105.   ES=0; 
  106.   while(CMGS[i]!='') 
  107.    { 
  108.     SBUF=CREG[i]; 
  109.     while(!TI); 
  110.     TI=0; 
  111.     i++; 
  112.    } 
  113.   while(PHONE[h]!='') 
  114.    { 
  115.     SBUF=CREG[h]; 
  116.     while(!TI); 
  117.     TI=0; 
  118.     h++; 
  119.    } 
  120.   SBUF=0x0d; 
  121.   while(!TI); 
  122.   TI=0;   
  123.   NUM=4; 
  124.   ES=1; 
  125. /* 
  126. void SM_SJ() 
  127.   
  128. FS_SJ() 
  129.   
  130. TIME_PCF8563() 
  131. void INT0() 
  132.  EX0=0; 
  133.  }  
  134. */ 
  135. void int1()interrupt 2 
  136.   EX1=0; 
  137.   delay(1000);delay(1000);delay(1000); 
  138.   do   
  139.     { 
  140.      FS_ATE0();     //禁止回显 
  141.      while(!flag); 
  142.     } 
  143.   while(!(TC35[7]==0X4F)&&(TC35[8]==0X4B));   //返回值是否有OK 
  144.   CLEAR_TC35(); 
  145.   do 
  146.    { 
  147.      FS_CMGF();     //改为TEXT模式 
  148.      while(!flag); 
  149.    } 
  150.   while(!(TC35[2]==0X4F)&&(TC35[3]==0X4B));   //返回值是否有OK 
  151.   CLEAR_TC35();   
  152.   do 
  153.    { 
  154.      FS_CREG();      //查询网络注册情况 
  155.      while(!flag); 
  156.    } 
  157.   while(!(TC35[9]==0X30)&&(TC35[11]==0X31));   //返回值是否有1,0即0,禁止网络注册主动提供结果码(缺省值)                                                                                                                                           //1, 已注册本地网络运营商      
  158.   CLEAR_TC35(); 
  159.   FS_CMGS();        //发送短信 
  160.   LED=0;       //LED亮  
  161.   EX0=1; 
  162.          
  163. void main() 
  164. {  
  165.   delay(1000);delay(1000);delay(1000);delay(1000); 
  166.   init_UART();  
  167.   
  168.  // while(!flag); 
  169. //  while(!(TC35[2]==0X3E));   //返回值是否有> 
  170.   //CLEAT_TC35(); 
  171.   while(1);