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

📄 模拟中断shou.lst

📁 I/O口模拟串口(利用中断
💻 LST
字号:
C51 COMPILER V8.05a   模拟中断SHOU                                                         03/30/2009 17:11:43 PAGE 1   


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

line level    source

   1          #include<STC12C5410AD.H>
   2          sbit BT_REC=P3^4;
   3          #define F_TM F0
   4          unsigned char msm[23];
   5          unsigned char rspoint,x,z;
   6          sbit ACC0=   ACC^0;
   7          sbit ACC1=   ACC^1;
   8          sbit ACC2=   ACC^2;
   9          sbit ACC3=   ACC^3;
  10          sbit ACC4=   ACC^4;
  11          sbit ACC5=   ACC^5;
  12          sbit ACC6=   ACC^6;
  13          sbit ACC7=   ACC^7;
  14          void sendasc(unsigned char asc);//发送一个ASCII码
  15          void sendtogsm(unsigned char *p,int L);//发送字符串
  16          
  17          //--------------发送字符串---------------------
  18          void sendtogsm(unsigned char *p,int L)//1、字符串数组   2、字符串长度
  19          {
  20   1              while (L--)
  21   1                      {
  22   2                              sendasc(*p++);
  23   2                      }
  24   1      }
  25          
  26          /**********************延时*****************/
  27          void delay(int x)
  28          {
  29   1              int i;
  30   1              for (i=0;i<=x;i++);
  31   1      } 
  32          
  33          /**********检测起始位**********************/
  34          bit StartBitOn()
  35          {
  36   1      return  (BT_REC==0);
  37   1      
  38   1      }
  39          /***************外部中断*******************/
  40          void time() interrupt 0
  41          {
  42   1              F_TM=1;
  43   1      
  44   1      }
  45          
  46          /*************外部中断初始化**************/
  47          void init()
  48          {
  49   1         IT0=1;
  50   1         EA=1;
  51   1         EX0=1;
  52   1         ACC=0XFF;
  53   1      }
  54          
  55          /***********串口通讯设置**************/
C51 COMPILER V8.05a   模拟中断SHOU                                                         03/30/2009 17:11:43 PAGE 2   

  56          void cksz()
  57          {       
  58   1      
  59   1              TMOD=0x20; //波特率设置
  60   1              TH1=0xfd;
  61   1              TL1=0xfd;
  62   1              TR1=1;
  63   1      
  64   1              REN=1;//工作方式设置
  65   1              SM0=0;
  66   1              SM1=1;
  67   1              EA=1; //开启中断
  68   1              ES=1;
  69   1      }
  70          
  71          //-----------发送一个ASCII码----------------
  72          void sendasc(unsigned char asc)
  73          {
  74   1              bit es;
  75   1              es=ES;
  76   1              ES=0;
  77   1              TI=0;
  78   1              SBUF=asc;
  79   1              while(!TI);
  80   1              TI=0;
  81   1              ES=es;
  82   1      }
  83          
  84          
  85          
  86          
  87          /********************接收函数***************/
  88          unsigned char PGetChar()
  89          { 
  90   1                      F_TM=0;
  91   1                      while(!F_TM); //等过起始位
  92   1                      ACC0=BT_REC;
  93   1                      
  94   1                      F_TM=0;
  95   1                      while(!F_TM);
  96   1                      ACC1=BT_REC;
  97   1                      
  98   1                      F_TM=0;
  99   1                      while(!F_TM);
 100   1                      ACC2=BT_REC;
 101   1                      
 102   1                      F_TM=0;
 103   1                      while(!F_TM);
 104   1                      ACC3=BT_REC;
 105   1                      
 106   1                      F_TM=0;
 107   1                      while(!F_TM);
 108   1                      ACC4=BT_REC;
 109   1                      
 110   1                      F_TM=0;
 111   1                      while(!F_TM);
 112   1                      ACC5=BT_REC;
 113   1                      
 114   1                      F_TM=0;
 115   1                      while(!F_TM);
 116   1                      ACC6=BT_REC;
 117   1                      
C51 COMPILER V8.05a   模拟中断SHOU                                                         03/30/2009 17:11:43 PAGE 3   

 118   1                      F_TM=0;
 119   1                      while(!F_TM);
 120   1                      ACC7=BT_REC;
 121   1                      
 122   1                      F_TM=0;
 123   1                      while(!F_TM)
 124   1                      {
 125   2                              if(BT_REC)
 126   2                              {
 127   3                                      break;
 128   3                              }
 129   2              }
 130   1              return ACC;
 131   1      }
 132          
 133          
 134          
 135          /**************主函数****************/
 136          void main()
 137          
 138          {  
 139   1         //PCON=0x80;//设置波特率为19200  若想变成9600删除此行即可 
 140   1         cksz();
 141   1         rspoint=0;
 142   1         init();
 143   1         z=0;
 144   1         while(1)
 145   1         {
 146   2      
 147   2          
 148   2      
 149   2          if(StartBitOn())
 150   2      
 151   2              {
 152   3                 
 153   3              x=PGetChar();
 154   3                      if(x=='~')
 155   3                      {
 156   4                              z=1;
 157   4                      }
 158   3                      if(x=='!')
 159   3                      {
 160   4                              rspoint=0;
 161   4                              z=0;
 162   4                              sendtogsm(msm,23);
 163   4                      }
 164   3                      if(z==1)
 165   3                      {
 166   4                              msm[rspoint]=x;
 167   4                              
 168   4                              if(rspoint==3)
 169   4                                      {
 170   5                                              if(x=='A') P0=0x00;
 171   5                                              if(x=='B') P0=0XFF;
 172   5                                      } 
 173   4                              rspoint++;
 174   4                      } 
 175   3                              
 176   3                              
 177   3              
 178   3          }
 179   2              
C51 COMPILER V8.05a   模拟中断SHOU                                                         03/30/2009 17:11:43 PAGE 4   

 180   2              }
 181   1                      
 182   1      }
 183          void time4() interrupt 4
 184          {
 185   1                  RI=0;       
 186   1                      
 187   1      }
 188                           
 189          
 190          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    334    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =     26       5
   DATA SIZE        =   ----    ----
   IDATA SIZE       =   ----    ----
   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 + -