历史上的今天
返回首页

历史上的今天

今天是:2025年04月01日(星期二)

正在发生

2020年04月01日 | MSP430用按键中断控制定时器产生持续 1s 的周期信号

2020-04-01 来源:eefocus

//////////////////////////////////////////////////////////////////////////////////////////////////////

// 2012 年吉林省大学生电子设计大赛 C题<<声源定位系统>> ----(声源部分)

// 要求: 有信号产生电路, 放大电路, 声音频率 800Hz 左右, 按一次键响声持续 1 秒.

//       声源模块体积不超过 4cm*4cm*4cm.

//====================================================================================================

// 比赛时用的是 555 定时器组成单稳态电路和延时电路做的延时发生系统. 效果也行. 由于器件误差原因, 

// 频率很难调到 800Hz 稳定下来. (参考康华光 <电子技术基础-数字部分_第五版> 428页, 习题 8.4.4)

// 赛后改用了 TI 的 MSP430 Launchpad 重做了一个, 再加一个简单的放大电路, 程序如下. 

// 本来要用 PWM 功能来输出, 只是还不熟悉, 得慢慢摸索.

//////////////////////////////////////////////////////////////////////////////////////////////////////

#include  

#include

 

// 定义别名

typedef unsigned char INT8U; 

typedef unsigned int  INT16U; 

 

volatile INT16U i = 0;              // 中断中引用的变量 最好定义成 volatile 类型.

 

//////////////////////////////////////////////////////////////////////////////////////////////////////

// 主函数

void main(void) 

    WDTCTL = WDTPW + WDTHOLD;       // 关闭看门狗 

  

    //CCTL0 = CCIE;                 // 使能 CCR0 中断 

    CCR0  = 85; 

    TACTL = TASSEL_2 + ID_3 + MC_1; // 定时器A的时钟源选择 SMCLK,增计数模式 

    P1DIR |= (BIT0 | BIT6);         // P1 设置为输出

    P1OUT  = (BIT0 | BIT3);         // 开始时 LED1 亮, LED2 灭,  选择上拉方式

    P2DIR |= BIT2;                  // 设置 P2.2 口方向为输出 

    P2OUT &= ~BIT2;                 // P2.2 输出低电平, 使得初始状态蜂鸣器不响

    P1REN |= BIT3;                  // 使能 P13 口的上拉电阻

    P1IE  |= BIT3;                  // P1.3 中断允许

    //P1IES &= ~BIT3;               // 上升沿触发中断

    P1IES |= BIT3;                  // 下降沿触发中断, 可以对比下与上升沿的区别

    P1IFG  = 0x00;                  // 清除中断标志位

    _EINT();                        // 使能全局中断 

    LPM1;                           // CPU 进入 LPM1 模式 ,LPM0 亦可

    

    for (;;)

    {

        _NOP();                     // 进入死循环, 等待中断发生

    }

 

//////////////////////////////////////////////////////////////////////////////////////////////////////

// 定时器A的中断服务函数,在这里定时改变引脚状态

#pragma vector = TIMER0_A0_VECTOR 

__interrupt void Timer_A_Handler (void) 

{   

    P2OUT ^= BIT2;

    if (++i > 1600) {               // 1s 时间到, 则停止, 等待下次按键开始

        CCTL0 &= ~CCIE;             // 禁止 CCR0 中断, 等待下次按键重新开启 

        P2OUT &= ~BIT2;             // 1s 到后, P2.2 要输出低电平, 使得蜂鸣器不再响

        i = 0;                      // i 清零, 等待下次继续计数

    }

 

//////////////////////////////////////////////////////////////////////////////////////////////////////

// P1.3中断,下降沿触发

#pragma vector = PORT1_VECTOR

__interrupt void Port1_Handler(void)

{

    CCTL0 = CCIE;                   // 使能 CCR0 中断, 蜂鸣器开始 800Hz 的声响

    P2DIR |= BIT2;                  // 设置P2.2口方向为输出

    P1OUT ^= (BIT0 | BIT6);         // 表示按键改变取反 P1.0/6, 交替亮灭

    P1IFG &= ~BIT3;                 // 清除 P1.3 中断标志位

//////////////////////////////////////////////////////////////////////////////////////////////////////

// END OF FILE

/*****************************************************************************************************

Low-power mode 0 (LPM0)

– CPU is disabled

– ACLK and SMCLK remain active, MCLK is disabled

--------------------------------------------------------------------

Low-power mode 1 (LPM1)

– CPU is disabled

– ACLK and SMCLK remain active, MCLK is disabled

– DCO's dc generator is disabled if DCO not used in active mode

*****************************************************************************************************/


推荐阅读

史海拾趣

Datasensor公司的发展小趣事

为了进一步扩大市场份额和增强技术实力,DATASENSOR公司积极进行收购和扩张。2004年,公司成功收购INFRA和SPECIALVIDEO公司,这两家公司在工业自动化领域拥有丰富的经验和先进的技术,为DATASENSOR公司带来了更多的市场机会和技术优势。此外,公司还在法国、德国、英国和西班牙等国家和地区设立了子公司,实现了全球化的战略布局。

川晶科技公司的发展小趣事

川晶科技注重团队建设和人才培养。公司建立了完善的培训体系和发展机制,为员工提供丰富的培训机会和广阔的发展空间。通过引进高素质的人才和内部培养相结合的方式,川晶科技打造了一支高素质、专业化的团队。团队成员之间团结协作、互相支持,共同推动公司的持续成长和发展。同时,公司还建立了良好的激励机制和企业文化氛围,激发员工的工作积极性和创造力。

Bipolar Integrated Technology Inc公司的发展小趣事

随着国内市场的饱和,BIT开始将目光投向国际市场。他们通过参加国际电子展会、与海外企业建立合作关系等方式,积极拓展海外市场。同时,BIT还在全球范围内设立研发中心和生产基地,以便更好地满足不同地区客户的需求。

BOT公司的发展小趣事

广西来宾电厂是中国第一个国家正式批准的BOT试点项目。该项目由法国电力国际和通用电气阿尔斯通公司作为项目公司的主要股东,总投资为6.16亿美元。这个电厂的装机规模为72万千瓦,安装了两台36万千瓦的进口燃煤机组。在长达18年的特许经营期内,该项目为广西地区提供了稳定的电力供应,同时也为项目公司带来了可观的投资回报。随着时间的推移,该项目成为了BOT模式在中国成功应用的典范,为后来的类似项目提供了宝贵的经验。

埃派克森微电子(Apexone)公司的发展小趣事

埃派克森微电子的创立可追溯到2002年,由高勇回国并带领一支团队创立。作为一家初创公司,埃派克森在创立初期就明确了以模拟系统级芯片为突破口的发展战略。通过不断的研发和创新,埃派克森成功开发了多款具有竞争力的芯片产品,逐渐在亚太与国际市场崭露头角。这一阶段,公司的创新精神和坚持不懈的努力为后来的发展奠定了坚实基础。

FETek Technology(东沅)公司的发展小趣事

随着公司规模的扩大,东沅开始投入大量资源进行技术研发。经过数年的努力,他们成功开发出了一系列具有竞争力的半导体测试设备和测试程序开发工具。这些产品不仅覆盖了模拟器件、数字器件、混合信号器件和射频器件等多种类型,而且具有高精度、高效率和高可靠性的特点。凭借这些技术优势,东沅逐渐赢得了市场的认可,客户数量不断增加。

问答坊 | AI 解惑

单片机读写多路U盘

单片机对存储设备的读写对USB存储设备的读写需要对存储体的格式有一定了解。当前USB存储体多数为FAT16和FAT32格式,还有极少数的使用FAT12格式。FAT16多见于优盘,而FAT32多见于移动硬盘。这里简价介绍优盘普遍采用的一种文件格式:FAT16。对于只有 ...…

查看全部问答>

万用表使用技巧

一、指针表和数字表的选用:   1、指针表读取精度较差,但指针摆动的过程比较直观,其摆动速度幅度有时也能比较客观地反映了被测量的大小(比如测电视机数据总线(SDL)在传送数据时的轻微抖动);数字表读数直观,但数字变化的过程看起来很杂乱 ...…

查看全部问答>

adsv1.2 for arm 新建工程出现问题?望大侠帮帮忙

有哪位大侠知道下面的问题,请帮忙解答,本人不胜感激。 我用adsv1.2新建了一个工程文件然后make出现一个错误提示“error:All50E:Bad symbol  start.s line 635 ”。这里声明一下:创建工程时我添加的文件是fs2410用户光盘里的s3c2410_b ...…

查看全部问答>

请问如何修改Wince的开机界面,改成和手机的功能菜单一样,要怎么办?

请问如何修改Wince的开机界面,改成和手机的功能菜单一样,要怎么办?…

查看全部问答>

关于BitBlt函数的问题

WinCE在32位色模式下使用BitBlt函数时会卡死,进了API就出不来了,这是怎么回事? 同样的代码在16位色模式下没有问题。…

查看全部问答>

【已关闭】【征询贴】3.5寸TFT触摸屏

1.团长备案号:个人001 2.品牌:信利(全新原装) 26万色 3.团购价格:数量50-100个:38元,100-200个:35元,200个以上30元 4.预计团购发起日期:2011.2.28 5.预计团购结束日期:2011.3.15 6.报名方式:跟帖报名 [ 本帖最后由 wanghongyang ...…

查看全部问答>

arv32 ad转换连续采样模式

我用avr 32 进行ad采样,采用pa0口,设置为连续采样模式,但是每次采样的时候都只能显示第一次采样的结果,貌似联系的设置都没有效果呀,哪位大虾帮忙看看吧,谢谢哈,代码如下:void adc0_init(void) {//ADCSR = 0x00;   //disable adcA ...…

查看全部问答>

【注定不凡的一帖】

       今天和管理员soso姐聊了一个关于论坛建议的问题,再此贴出来给大家,也欢迎大家多多补充。       作为坛友我们来论坛无非是交流技术,学习和展示自己;作为论坛希望我们来的目 ...…

查看全部问答>

TI 电源设计小贴士39

欢迎来到电源设计小贴士!随着现在对更高效、更低成本电源解决方案需求的强调,我们创建了该专栏,就各种电源管理课题提出一些对您有帮助的小技巧。该专栏面向各级设计工程师。无论您是从事电源业务多年还是刚刚步入电源领域,您都可以在这里找到 ...…

查看全部问答>