日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁(yè) > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]////////////////////////////////////////////////////////////////////////////////////////////////////// // 2012 年吉林省大學(xué)生電子設(shè)計(jì)大賽 C題 ----(聲源部分) // 要求: 有信號(hào)產(chǎn)生電路, 放大電路, 聲音頻率

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

// 2012 年吉林省大學(xué)生電子設(shè)計(jì)大賽 C題<<聲源定位系統(tǒng)>> ----(聲源部分)

// 要求: 有信號(hào)產(chǎn)生電路, 放大電路, 聲音頻率 800Hz 左右, 按一次鍵響聲持續(xù) 1 秒.

// 聲源模塊體積不超過(guò) 4cm*4cm*4cm.

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

// 比賽時(shí)用的是 555 定時(shí)器組成單穩(wěn)態(tài)電路和延時(shí)電路做的延時(shí)發(fā)生系統(tǒng). 效果也行. 由于器件誤差原因,

// 頻率很難調(diào)到 800Hz 穩(wěn)定下來(lái). (參考康華光 <電子技術(shù)基礎(chǔ)-數(shù)字部分_第五版> 428頁(yè), 習(xí)題 8.4.4)

// 賽后改用了 TI 的 MSP430 Launchpad 重做了一個(gè), 再加一個(gè)簡(jiǎn)單的放大電路, 程序如下.

// 本來(lái)要用 PWM 功能來(lái)輸出, 只是還不熟悉, 得慢慢摸索.

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

#include

#include

// 定義別名

typedef unsigned char INT8U;

typedef unsigned int INT16U;

volatile INT16U i = 0; // 中斷中引用的變量 最好定義成 volatile 類型.

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

// 主函數(shù)

void main(void)

{

WDTCTL = WDTPW + WDTHOLD; // 關(guān)閉看門狗

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

CCR0 = 85;

TACTL = TASSEL_2 + ID_3 + MC_1; // 定時(shí)器A的時(shí)鐘源選擇 SMCLK,增計(jì)數(shù)模式

P1DIR |= (BIT0 | BIT6); // P1 設(shè)置為輸出

P1OUT = (BIT0 | BIT3); // 開(kāi)始時(shí) LED1 亮, LED2 滅, 選擇上拉方式

P2DIR |= BIT2; // 設(shè)置 P2.2 口方向?yàn)檩敵?

P2OUT &= ~BIT2; // P2.2 輸出低電平, 使得初始狀態(tài)蜂鳴器不響

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

P1IE |= BIT3; // P1.3 中斷允許

//P1IES &= ~BIT3; // 上升沿觸發(fā)中斷

P1IES |= BIT3; // 下降沿觸發(fā)中斷, 可以對(duì)比下與上升沿的區(qū)別

P1IFG = 0x00; // 清除中斷標(biāo)志位

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

LPM1; // CPU 進(jìn)入 LPM1 模式 ,LPM0 亦可

for (;;)

{

_NOP(); // 進(jìn)入死循環(huán), 等待中斷發(fā)生

}

}

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

// 定時(shí)器A的中斷服務(wù)函數(shù),在這里定時(shí)改變引腳狀態(tài)

#pragma vector = TIMER0_A0_VECTOR

__interrupt void Timer_A_Handler (void)

{

P2OUT ^= BIT2;

if (++i > 1600) { // 1s 時(shí)間到, 則停止, 等待下次按鍵開(kāi)始

CCTL0 &= ~CCIE; // 禁止 CCR0 中斷, 等待下次按鍵重新開(kāi)啟

P2OUT &= ~BIT2; // 1s 到后, P2.2 要輸出低電平, 使得蜂鳴器不再響

i = 0; // i 清零, 等待下次繼續(xù)計(jì)數(shù)

}

}

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

// P1.3中斷,下降沿觸發(fā)

#pragma vector = PORT1_VECTOR

__interrupt void Port1_Handler(void)

{

CCTL0 = CCIE; // 使能 CCR0 中斷, 蜂鳴器開(kāi)始 800Hz 的聲響

P2DIR |= BIT2; // 設(shè)置P2.2口方向?yàn)檩敵?

P1OUT ^= (BIT0 | BIT6); // 表示按鍵改變?nèi)》?P1.0/6, 交替亮滅

P1IFG &= ~BIT3; // 清除 P1.3 中斷標(biāo)志位

}

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

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

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


本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉