⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 模拟中断fa.lst

📁 四机通信程序(电脑-单片机-单片机-gsm模块)
💻 LST
字号:
C51 COMPILER V8.05a   模拟中断FA                                                           04/10/2009 21:13:53 PAGE 1   


C51 COMPILER V8.05a, COMPILATION OF MODULE 模拟中断FA
OBJECT MODULE PLACED IN 模拟中断fa.OBJ
COMPILER INVOKED BY: D:\Program Files\keil c51 v8.05\C51\BIN\C51.EXE 模拟中断fa.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include<STC_NEW_8051.H>
   2          
   3          //-------------------短信内容数组--------------------
   4          unsigned char idata msm[180]="1111111111222222222233333333334444444444555555555566666666667777777777888888
             -88889999999999000000000011111111112222222222333333333344444444445555555555666666666677777777778888888888";
   5          
   6          //-------------------------------变量定义--------------------------------------------
   7          //b:检测起始位                             z:I/O发送开关                        a:接收串口信息
   8          //rspoint:I/O口接收数组下标    x:I/O口接收起始位判断   rsopen:I/O口接收开关
   9          unsigned char b,z,a,rspoint,x,rsopen;
  10          
  11          //--------------I/O口:接收设置--------------
  12          sbit F1  = PSW^1;
  13          sbit BT_REC=P1^5;//I/O口接收数据线
  14          #define rsflag F1
  15          
  16          
  17          //-----------------I/O口发送变量初始化------------------
  18          sbit clk=P1^2; //I/O口发送时钟线
  19          sbit BT_SND=P1^0;//I/O口发送线
  20          #define F_TM F0 
  21          sbit ACC0=   ACC^0;
  22          sbit ACC1=   ACC^1;
  23          sbit ACC2=   ACC^2;
  24          sbit ACC3=   ACC^3;
  25          sbit ACC4=   ACC^4;
  26          sbit ACC5=   ACC^5;
  27          sbit ACC6=   ACC^6;
  28          sbit ACC7=   ACC^7;
  29          
  30          //---------------------函数声明---------------------------
  31          void IntTimer0();//发送clk中断:定时器0
  32          void init();//发送clk中断:定时器0初始化
  33          void cksz();//串口通讯设置初始化
  34          void sed(unsigned char);//I/O口发送
  35          void time4();//串口中断
  36          void sendasc(unsigned char asc);//发送一个ASCII码
  37          void sendtogsm(unsigned char *p,int L);//发送字符串
  38          void delay(int);//延时程序
  39          bit StartBitOn();//检测起始位
  40          void time();//I/O口clk接收:外部中断0
  41          void initwai0();//I/O口接收:外部中断0初始化
  42          unsigned char PGetChar();//I/O口:接收函数
  43          
  44          
  45          //---------------------主函数---------------------/
  46          void main()
  47          {
  48   1              cksz();
  49   1              init();
  50   1              initwai0();
  51   1              b=0;
  52   1              z=0;
  53   1              rsopen=0;
  54   1          rspoint=0;
C51 COMPILER V8.05a   模拟中断FA                                                           04/10/2009 21:13:53 PAGE 2   

  55   1              while(1)
  56   1              { 
  57   2                      if(StartBitOn())
  58   2      
  59   2              {
  60   3                 
  61   3              x=PGetChar();
  62   3                      if(x=='~')
  63   3                      {
  64   4                              rsopen=1;
  65   4                      }
  66   3                      if(x=='!')
  67   3                      {
  68   4                              rspoint=0;
  69   4                              rsopen=0;
  70   4                              sendtogsm(msm,180);
  71   4                      }
  72   3                      if(rsopen==1)
  73   3                      {
  74   4                              msm[rspoint]=x;
  75   4                              
  76   4                              if(rspoint==3)
  77   4                                      {
  78   5                                              if(x=='A') P0=0x00;
  79   5                                              if(x=='B') P0=0XFF;
  80   5                                      } 
  81   4                              rspoint++;
  82   4                      } 
  83   3          }
  84   2                      
  85   2                      if(b==1)
  86   2                      {  
  87   3                         b=0;
  88   3                         sed(a);
  89   3                       }      
  90   2              }
  91   1      
  92   1      }
  93          
  94          //----------------发送clk中断:定时器0--------------------/
  95          void IntTimer0() interrupt 1
  96          {
  97   1              
  98   1                      clk=0;
  99   1                      F_TM=1;
 100   1              
 101   1      }
 102          
 103           
 104          //-------------发送clk中断:定时器0初始化-----------------/
 105          void init()
 106          {
 107   1              TH0=(256-12);
 108   1          TL0=TH0;
 109   1              EA=1;
 110   1              ET0=1;
 111   1      }
 112          
 113          
 114          //----------------串口通讯设置初始化-----------------/
 115          void cksz()
 116          {       
C51 COMPILER V8.05a   模拟中断FA                                                           04/10/2009 21:13:53 PAGE 3   

 117   1              AUXR=0x60; //波特率*12    4800*12=57600
 118   1              TMOD=0x22; //波特率设置
 119   1              TH1=0xfa;  //4800
 120   1              TL1=0xfa;
 121   1              TR1=1;
 122   1              REN=1;//工作方式设置
 123   1              SM0=0;
 124   1              SM1=1;
 125   1              EA=1; //开启中断
 126   1              ES=1;
 127   1      }                                                          
 128          
 129          //-----------串口:发送一个ASCII码----------------
 130          void sendasc(unsigned char asc)
 131          {
 132   1              bit es;
 133   1              es=ES;
 134   1              ES=0;
 135   1              TI=0;
 136   1              SBUF=asc;
 137   1              while(!TI);
 138   1              TI=0;
 139   1              ES=es;
 140   1      }
 141          
 142          //------------------串口:发送字符串---------------------
 143          void sendtogsm(unsigned char *p,int L)//1、字符串数组   2、字符串长度
 144          {
 145   1              while (L--)
 146   1                      {
 147   2                              sendasc(*p++);
 148   2                      }
 149   1      }
 150          
 151          //---------------串口中断---------------------
 152          void time4() interrupt 4
 153          {
 154   1                  RI=0;
 155   1                      a=SBUF;
 156   1                      if(a=='~')
 157   1                              {
 158   2                                      z=1;
 159   2                              }
 160   1                      if(z==1)
 161   1                              {
 162   2                                      b=1;
 163   2                              }               
 164   1      }
 165          
 166          //--------------I/O口发送---------------------/
 167          void sed(unsigned char inch)
 168          {
 169   1                      ACC=inch;
 170   1                      clk=1;
 171   1                      F_TM=0;
 172   1                      BT_SND=0; //start bit 
 173   1                      TR0=1; //启动
 174   1                      while(!F_TM);
 175   1                      
 176   1                      BT_SND=ACC0; //先送出低位
 177   1                      clk=1;
 178   1                      F_TM=0;
C51 COMPILER V8.05a   模拟中断FA                                                           04/10/2009 21:13:53 PAGE 4   

 179   1                      while(!F_TM);
 180   1                      
 181   1                      BT_SND=ACC1;
 182   1                      clk=1; 
 183   1                      F_TM=0;
 184   1                      while(!F_TM);
 185   1                      
 186   1                      BT_SND=ACC2;
 187   1                      clk=1; 
 188   1                      F_TM=0;
 189   1                      while(!F_TM);
 190   1                      
 191   1                      BT_SND=ACC3;
 192   1                      clk=1; 
 193   1                      F_TM=0;
 194   1                      while(!F_TM);
 195   1                      
 196   1                      BT_SND=ACC4;
 197   1                      clk=1; 
 198   1                      F_TM=0;
 199   1                      while(!F_TM);
 200   1                      
 201   1                      BT_SND=ACC5; 
 202   1                      clk=1;
 203   1                      F_TM=0;
 204   1                      while(!F_TM);
 205   1                      
 206   1                      BT_SND=ACC6; 
 207   1                      clk=1;
 208   1                      F_TM=0;
 209   1                      while(!F_TM);
 210   1                      
 211   1                      BT_SND=ACC7; 
 212   1                      clk=1;
 213   1                      F_TM=0;
 214   1                      while(!F_TM);
 215   1                      
 216   1                      BT_SND=1;
 217   1                      clk=1;
 218   1                      F_TM=0;
 219   1                      while(!F_TM);
 220   1              TR0=0; //停止timer
 221   1                      clk=1;
 222   1      }
 223          
 224          //--------------------------延时程序---------------------------
 225          void delay(int x)
 226          {
 227   1              int i;
 228   1              for (i=0;i<=x;i++);
 229   1      } 
 230          
 231          //----------------------检测起始位----------------------------/
 232          bit StartBitOn()
 233          {
 234   1      return  (BT_REC==0);
 235   1      
 236   1      }
 237          
 238          //--------------------I/O口接收:外部中断0初始化--------------------/
 239          void initwai0()
 240          {
C51 COMPILER V8.05a   模拟中断FA                                                           04/10/2009 21:13:53 PAGE 5   

 241   1         IT0=1;
 242   1         EA=1;
 243   1         EX0=1;
 244   1         ACC=0XFF;
 245   1      }
 246          
 247          //----------------------I/O口接收:外部中断0------------------------/
 248          void time() interrupt 0
 249          {
 250   1              rsflag=1;
 251   1      
 252   1      }
 253          
 254          
 255          
 256          
 257          //--------------------I/O口:接收函数--------------------------/
 258          unsigned char PGetChar()
 259          { 
 260   1                      rsflag=0;
 261   1                      while(!rsflag); //等过起始位
 262   1                      ACC0=BT_REC;
 263   1                      
 264   1                      rsflag=0;
 265   1                      while(!rsflag);
 266   1                      ACC1=BT_REC;
 267   1                      
 268   1                      rsflag=0;
 269   1                      while(!rsflag);
 270   1                      ACC2=BT_REC;
 271   1                      
 272   1                      rsflag=0;
 273   1                      while(!rsflag);
 274   1                      ACC3=BT_REC;
 275   1                      
 276   1                      rsflag=0;
 277   1                      while(!rsflag);
 278   1                      ACC4=BT_REC;
 279   1                      
 280   1                      rsflag=0;
 281   1                      while(!rsflag);
 282   1                      ACC5=BT_REC;
 283   1                      
 284   1                      rsflag=0;
 285   1                      while(!rsflag);
 286   1                      ACC6=BT_REC;
 287   1                      
 288   1                      rsflag=0;
 289   1                      while(!rsflag);
 290   1                      ACC7=BT_REC;
 291   1                      
 292   1                      rsflag=0;
 293   1                      while(!rsflag)
 294   1                      {
 295   2                              if(BT_REC)
 296   2                              {
 297   3                                      break;
 298   3                              }
 299   2              }
 300   1              return ACC;
 301   1      }

C51 COMPILER V8.05a   模拟中断FA                                                           04/10/2009 21:13:53 PAGE 6   


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    479    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      6       3
   IDATA SIZE       =    180    ----
   BIT SIZE         =   ----       1
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -