注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

FlyingWind

 
 
 

日志

 
 
 
 

巧用与运算使单片机同时产生多种频率  

2010-03-29 21:04:59|  分类: 单片机 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

       大家都知道计算器是以二进制进行运算的,这也告诉我们要产生与二相关的信号比较容易,下面以位运算产生频率为例。(此文只列去结果和程序,不讲原理,如果你想知道详细的原理请点击

http://www.flyingwind.net/fw/MCU/AVR/20101115001.html

     本文介绍二种方案(使用AVR MEGA16 PA口)

      一、PA口从第0-7位产生的频率依次满足1/2的关系

     二、PA口第0-1位产生的频率相同,其他各位满足1/2的关系

      按位与运算在单片机编程中是一种应用比较广的运算,你在使用中时候是否发现他有奇秒之处呢,最近在使用AVR MEGE16的时候发现一个巧秒之处,利用与运算和单片机一个定时器可以同时产生多种不同频率的脉冲,且频率之间满足以2(或1/2)为公比的等比数列关系。下面介绍一下具体过程。

       下面程序使用的MEGA16 的定时器T0,脉冲输出端口PA口,在中断中对PA引脚进行特殊的与运算产生不同和频率方波。CPU时间频率工作有8MHz(配制熔丝位CKSEL3..0=0100b

#include
#include
#pragma interrupt_handler TIMER0_OVF:iv_TIMER0_OVF

unsigned char fre=231;   //205:10KHz 231:20KHz
//系统时钟工作在8MHz(CKSEL3..0=0100b)
void init(void){
TCCR0=0x02;//0000 0010
TIMSK=0x01;
TCNT0=fre;
}
void main(void){
CLI();
DDRA=0xff;
PORTA = 0x00;
DDRB=0xff;
PORTB= 0x00;

init();
MCUCR = 0x00;
GICR  = 0x00;
SEI();
while(1){
 ;
}
}

void TIMER0_OVF(void){
   TCNT0=fre; 
   PORTA=0xFF+PORTA;
   //PORTA=(~(0X01&PORTA))+(0XFE&PORTA);                               
}

protus软件仿真结果

1、当使用PORTA=0xFF+PORTA;此语句时的仿真结果,由仿真结果可以看出PA口不同综引脚输出的频率之间的关系(满足以2(或1/2)为公比的等比数列),由于仿真的误差测量的值与实际的有差别,但可以看出他们之间的关系。(本人用数字示波器测量所得的频率与理论的一橛PA0输出20KHz,其他引脚的频率依次为前一引脚的1/2)

巧用与运算使单片机同时产生多种频率 - FlyingWind -

图一  软件仿真频率计算器测量的频率值

 

巧用与运算使单片机同时产生多种频率 - FlyingWind -

图二  软件仿真示波器测量PA0,PA1,PA2,PA3的频率

巧用与运算使单片机同时产生多种频率 - FlyingWind -

 

图三  软件仿真示波器测量PA4,PA5,PA6,PA7的频率

 

2、当使用PORTA=(~(0X01&PORTA))+(0XFE&PORTA); 语句时,仿真结果。

由下面的仿真结果可以看出PA0、PA1二个引脚产生的频率相同,其他引脚产生的频率满足1/2的

巧用与运算使单片机同时产生多种频率 - FlyingWind -

 

 

巧用与运算使单片机同时产生多种频率 - FlyingWind -

 

巧用与运算使单片机同时产生多种频率 - FlyingWind -

 

http://www.flyingwind.net/fw/MCU/AVR/20101115001.html

  评论这张
 
阅读(923)| 评论(4)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018