打印
[51单片机]

定时器中断的问题

[复制链接]
1349|19
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
尚善励挚|  楼主 | 2014-12-3 08:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
ayb_ice| | 2014-12-3 08:57 | 只看该作者
周期呢

使用特权

评论回复
板凳
ningling_21| | 2014-12-3 09:07 | 只看该作者
如果周期不变,用定时器+PWM可以实现

使用特权

评论回复
地板
coody| | 2014-12-3 09:56 | 只看该作者
51的话,用STC的MCU很容易实现,用定时器或PCA均可。
当然,也可以用高大上的STM32F

使用特权

评论回复
5
wh6ic| | 2014-12-3 11:48 | 只看该作者
本帖最后由 wh6ic 于 2014-12-3 11:50 编辑

错了,现在 STC 才是高大上了,差不多的配置, STM32F有些已经比STC便宜了,俺等玩 51 N年的悲催了,手忙脚乱换M0中 ......

使用特权

评论回复
6
luofeng2g| | 2014-12-3 12:14 | 只看该作者
wh6ic 发表于 2014-12-3 11:48
错了,现在 STC 才是高大上了,差不多的配置, STM32F有些已经比STC便宜了,俺等玩 51 N年的悲催了,手忙脚 ...

那还舍得放弃“高大上”的?

使用特权

评论回复
7
尚善励挚|  楼主 | 2014-12-3 13:32 | 只看该作者
ayb_ice 发表于 2014-12-3 08:57
周期呢

周期是80HZ

使用特权

评论回复
8
尚善励挚|  楼主 | 2014-12-3 13:33 | 只看该作者
ningling_21 发表于 2014-12-3 09:07
如果周期不变,用定时器+PWM可以实现

用的是STC11F60xe

使用特权

评论回复
9
尚善励挚|  楼主 | 2014-12-3 13:37 | 只看该作者
coody 发表于 2014-12-3 09:56
51的话,用STC的MCU很容易实现,用定时器或PCA均可。
当然,也可以用高大上的STM32F ...

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模拟的波形,此处省略了
}

使用特权

评论回复
10
ayb_ice| | 2014-12-3 13:41 | 只看该作者
用定时器的8位自动重装方式,通过软件简单的处理就可以了

使用特权

评论回复
11
尚善励挚|  楼主 | 2014-12-3 13:42 | 只看该作者
wh6ic 发表于 2014-12-3 11:48
错了,现在 STC 才是高大上了,差不多的配置, STM32F有些已经比STC便宜了,俺等玩 51 N年的悲催了,手忙脚 ...

//   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;}
//         }
//   }

使用特权

评论回复
12
尚善励挚|  楼主 | 2014-12-3 13:44 | 只看该作者
ayb_ice 发表于 2014-12-3 13:41
用定时器的8位自动重装方式,通过软件简单的处理就可以了

我再试试看,以前试过,发现中断20uS,其他程序执行还没完成,就又进入中断,屏幕出现了严重的卡顿,很不流畅

使用特权

评论回复
13
ayb_ice| | 2014-12-3 13:55 | 只看该作者
尚善励挚 发表于 2014-12-3 13:44
我再试试看,以前试过,发现中断20uS,其他程序执行还没完成,就又进入中断,屏幕出现了严重的卡顿,很不 ...

这个适合单周期51,标准51确实不行

使用特权

评论回复
14
whxbluesky| | 2014-12-3 13:57 | 只看该作者
菜鸟我也再纠结这种问题。

使用特权

评论回复
15
尚善励挚|  楼主 | 2014-12-3 13:57 | 只看该作者
ayb_ice 发表于 2014-12-3 13:55
这个适合单周期51,标准51确实不行

单周期51是什么意思啊?

使用特权

评论回复
16
ayb_ice| | 2014-12-3 13:59 | 只看该作者
尚善励挚 发表于 2014-12-3 13:57
单周期51是什么意思啊?

一个机器周期=一个振荡周期

使用特权

评论回复
17
尚善励挚|  楼主 | 2014-12-3 14:01 | 只看该作者
whxbluesky 发表于 2014-12-3 13:57
菜鸟我也再纠结这种问题。

一起讨论讨论

使用特权

评论回复
18
尚善励挚|  楼主 | 2014-12-3 15:14 | 只看该作者
尚善励挚 发表于 2014-12-3 13:44
我再试试看,以前试过,发现中断20uS,其他程序执行还没完成,就又进入中断,屏幕出现了严重的卡顿,很不 ...

试过8位自动重装,还没没效果

使用特权

评论回复
19
wxjcan| | 2014-12-3 16:31 | 只看该作者
学习下

使用特权

评论回复
20
尚善励挚|  楼主 | 2014-12-3 16:39 | 只看该作者
wxjcan 发表于 2014-12-3 16:31
学习下

来来来,一起讨论,给点意见

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

23

主题

144

帖子

0

粉丝