• 回复
  • 收藏
  • 点赞
  • 分享
  • 发新帖

用c52单片机产生spwm波

我是新手 最近在做用c52单片机生成一个固定的spwm波 用了两个定时器,思路是用两个定时器,在定时器零产生中断的时候启动定时器1,但是实际操作发现定时器1没有成功启动 ,求大神帮我看看程序哪有问题

/***********定时器0/1初始化***********/

void timer0_init(void){

TMOD=0x11; //定时器0工作于方式1

TH0=0xff;//(65536-10)/256;

TL0=0x9c;//(65536-10)%256;

TR0=1;

ET0=1;    

EA=1;

ET1=1;//打开定时器1中断允许}

/***********定时器1初值变化***********/

void Timer1Init(void){    

TR1=0; //

TH1=pwm[a]; //给定时器赋初值,定时1ms

TL1=0X00;

TR1=1;  }

/**************定时0中断处理******************/

void timer0_int(void) interrupt 1{

TR0=0;//设置定时器初值期间,关闭定时器

TH0=0xff;//(65536-10)/256;

TL0=0x9c;//(65536-10)%256;

TR0=1;

if(i==99){  

flag=flag;  

i=0;}    

Timer1Init() ;

b=0;

time++;

i++;

a++;}

/**************定时1中断处理******************/

void Timer1(void)interrupt 3{

b=1;

TR1=0;}

全部回复(2)
正序查看
倒序查看
MRLE
LV.1
2
2017-07-11 17:29

问题解决了,但是感觉c52定时器确实有局限性,晶振频率略小,最后造成spwm的频率比较小

0
回复
ruohan
LV.9
3
2017-08-01 11:58
@MRLE
问题解决了,但是感觉c52定时器确实有局限性,晶振频率略小,最后造成spwm的频率比较小

这个能用吗。,,

0
回复