查看: 19|回复: 11
收起左侧

定时器中断

[复制链接]

487

主题

3889

帖子

1万

积分

资深工程师

 楼主| 发表于 2017-7-15 15:50 | 显示全部楼层 |返回版面|阅读模式
目前做一个波形,脉冲宽度是 100uS 到 300uS ,步距是 20uS。请问用什么方法合适?
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里 http://open.21ic.com 移步更多21ic独家微课:http://open.21ic.com/list/3/0/0

393

主题

4093

帖子

1万

积分

资深工程师

发表于 2017-7-15 15:52 | 显示全部楼层 |返回版面
周期呢
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里 http://open.21ic.com 移步更多21ic独家微课:http://open.21ic.com/list/3/0/0

515

主题

4008

帖子

1万

积分

资深工程师

发表于 2017-7-15 15:54 | 显示全部楼层 |返回版面
如果周期不变,用定时器+PWM可以实现
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里 http://open.21ic.com 移步更多21ic独家微课:http://open.21ic.com/list/3/0/0

487

主题

3889

帖子

1万

积分

资深工程师

 楼主| 发表于 2017-7-15 15:55 | 显示全部楼层 |返回版面

周期是80HZ
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里 http://open.21ic.com 移步更多21ic独家微课:http://open.21ic.com/list/3/0/0

330

主题

3065

帖子

8641

积分

技术达人

发表于 2017-7-15 15:58 | 显示全部楼层 |返回版面

void Init_Timer0(void)
{        
    AUXR |= 0x80;   
    TMOD |= 0x01;      
    TH0=(65536-221)/256;        
    TL0=(65536-221)%256;
    EA=1;            //总中断打开                                                                                                   
    ET0=1;           //定时器中断打开
    TR0 = 1;        //定时器0开始计时
        
}

void Timer0_isr(void) interrupt 1           using 1
{                     
    TR0 = 0;
    TH0=(65536-221)/256;              
    TL0=(65536-221)%256;
    TR0 = 1;        
    Time_base++;   //用来制作波形的时间基数 20us一个基数
    //以下是dac0832模拟的波形,此处省略了
}
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里 http://open.21ic.com 移步更多21ic独家微课:http://open.21ic.com/list/3/0/0

499

主题

3691

帖子

1万

积分

资深工程师

发表于 2017-7-15 16:00 | 显示全部楼层 |返回版面

用定时器的8位自动重装方式,通过软件简单的处理就可以了
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里 http://open.21ic.com 移步更多21ic独家微课:http://open.21ic.com/list/3/0/0

500

主题

4167

帖子

1万

积分

资深工程师

发表于 2017-7-15 16:02 | 显示全部楼层 |返回版面

//   if(Treat_Adult_Flag == 1)//标志位
//   {
//        if(Strength_I_Set >= 1) //参数大于1时,进行下面
//        {                                                     
//                if(Time_base<=15)
//                 dac0832_data(Strength_I); //Strength_I 是参数
//                                 
//                else if((Time_base>15)&&(Time_base<=20))  
//                dac0832_data(0);
//
//                 else if((Time_base>20)&&(Time_base<=35))
//                  dac0832_data(Strength_I);
//
//                 else if((Time_base>35)&&(Time_base<=160))  
//                  dac0832_data(0);
//
//                else if(Time_base>625)
//                  Time_base=0;
//         }
//        if(Strength_II_Set >= 1)
//         {         
//                 if((Time_base>160)&&(Time_base<=175))        
//                   dac0832_data(Strength_II);
//
//                 else if((Time_base>175)&&(Time_base<=180))        
//                  dac0832_data(0);
//
//                 else if((Time_base>180)&&(Time_base<=195))
//                  dac0832_data(Strength_II);
//
//                 else if((Time_base>195)&&(Time_base<=625))
//                  dac0832_data(0);  
//                else if(Time_base>625)
//                 { Time_base=0;}
//         }
//   }
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里 http://open.21ic.com 移步更多21ic独家微课:http://open.21ic.com/list/3/0/0

487

主题

3889

帖子

1万

积分

资深工程师

 楼主| 发表于 2017-7-15 16:04 | 显示全部楼层 |返回版面

我再试试看,以前试过,发现中断20uS,其他程序执行还没完成,就又进入中断,屏幕出现了严重的卡顿,很不流畅
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里 http://open.21ic.com 移步更多21ic独家微课:http://open.21ic.com/list/3/0/0

490

主题

4187

帖子

1万

积分

资深工程师

发表于 2017-7-15 16:06 | 显示全部楼层 |返回版面
这个适合单周期51,标准51确实不行
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里 http://open.21ic.com 移步更多21ic独家微课:http://open.21ic.com/list/3/0/0

487

主题

3889

帖子

1万

积分

资深工程师

 楼主| 发表于 2017-7-15 16:10 | 显示全部楼层 |返回版面

单周期51是什么意思啊?
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里 http://open.21ic.com 移步更多21ic独家微课:http://open.21ic.com/list/3/0/0

478

主题

3784

帖子

1万

积分

资深工程师

发表于 2017-7-15 16:12 | 显示全部楼层 |返回版面
一个机器周期=一个振荡周期
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里 http://open.21ic.com 移步更多21ic独家微课:http://open.21ic.com/list/3/0/0

487

主题

3889

帖子

1万

积分

资深工程师

 楼主| 发表于 2017-7-15 16:14 | 显示全部楼层 |返回版面
试过8位自动重装,还没没效果
21ic公开课,21ic网友共同的学习圈子!学单片机、嵌入式、模拟、电源……就看这里 http://open.21ic.com 移步更多21ic独家微课:http://open.21ic.com/list/3/0/0
您需要登录后才可以回帖 登录 | 注册

本版积分规则

分享 快速回复 返回顶部 返回列表