微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > AT89c51单片机产生脉宽可调的PWM信号

AT89c51单片机产生脉宽可调的PWM信号

时间:10-02 整理:3721RD 点击:

那位高手看下这样可以产生(改变赋值的话)脉宽可调的PWM信号么
如果不行的话,用89c51还有什么办法可以实现么?求高手指点,最好是汇编程序。谢谢了

ORG 0000H

     LJMP MAIN

     ORG 000BH

     LJMP TIME0

     ORG 001BH

     LJMP TIME1

     ORG 0030H

MAIN:   

     SETB EA

     SETB ET0

     SETB ET1

     CLR P3.7

     MOV TMOD,#11H

     MOV TH0,#00H

     MOV TL0,#66H

     MOV TH1,#000H

     MOV TL1,#0FFH

     SETB TR0

     SETB TR1

LOOP:      

     SJMP LOOP

TIME0:     

     SETB P3.7

     CLR TR0

     MOV TH0,#00H

     MOV TL0,#66H

     RETI

TIME1:   

     CLR P3.7

     MOV TH1,#000H

     MOV TL1,#0FFH  

     SETB TR1

     SETB TR0

     RETI

     END





汇编 看着就头大     ,c语言的话通常是用定时器中断来产生pwm。例如:void zdt0()interrupt 1
{
   
                 static char k=0;
             k++; if(k>=10)  k=0;
          TH0=(65536-500)/256;
      TL0=(65536-500)%256;                            //定时器每计数500就中断一次
          
          if(k<on) p01=0;                  //通过on来 改变pwm占空比
          else     p01=1;                           //在p01脚产生pwm波
                                         
}

xiexiefenxiang

你做的怎么样了,咱俩做的一样,加我Q1622146191交流一下

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top