定时器0电机控制PWM输出

/*立式不锈钢波纹管机控制板2021 2 26 pcb PAST******/
              #include     <REG52.H>
              #include     <intrins.H>
              #define      uint unsigned int  
              #define      uchar unsigned char
              #define      FOSC 11059200L
              #define      T1MS (65536-FOSC/1000)      //1T模式
              uchar           val;
              uchar           Speed;
              sbit         OUT1=P1^6;
              sbit         OUT2=P1^7;
              sbit         P_WM1=P3^5;
              sbit         P_WM2=P3^7;
              bit          MOTORX_RUN;                //X轴启动标志
              bit          MotorX_LowFlag;            //电机X轴低电平计数标志
              uint         MotorX_LowCounter;         //电机X轴低电平计数器
              uint         MotorX_HighCounter;        //电机X轴高电平计数器
/*---------------延时子程序----------------*/
              void delay1 (uint ms)
              {
              uint i,j;
              for(i=0;i<ms;i++)
              for(j=0;j<2000;j++)
              ;
              }
/****************************************/
              void timer0() interrupt 1
              {
               val++;
               if(val>2)
               {
               val=0;
               OUT1=~OUT1;                       //将测试口取反
               if(MOTORX_RUN==1)                 //X轴电机开启标志
               {
                P_WM1=0;                         //开X轴输出
                if(MotorX_LowFlag==1)            //低电平计数标志等于1
                {
                 MotorX_LowCounter++;
                 if(MotorX_LowCounter>=Speed)    //
                 {
                 MotorX_LowFlag=0;               //低电平计数标志等于0高电平开始计数
                 MotorX_HighCounter=102-Speed;   //赋高电平占空比值
                 }
                }
               else
               {
                P_WM1=1;                         //关X轴输出
                MotorX_HighCounter++;
                if(MotorX_HighCounter>=Speed)    //
                 {
                 MotorX_LowFlag=1;               //低电平计数标志等于1低电平开始计数
                 MotorX_LowCounter=Speed;        //低电平计数器
                 }
                }
               }
               }
              }
/*------------------主循环程序----------------*/      
               void   main( )                    /*主程序开始*/
               {  
               P1M0=0XC3; //
               P1M1=0X00;
               P3M0=0XF0; //
               P3M1=0X00;
               Speed=60;
               MOTORX_RUN=1;
               TMOD = 0x00;                      //设置定时器为模式0(16位自动重装载)
               TL0 = T1MS;                       //初始化计时值
               TH0 = T1MS >> 8;
               TR0 = 1;                          //定时器0开始计时
               ET0 = 1;                          //使能定时器0中断
               EA=1;
               while(1)
                {
                OUT2=0;
                delay1 (100);
                OUT2=1;
                delay1 (100);
                }
               }     //2024 6 13 L81 CODE196 PAST

  • 6
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值