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

📄 hongwai.lst

📁 这是通过单片机PWM来控制直流电机 同时可以通过红外来控制
💻 LST
字号:
C51 COMPILER V7.06   HONGWAI                                                               12/02/2008 16:20:57 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE HONGWAI
OBJECT MODULE PLACED IN hongwai.OBJ
COMPILER INVOKED BY: D:\Keil3\C51\BIN\C51.EXE hongwai.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

*** WARNING C500 IN LINE 1 OF HONGWAI.C: MISSING DEVICE (SECURITY KEY NOT FOUND)
   1          /******************************************************************
   2          /*                                                                *
   3          /* OK200E单片机开发系统演示程序                                                               *
   4          /*                                                                *
   5          /* 版本: V2.0 (2007/11/20)                                       *
   6          /* 作者: 高山流水 (Email: aoke999@sohu.com)                      *
   7          /* 网站: www.aokemcu.cn(奥科电子)                                *
   8          /*                                                                *
   9          /*                                                                *
  10          /******************************************************************/
  11          
  12          #include <reg52.h>       //51芯片管脚定义头文件
  13          #include <intrins.h>     //内部包含延时函数 _nop_();
  14          
  15          #define uchar unsigned char
  16          #define uint  unsigned int
  17          
  18          //#define       DELAYNUM        40      //该数值可以调节显示的速度
  19          sbit  SDATA_595=P1^5;   //串行数据输入
  20          sbit  SCLK_595 =P1^6;   //移位时钟脉冲
  21          sbit  RCK_595  =P1^7;   //输出锁存器控制脉冲
  22          sbit  CS_LED8   =P1^1;   //片选
  23          sbit  CS_1302   =P1^4;
  24          sbit  IRIN = P3^2;         //红外接收器数据线
  25          sbit  BEEP = P3^7;         //蜂鸣器驱动线
  26          sbit  DCMOTO = P3^4;         //直流电机驱动线
  27          
  28          
  29          //uchar code table[]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6,0xee,0x3e,0x9c,0x7a,0x9e,0x8e};
  30          uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
  31          uchar IRCOM[]={0x00,0x00,0x00,0x00,0x10,0x10};
  32          uchar  dis[8];
  33          
  34          void delay(unsigned char x);
  35          void  display();
  36          void beep();
  37          
  38          
  39          /*******************************************************
  40          *                                                      *
  41          * 主函数                                               *
  42          *                                                      *
  43          *******************************************************/
  44          main(void)
  45          {
  46   1      //      uchar k;
  47   1              TMOD|=0x01;
  48   1              TH0=0Xfc;
  49   1              TL0=0X66;
  50   1              TR0=1;
  51   1              EA=1;
  52   1              ET0=1;
  53   1              EX0=1;
  54   1              IP=0X01;
C51 COMPILER V7.06   HONGWAI                                                               12/02/2008 16:20:57 PAGE 2   

  55   1              CS_1302=0;
  56   1              DCMOTO=0;
  57   1              while(1)
  58   1              {
  59   2                      dis[7]=table[IRCOM[4]];
  60   2                      dis[6]=table[IRCOM[5]];
  61   2      //              display();
  62   2                      if(IRCOM[2]==0x01)              DCMOTO=~DCMOTO;                 //启动电机
  63   2                      if(IRCOM[2]==0x02)              DCMOTO=0;                               //停止电机
  64   2              }
  65   1      
  66   1      } //end of main()
  67          
  68          void timer0(void)       interrupt 1
  69          {
  70   1              TH0=0Xfc;
  71   1              TL0=0X66;
  72   1              display();
  73   1      }
  74          
  75          /*******************************************************
  76          *                                                      *
  77          * 显示函数                                    *
  78          *                                                      *
  79          *******************************************************/
  80          
  81          void display()
  82          {
  83   1              uchar num,c,i;
  84   1              for(i=0;i<8;i++)
  85   1              {
  86   2                      num=dis[i];
  87   2                      CS_LED8=0;
  88   2                      for(c=0;c<8;c++)
  89   2                      {
  90   3                              SCLK_595=0;
  91   3                              num=num<<1;
  92   3                              SDATA_595=CY;
  93   3                              SCLK_595=1;
  94   3                              SCLK_595=0;
  95   3                      }
  96   2                      num=~(1<<i);
  97   2                      for(c=0;c<8;c++)
  98   2                      {
  99   3                              SCLK_595=0;
 100   3                              num=num>>1;
 101   3                              SDATA_595=CY;
 102   3                              SCLK_595=1;
 103   3                              SCLK_595=0;
 104   3                      }
 105   2                      RCK_595=0;
 106   2                      _nop_();
 107   2                      _nop_();
 108   2                      RCK_595=1; 
 109   2                      _nop_();
 110   2                      _nop_();
 111   2                      RCK_595=0;
 112   2                      delay(1);
 113   2                      CS_LED8=1;
 114   2              }
 115   1      }
 116          
C51 COMPILER V7.06   HONGWAI                                                               12/02/2008 16:20:57 PAGE 3   

 117          void IR_IN() interrupt 0 //using 0
 118          {
 119   1              unsigned char j,k,N=0;
 120   1              EA = 0;   
 121   1              delay(10);
 122   1              
 123   1              if (IRIN==1) 
 124   1              {
 125   2                      EA =1;
 126   2                      return;
 127   2              } 
 128   1                              //确认IR信号出现
 129   1              while (!IRIN)            //等IR变为高电平,跳过9ms的前导低电平信号。
 130   1              {
 131   2                      delay(1);
 132   2              }
 133   1              while (IRIN)            //等IR变为高电平,跳过9ms的前导低电平信号。
 134   1              {
 135   2                      delay(1);
 136   2              }
 137   1              for (j=0;j<4;j++)         //收集四组数据
 138   1              { 
 139   2                      for (k=0;k<8;k++)        //每组数据有8位
 140   2                      {
 141   3                              while (IRIN)            //等 IR 变为低电平,跳过4.5ms的前导高电平信号。
 142   3                              {
 143   4                                      delay(1);
 144   4                              }
 145   3                              while (!IRIN)          //等 IR 变为高电平
 146   3                              {
 147   4                                      delay(1);
 148   4                              }
 149   3                              while (IRIN)           //计算IR高电平时长
 150   3                              {
 151   4                                      delay(1);
 152   4                                      N++;   
 153   4                              }                        //高电平计数完毕     
 154   3                              if (N>=30)
 155   3                              { 
 156   4                                      EA=1;
 157   4                                      return;                  //0.14ms计数过长自动离开。
 158   4                              }
 159   3                              IRCOM[j]=IRCOM[j] >> 1;                  //数据最高位补“0”
 160   3                              if (N>7) 
 161   3                              {
 162   4                                      IRCOM[j] = IRCOM[j] | 0x80;
 163   4                              }                                               //数据最高位补“
 164   3                              N=0;
 165   3                      }//end for k
 166   2              }//end for j
 167   1              /*
 168   1              if (IRCOM[2]!=~IRCOM[3])   //接收时间是否正确
 169   1          { 
 170   1            EA=1;
 171   1            return; 
 172   1          }
 173   1              
 174   1              if(IRCOM[0]!=0x00)         //比较用户码
 175   1          { 
 176   1            EA=1;
 177   1            return; 
 178   1          }*/
C51 COMPILER V7.06   HONGWAI                                                               12/02/2008 16:20:57 PAGE 4   

 179   1              IRCOM[4]=IRCOM[2] & 0x0F;     //取键码的低四位
 180   1              IRCOM[5]=IRCOM[2] >> 4;       //右移4次,高四位变为低四位
 181   1      
 182   1              beep();
 183   1      
 184   1              EA = 1; 
 185   1      } 
 186          
 187          /**********************************************************/
 188          void beep()
 189          {
 190   1        unsigned char i;
 191   1        for (i=0;i<180;i++)
 192   1         {
 193   2           delay(6);
 194   2           BEEP=!BEEP;                 //BEEP取反
 195   2         } 
 196   1        BEEP=1;                      //关闭蜂鸣器
 197   1      }
 198          /**********************************************************/
 199          void delay(unsigned char x)    //x*0.14MS
 200          {
 201   1       unsigned char i;
 202   1        while(x--)
 203   1       {
 204   2        for (i = 0; i<13; i++) {}
 205   2       }
 206   1      }
 207          
 208          /**********************************************************/
 209          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    460    ----
   CONSTANT SIZE    =     16    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     14       5
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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