Chinaunix首页 | 论坛 | 博客
  • 博客访问: 630922
  • 博文数量: 1008
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 5175
  • 用 户 组: 普通用户
  • 注册时间: 2012-07-31 09:44
文章分类
文章存档

2012年(1008)

我的朋友

分类:

2012-08-01 11:27:06

  1. #include<reg51.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int

  4. sbit INPUT1 = P1^0;         //控制口

  5. sbit INPUT2 = P1^1;
  6. sbit INPUT3 = P1^2;
  7. sbit INPUT4 = P1^3;

  8. sbit ENA = P1^4;             //产生PWM波

  9. sbit ENB = P1^5;

  10. uint MA=0,MB=0;
  11. uint SpeedA=20;                //50%占空比

  12. uint SpeedB=20;

  13. void delay(uint z) {
  14.     uint x,y;
  15.     for(x=z;x>0;x--)
  16.         for(y=125;y>0;y--);
  17. }
  18.     
  19. void main(void)
  20. {
  21.      L298N_init();
  22.     while(1){}
  23. }    



  24. void L298N_init(void)
  25. {
  26.     delay(1000)    ;
  27.     delay(1000)    ;
  28.     
  29.     INPUT1=1;    INPUT2=0;    
  30.     INPUT3=1;    INPUT4=0;    //电机停此

  31.     
  32.     TH0 = 0xF4;
  33.     TL0 = 0x48;
  34.     TH1 = 0xF4;
  35.     TL1 = 0x48;
  36.     TMOD = 0x11;
  37.     TR0 = 1;
  38.     TR1 = 1;
  39.     ET0 = 1;
  40.     ET1 = 1;
  41.     EA = 1;    
  42. }    

  43. void time0_int() interrupt 1 using 1
  44. {
  45.     TR0=0;                
  46.     TH0=0xF4;
  47.     TL0=0x48;
  48.     MA++;                
  49.     
  50.     if(MA< SpeedA){            //占空比

  51.      ENA = 1;
  52.     }
  53.     else ENA = 0;
  54.     
  55.     if(MA == 40){
  56.      MA = 0;
  57.     }
  58.     TR0 = 1;
  59. }

  60. void time1_int() interrupt 3 using 1
  61. {
  62.     TR1=0;
  63.     TH1=0xF4;
  64.     TL1=0x48;
  65.     MB=MB + 1;
  66.     if(MB < SpeedB){
  67.      ENB=1;
  68.     }
  69.     else ENB = 0;
  70.     if(MB == 40){
  71.      MB = 0;
  72.     }
  73.     TR1 = 1;
  74. }
阅读(222) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~