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

📄 can

📁 can通信源码
💻
字号:
C51 COMPILER V8.02   电籣                                                                  03/24/2011 22:30:54 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE 电籣
OBJECT MODULE PLACED IN 电机.OBJ
COMPILER INVOKED BY: D:\单片机编程软件\keil软件\C51\BIN\C51.EXE 电机.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /*?#include<reg51.h>
   2           #define uchar unsigned char
   3           #define uint unsigned  int
   4                  uchar k,a,PWMON=5,CYCLE;
   5                                                  
   6          
   7            sbit in1=P1^1;
   8            sbit in2=P1^0;
   9            sbit W=P1^2;//L298使能端
  10          void delay(unsigned int cnt)
  11          {
  12           while(--cnt);
  13          }
  14          
  15          void init()
  16          {  TMOD =0x01;
  17          TH0=(65536-100)/256; 
  18          TL0=(65536-100)%256;
  19          IE= 0x82;  
  20          TR0=1;
  21          IT0=1;
  22          EX0=1;
  23          CYCLE = 10;
  24           }
  25          
  26            void jiasu()//加速
  27           {       if(PWMON!=CYCLE)
  28                  { 
  29                  PWMON++;
  30                  delay(1);
  31                  }
  32           
  33           }
  34          
  35          
  36           
  37          
  38          
  39          
  40             void jiansu()//减速
  41           {      
  42           if(PWMON!=0)
  43            {PWMON--;
  44            delay(1);
  45            }
  46           }
  47          
  48          
  49          void zhengzhuan()
  50          {
  51          in1=0;
  52           in2=1;
  53          }
  54          
  55          
C51 COMPILER V8.02   电籣                                                                  03/24/2011 22:30:54 PAGE 2   

  56          void fanzhuan()
  57          {
  58          in1=1;
  59           in2=0;
  60          }
  61          
  62          void tizhi()
  63          {in1=1;
  64           in2=1;
  65           
  66          }
  67          
  68          
  69                   void key()
  70            {     
  71            P2=0xff;
  72            k=P2;
  73            if(k!=0xff)
  74            {     delay(1000);
  75                  if((k&0xff)!=0xff)
  76                  { a=k&0xff;
  77                   switch(a)
  78                   {case 0xfe:
  79                   zhengzhuan();break;//正转
  80                   case 0xfd:
  81                   fanzhuan();break;//反转
  82                   case 0xfb:
  83                   jiasu();break;//停止
  84                   case 0xf7:
  85                   jiasu();break;//加速
  86                   case 0xef:
  87                   tizhi();break;//减速
  88                   }
  89                   }
  90             } 
  91             }
  92          
  93          
  94          
  95          void main()
  96          {init();
  97          while(1)
  98            key() ;
  99          
 100          }
 101          
 102          
 103          
 104          
 105          
 106          
 107          void tim(void) interrupt 1 using 1
 108          {
 109           unsigned char count; 
 110          TH0=(65536-100)/256; 
 111          TL0=(65536-100)%256;
 112          
 113          if(count==PWMON)
 114              {
 115              W = 0; 
 116              }
 117            count++;
C51 COMPILER V8.02   电籣                                                                  03/24/2011 22:30:54 PAGE 3   

 118          if(count== CYCLE)
 119              {
 120              count=0;
 121                  if(PWMON!=0) 
 122                     W=1;
 123          
 124              }
 125          
 126          } */
 127          
 128            #include<reg52.h>
 129          
 130           #define V_TH0  0XFF                  
 131          #define V_TL0  0XF6                  
 132          #define V_TMOD 0X01
 133           sbit in1=P1^1;
 134            sbit in2=P1^0;
 135             sbit a=P1^2;
 136                   sbit b=P1^4;
 137          
 138                    sbit c=P1^5;
 139                         
 140          
 141          void init_sys(void);            /*系统初始化函数*/ 
 142          void Delay5Ms(void); 
 143          
 144          unsigned char ZKB1,ZKB2; 
 145          
 146          void main (void) 
 147          { 
 148   1      init_sys();
 149   1      
 150   1       in1=0;
 151   1       in2=1;
 152   1        ZKB1=40;            /*占空比初始值设定*/ 
 153   1        ZKB2=60;            /*占空比初始值设定*/ 
 154   1        while(1) 
 155   1        { 
 156   2             if (!b) //如果按了+键,增加占空比 
 157   2            { 
 158   3             Delay5Ms(); 
 159   3             if (!b) 
 160   3               { 
 161   4               ZKB1++; 
 162   4               ZKB2=100-ZKB1; 
 163   4               } 
 164   3            } 
 165   2      
 166   2             if (!c) //如果按了-键,减少占空比 
 167   2            { 
 168   3             Delay5Ms(); 
 169   3             if (!c) 
 170   3               { 
 171   4               ZKB1--; 
 172   4               ZKB2=100-ZKB1; 
 173   4               } 
 174   3            } 
 175   2      /*对占空比值限定范围*/ 
 176   2      if (ZKB1>99) ZKB1=1; 
 177   2      if (ZKB1<1) ZKB1=99; 
 178   2       
 179   2        }
C51 COMPILER V8.02   电籣                                                                  03/24/2011 22:30:54 PAGE 4   

 180   1        
 181   1      
 182   1         
 183   1      } 
 184          
 185          
 186          /****************************************************** 
 187          *函数功能:对系统进行初始化,包括定时器初始化和变量初始化*/ 
 188          void init_sys(void)            /*系统初始化函数*/ 
 189          { 
 190   1        /*定时器初始化*/ 
 191   1        TMOD=V_TMOD; 
 192   1        TH0=V_TH0; 
 193   1        TL0=V_TL0; 
 194   1        TR0=1; 
 195   1        ET0=1; 
 196   1        EA=1; 
 197   1      } 
 198          
 199          
 200          //延时 
 201          void Delay5Ms(void) 
 202          { 
 203   1      unsigned int TempCyc = 1000; 
 204   1      while(TempCyc--); 
 205   1      } 
 206          
 207          /*中断函数*/ 
 208          void timer0(void) interrupt 1 
 209          { 
 210   1      static unsigned char click=0;                  /*中断次数计数器变量*/ 
 211   1      TH0=V_TH0;                                    /*恢复定时器初始值*/ 
 212   1      TL0=V_TL0; 
 213   1      ++click; 
 214   1      if (click>=100) click=0; 
 215   1      
 216   1      if (click<=ZKB1)      /*当小于占空比值时输出低电平,高于时是高电平,从而实现占空比的调整*/ 
 217   1      a=0; 
 218   1      else 
 219   1      a=1; 
 220   1      
 221   1      if (click<=ZKB2)                        
 222   1        a=0; 
 223   1      else 
 224   1      a=1; 
 225   1      
 226   1      }
 227          
 228          
 229           


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    155    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      3    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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