計(jì)算機(jī)硬件實(shí)驗(yàn)報(bào)告 (6000字) - 實(shí)驗(yàn)報(bào)告 - 書(shū)業(yè)網(wǎng).docx
《計(jì)算機(jī)硬件實(shí)驗(yàn)報(bào)告 (6000字) - 實(shí)驗(yàn)報(bào)告 - 書(shū)業(yè)網(wǎng).docx》由會(huì)員分享,可在線閱讀,更多相關(guān)《計(jì)算機(jī)硬件實(shí)驗(yàn)報(bào)告 (6000字) - 實(shí)驗(yàn)報(bào)告 - 書(shū)業(yè)網(wǎng).docx(34頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、計(jì)算機(jī)硬件實(shí)驗(yàn)報(bào)告 (6000字)-實(shí)驗(yàn)報(bào)告- 書(shū)業(yè)網(wǎng) 計(jì)算機(jī)硬件技術(shù) 實(shí)驗(yàn)報(bào)告 第四次和第五次實(shí)驗(yàn) 姓名:李新基 學(xué)號(hào):2012010630 實(shí)驗(yàn)班號(hào):23 機(jī)器號(hào):39 目錄 實(shí)驗(yàn)四. 中斷技 術(shù) 3 一 .實(shí) 驗(yàn) 目 的 3 二. 實(shí)驗(yàn)基本任 務(wù) 3 1. 中斷響應(yīng)過(guò)程的理 2.掌握利用時(shí)鐘信號(hào)和中斷技術(shù)實(shí)現(xiàn)定時(shí)功能的方 法; 二.實(shí)驗(yàn)基礎(chǔ)任務(wù)。 1 .數(shù)字示波器的使用 1)將信號(hào)源的波形在示波器上顯示出來(lái),掌握測(cè)量周 期、頻率、峰峰值的方法; 2)用孔孔導(dǎo)線將實(shí)驗(yàn)板的地信號(hào)與示波器的地信號(hào)相 連,測(cè)量實(shí)驗(yàn)板上的Vcc電源信號(hào)是否
2、正常。 測(cè)試結(jié)果為3.68Vo跟預(yù)期值相差不大。 2 .測(cè)試上電復(fù)位系統(tǒng)的ACLK、和SMCLK時(shí)鐘頻率 編程輸出單片機(jī)上電復(fù)位后的ACLK、和SMCLK時(shí) 鐘,用示波器測(cè)量其頻率,并記錄下來(lái)。 思考:上電復(fù)位后,CPU工作的時(shí)鐘信號(hào)MCLK頻 率值是多少? ACLK的時(shí)鐘頻率是32.89kHzo SMCLK的 時(shí)鐘頻率是1.149MHz。 思考題:在上電復(fù)位以后,進(jìn)入到View Register觀察,發(fā) 現(xiàn)BCSCTL2寄存器上SELM位為00, SELS位為0,因此, MCLK的頻率與SMCLK的頻率一樣,都是LI49MHz。 3 .掌握基本時(shí)鐘模塊的編程控制 參看附錄A實(shí)驗(yàn)板
3、原理圖,用跳線將JP8中的插針信 號(hào)接到晶振32.768Khz側(cè),使晶振與單片機(jī)的P2.6和P2.7 相連。編程控制基本時(shí)鐘模塊,設(shè)置ACLK分別為下面時(shí) 鐘頻率,并通過(guò)PLO輸出ACLK,用示波器觀察: 1) ACLK=4096Hz;(時(shí)鐘源外部晶振,32768Hz/8) 2) ACLK=3KHz;(時(shí)鐘源 VLOCLK, 12KHz/4) 思考:可否編程在引腳P2.0上輸出ACLK?為什 么? 1) 4098Hz o 2) 2.89kHzo 思考題:不能,P2引腳不具有輸出輔助時(shí)鐘的功能。 4. DCO出廠校驗(yàn)值的頻率檢測(cè) 1)利用出廠校驗(yàn)值,編程使DCO分別為1MHz、
4、 8MHz、12MHz、16MHz,通過(guò)PL4輸出,用示波器測(cè)量實(shí) 際值。 1) DCO 為 1MHz 時(shí),實(shí)際值為 1.010MHz, DCO為8MHz時(shí),實(shí)際值為8.065MHz, DCO為12MHz時(shí),實(shí)際值為12.05MHz, DCO為16MHz時(shí),實(shí)際值為16.03MHz。 5.利用輸出的時(shí)鐘信號(hào)做中斷源,實(shí)現(xiàn)定時(shí)功能 將任務(wù)3中P1.0輸出的3KHz ACLK時(shí)鐘信號(hào),作 為P1.5的中斷申請(qǐng)信號(hào),用導(dǎo)線將PL5與PL0相連即可, 在中斷子程中設(shè)置一個(gè)計(jì)數(shù)變量,計(jì)數(shù)中斷子程被執(zhí)行的次 數(shù),中斷子程每被執(zhí)行3000次表示一秒時(shí)間到。利用該定 時(shí)功能,將8個(gè)發(fā)光二級(jí)管設(shè)計(jì)成
5、一個(gè)秒表,顯示秒值,每 秒改變一次8個(gè)發(fā)光二級(jí)管的顯示。 思考:如果要每隔10秒蜂鳴器響一聲,如何在任務(wù) 5的基礎(chǔ)上編程實(shí)現(xiàn)? 思考題:只需設(shè)置一個(gè)函數(shù),執(zhí)行十分度和二分度的 相互轉(zhuǎn)換,然后利用十分度的輸出來(lái)控制蜂鳴器即可。 三.實(shí)驗(yàn)小結(jié) 這兩次的實(shí)驗(yàn)內(nèi)容基本上都是與硬件技術(shù)關(guān)系密切, 從這兩次的實(shí)驗(yàn)來(lái)看,計(jì)算機(jī)硬件這門(mén)課程中,C語(yǔ)言的學(xué) 習(xí)只是一個(gè)輔助功能,更多的是考察我們對(duì)于本課程的理解 和應(yīng)用。 實(shí)驗(yàn)代碼清單。 實(shí)驗(yàn)四。1. #include "in430.h" #include "io430.h" void delay() 〃延時(shí)函
6、數(shù){ unsigned intj; for (j=O;j<Oxffff;j++); ) void Blink( ) //LED 閃{ P2OUT &=^BIT3; delay(); P2OUT |= BIT3; delay(); ) void Buzz() 〃蜂鳴響{ unsigned int i; for (i=0;i&It;3;i++) { P2OUT &=-BIT4; delay(); P2OUT|= BIT4; delay(); ) void main ( void ) { WDTCTL = WDTPW + WDTHOLD; 〃關(guān)閉看門(mén)狗 〃設(shè)
7、置引腳P2.4、P2.3輸出,P2.3連接LED, P2.4連 接蜂鳴器 P2SEL &=^(BIT3+BIT4); P2SEL2 &=^(BIT3+BIT4); P2OUT|=(BIT3+BIT4); P2DIR|=(BIT3+BIT4); 〃設(shè)置端DPLl允許中斷 P1SEL &=?BIT1; P1SEL2 &=?BIT1; P1OUT |=BIT1;; P1REN |=BIT1; P1DIR &=^BITl; P1IES |= BIT1; P1IFG &=~BITl; P1IE |= BIT1; _EINT();〃
8、總中斷允許 for (;;) 〃主循環(huán) { Blink(); }; #pragma vector=PORTl_VECTOR —interrupt void port_ISR() { Buzz(); P1IFG &=^BITl; } 1-5 #include "in430.h" #include "io430,h" void delay()〃延時(shí)函數(shù) { unsigned int j; for (j=O;j<Oxffff;j++); ) void Blink() //LED 閃 { P2OUT &=~B
9、IT3; delay(); P2OUT |= BIT3; delayO; ) void Buzz() 〃蜂鳴響 { unsigned int i; for (i=0;i<3;i++) { P2OUT &=^BIT4; delay(); P2OUT|= BIT4; delay(); ); } void main ( void ) { WDTCTL = WDTPW + WDTHOLD; 〃關(guān)閉看門(mén)狗 〃設(shè)置引腳P2.4、P2.3輸出,P2.3連接LED, P2.4連 接蜂鳴器 P2SEL &=^(BIT3+BIT4); P2SEL2 &
10、;=^(BIT3+BIT4); P2OUT|=(BIT3+BIT4); P2DIR|=(BIT3+BIT4); 〃設(shè)置端DPI. 1允許中斷 P1SEL &=?BIT5; P1SEL2 &=?BIT5; Pl OUT |=BIT5;; Pl REN |=BIT5; P1DIR &=-BIT5; P1IES |= BIT5; P1IFG &=^BIT5; P1IE |= BIT5; _EINT();〃總中斷允許 for(;;)〃主循環(huán) { BIink(); }; } #pragma vector=PORTl_VECTOR —int
11、errupt void port_ISR() { Buzz(); P1IFG &=~BIT5; } 2. #include "in430.h" #include "io430.h" void delay() 〃延時(shí)函數(shù) { unsigned int j; for g=O;j<Oxffff;j++); ) void Blink() //LED 閃 ( unsigned int i; for(i=0;i&It;3;i++) P2OUT &=-BIT0; delay(); P2OUT |= BITO;
12、delay(); ) ) void Buzz() 〃蜂鳴響 ( P2OUT &=~BIT4; delay(); P2OUT|= BIT4; delay(); ) void main ( void ) { WDTCTL = WDTPW + WDTHOLD; 〃關(guān)閉看門(mén)狗 〃設(shè)置引腳P2.4、P2.0輸出,P2.0連接LED, P2.4連 接蜂鳴器 P2SEL &=^(BIT0+BIT4+BIT6); P2SEL2 &=^(BIT0+BIT4+BIT6); P2OUT|=(BIT0+BIT4+BIT6); P2DIR|=(BIT0+BIT4+B
13、IT6); 〃設(shè)置端口 P1.4,PL5允許中斷 P1SEL &= -(BIT4+BIT5); P1SEL2 &= -(BIT4+BIT5); Pl OUT |=(BIT4+BIT5); Pl REN |=(BIT4+BIT5); P1DIR &=4BIT4+BIT5); P1IES |= (BIT4+BIT5); P1IFG &=^(BIT4+BIT5); P1IE |= (BIT4+BIT5); _EINT();〃總中斷允許 for (;;)〃主循環(huán) { P2OUT&=^BIT6; delay(); P2OUT|=BIT6;
14、 delay(); }; } #pragma vector=PORTl_VECTOR _interrupt void port_ISR() ( if((PHFG&BIT4)!=0) Buzz(); P1IFG &二?BIT4; } if((PHFG&BIT5)!=0) ( BIink(); P1IFG &=^BIT5; } } 2 .思考題 #include "in430.h" #include "io430.h" void delay() 〃延時(shí)函數(shù) { unsigned int j
15、; for (j=O;j<Oxffff;j++); } void Blink() //LED 閃 | unsigned int i; for(i=0;i<3;i++) P2OUT &=~BIT0; delay(); P2OUT |= BITO; 解 3 2. 中斷程序編程練 習(xí) 三、已完成的選作任 務(wù)。 ……8 1.6)(選做)去掉L4Jnt.c程序最后的那條無(wú)限循環(huán) 語(yǔ)句,看看有什么現(xiàn)象?可以 去 掉 嗎? 8 3 .(選做)采用事件標(biāo)志處理中 斷 8 4 .(選做)按鍵抖動(dòng)處 理 10 實(shí)驗(yàn)五. 基本時(shí)鐘和定時(shí)功 能
16、 11 一 .實(shí) 驗(yàn) 目 的 11 delay(); ) ) void Buzz() 〃蜂鳴響 ( P2OUT &=^BIT4; delay(); P2OUT|= BIT4; delay(); ) void main ( void ) { WDTCTL = WDTPW + WDTHOLD; 〃關(guān)閉看門(mén)狗 .DINT(); 〃設(shè)置引腳P2.4、P2.0輸出,P2.0連接LED, P2.4連 接蜂鳴器 P2SEL &=^(BIT0+BIT4+BIT6); P2SEL2 &=~(BrrO+Brr4+BIT6); P2OUT|=(BIT0+BIT4+
17、BIT6); P2DIR|=(BIT0+BIT4+BIT6); 〃設(shè)置端口 Pl.4,P1.5 允許中 斷 P2SEL &= ^(BIT2+BIT5); P2SEL2 &= ~(BIT2+BIT5); P2OUT |=(BIT2+BIT5); P2REN |=(BIT2+BIT5); P2DIR &=^(BIT2+BIT5); P2IES |= (BIT2+BIT5); P2IFG &=^(BIT2+BIT5); P2IE |= (BIT2+BIT5); _EINT();〃總中斷允許 for(;;)〃主循環(huán) ( P2OUT&=^BIT6
18、; delay(); P2OUT|=BIT6; delay(); ); ) #pragma vector=PORT2_VECTOR —interrupt void port_ISR() ( if((P2IFG&BIT2)!=0) { Buzz(); P2IFG &=~BIT2; } if((P2IFG&BIT5)!=0) { BlinkQ; P2IFG &=?BIT5; } ) 3 .改進(jìn)版 #include "in430.h" #include "io430.h" int flagl=
19、0,flag2=0;〃設(shè)置標(biāo)志 void delay() 〃延 時(shí)函數(shù){ unsigned int j; for (j=O;j&It;Oxffff;j++); ) void Blink() //LED 閃 | unsigned int i; for(i=0;i<3;i++) ( P2OUT &=^BIT0; delay(); P2OUT |= BITO; delay(); ) } void Buzz() 〃蜂鳴響 ( P2OUT &=~BIT4; delay(); P2OUT|= BIT4; delayO; ) void main
20、 ( void ) { WDTCTL = WDTPW + WDTHOLD; 〃關(guān)閉看門(mén)狗 〃設(shè)置引腳P2.4、P2.0輸出,P2.0連接LED, P2.4連接 蜂鳴器 P2SEL &=^(BIT0+BIT4+BIT6); P2SEL2 &=^(BIT0+BIT4+BIT6); P2OUT|=(BIT0+BIT4+BIT6); P2DIR|=(BIT0+BIT4+BIT6); 〃設(shè)置端DPI4Pl.5允許中斷 P1SEL &=?(BIT4+BIT5); P1SEL2 &=?(BIT4+BIT5); P1OUT |=(BIT4+BIT5); P
21、1REN |=(BIT4+BIT5); P1DIR &=-(BIT4+BIT5); P1IES |= (BIT4+BIT5); P1IFG &=~(BIT4+BIT5); P1IE |= (BIT4+BIT5); _EINT();〃總中斷允許 for(;;)〃主循環(huán) if(flagl==l) Buzz(); flagl=(); } if(flag2==l) ( Blink(); flag2=0; } P2OUT&=^BIT6; delay(); P2OUT|=BIT6; delay(); }; } #pragma vector=
22、PORTl_VECTOR —interrupt void port_ISR() ( if((PHFG&BIT4)!=0) ( flagl=l; P1IFG &=-BIT4; } if((PHFG&BIT5)!=0) ( flag2=l; P1IFG &=-BIT5; } } 3選作intA #include "io430,h" #include "in430.h" void delay(); int main( void ) { // Stop watchdog timer to pr
23、event time out reset WDTCTL = WDTPW + WDTHOLD; —disable_interrupt(); P1SEL &尸?BIT7; P1SEL2 &=~BIT7; P1OUT |=BIT7; P1DIR |=BIT7; P1SEL &=~BIT0; P1SEL2 &=~BIT0; P1REN |=BIT0; Pl OUT |=BIT0; P1DIR &=-BIT0; P1IES |=BIT0; P1IFG &=^BIT0; P1IE |=BIT0; —enable_interrupt(
24、); while(l){ }; ) #pragma vector=PORTl_VECTOR _interrupt void portjnt(void) { if ((P1IFG &BIT0) !=0 ) { Pl OUT &=-BIT7;; delay(); P1OUT |=BIT7;; P1IFG &=-BIT0;; } ) void delay() { unsigned int i; 〃定義函數(shù)變量 for (i=O;i<Oxffff;i++); 〃延時(shí)} 3intB #include "io430.h" #inc
25、lude "in430.h" void delayO; int main( void ) { // Stop watchdog timer to prevent time out reset WDTCTL = WDTPW + WDTHOLD; —disable_interrupt(); P1SEL &=^BIT7; P1SEL2 &=^BIT7; P1OUT |=BIT7; P1DIR |=BIT7; P1SEL &=-BIT0; P1SEL2 &=^BIT(); PIREN |=BIT0; P1OUT |=BIT0;
26、 P1DIR &=-BIT0; P1IES |=BIT0; P1IFG &=~BIT0; PHE |=BIT0; —enable_interrupt(); while(l){ }; ) #pragma vector=PORTl_VECTOR interrupt void port_int(void) {if ((P1IFG &BITO) !=0 ) { P1OUT &=^BIT7;; delay(); PIOUT |=BIT7;; P1IFG &=^BIT0;; } } void delay() { unsigned
27、int i; 〃定義函數(shù)變量 for (i=O;i<Oxffff;i++); 〃延時(shí) ) 4 .原程序 #include "io430.h" #include "in430.h" unsigned int number=0; 〃記錄響應(yīng)按鍵次數(shù) void delay() 〃延時(shí)函數(shù) { unsigned int j; for g=O;j<Oxffff;j++); ) int main( void ) { WDTCTL = WDTPW + WDTHOLD; 〃關(guān)閉看門(mén)狗 _disable_interrupt(); //_
28、DINT();禁止總中斷 P2SEL=0; 〃置P2為基本I/O功能〃〃置P2輸出的初值〃 置 P2 為輸出方向 P2SEL2=0; P2OUT=0xFF; P2DIR=0xFF; P1SEL &= BIT2; P1SEL2 &= BIT2; P1OUT |=BIT2;; P1REN |=BIT2; P1DIR &=^BIT2; P1IES |= BIT2; P1IFG &=-BIT2; P1IE |= BIT2; //_EINT();總中斷運(yùn)行 —enable_interrupt(); } while(l){ }; #pragma vect
29、or=PORTl_VECTOR —interrupt void port_int(void) ( if ((PlIFG&BIT2)!=0) { number++; P2OUT=-number; ) P1IFG &=~BIT2; ) 4選作改進(jìn)版 #include "io430.h" #include "in430.h" unsigned int number=0; 〃記錄響應(yīng)按鍵次數(shù) void 二. 實(shí)驗(yàn)基礎(chǔ)任 務(wù)。 XI I. 數(shù)字示波器的使 用 11 2.測(cè)試上電復(fù)位系統(tǒng)的ACLK、和SMCLK時(shí)鐘
30、頻 率 11 3.掌握基本時(shí)鐘模塊的編 程控制 12 4. DCO 出廠校驗(yàn)值的頻率檢 測(cè) 12 5.利 用輸出的時(shí)鐘信號(hào)做中斷源,實(shí)現(xiàn)定時(shí)功 能 13 三. 實(shí) 驗(yàn) 小 結(jié) 13 實(shí) 驗(yàn) 代 碼 清 單。 14 實(shí) 驗(yàn) 四。 14 delay()〃延時(shí)函數(shù) { unsigned int j; for(j=0;j<0xffff;j++); ) int main( void ) { WDTCTL = WDTPW + WDTHOLD; 〃關(guān)閉看門(mén)狗 _disable_interrupt(); //_DINT();禁止總中斷 P2SEL=0; //
31、 置P2為基本I/O功能 P2SEL2=0; // P2OUT=0xFF; //S P2 輸出的初值 P2DIR=0xFF; 〃置P2為輸出方向 P1SEL &= BIT2; P1SEL2 &= BIT2; P1OUT |=BIT2;; PIREN |=BIT2; P1DIR &=-BIT2; PHES |= BIT2; P1IFG &=~BIT2; P1IE |= BIT2; —enable_interrupt(); //_EINT();總中斷運(yùn)行 while(l){ }; } #pragma vector=PORTl_VECTOR
32、 —interrupt void port_int(void) ( delay();〃加了一個(gè)延時(shí)處理,處理按鍵抖動(dòng)情況if ((PlIFG&BIT2)!=0) { number++; P2OUT=-number; ) P1IFG &=~BIT2; ) 實(shí)驗(yàn)五 2. #include "io430.h" int main( void ) ( 〃關(guān)閉看門(mén)狗 WDTCTL = WDTPW + WDTHOLD; 〃設(shè)置 P2.6、 P2.7 連接外部晶振 P2SEL|=(BIT6+BIT7); P2SEL2&=^(BIT
33、6+BIT7); P2DIR&=-BIT6; P2DIR|=BIT7; 〃設(shè)置 P1.0、Pl.4 輸 出 ACLK、SMCLK P1SEL|=BITO; PlSEL2&^BIT0; P1DIR|=BITO; P1SEL|=BIT4; PlSEL2&^BIT4; P1DIR|=BIT4; while(l); ) 3. 1) #include "io430.h" int main( void ) ( 〃關(guān)閉看門(mén)狗 WDTCTL = WDTPW + WDTHOLD; 〃設(shè)置 P2.6、 P2.7 連接外部晶振 P2S
34、EL|=(BIT6+BIT7); P2SEL2&=^(BIT6+BIT7); P2DIR&=-BIT6; P2DIR|=BIT7; 〃設(shè)置Pl.0輸出ACLK P1SEL|=BITO; PlSEL2&=^BIT0; P1DIR|=BITO; BCSCTL3&=^(LFXTlS0+LFXTlSl); BCSCTL1|=(DIVAO+DIVA1); while(l); ) 2) } 4. #include "io430.h" int main( void ) { 〃關(guān)閉看門(mén)狗 WDTCTL = WDTPW + WDTHOL
35、D; // 設(shè)置 P1.0 輸出 ACLK P1SEL|=BITO; PlSEL2&=~BIT0; P1DIR|=BITO; BCSCTL3&=^LFXTlS0; BCSCTL3|=LFXT1S1; BCSCTLl&=^DIVAO; BCSCTL1|=DIVA1; while(l); #include "io430.h" int main( void) | // Stop watchdog timer to prevent time out reset ) 5. WDTCTL = WDTPW + WDTHOLD; P1SEL|=BIT
36、4; PlSEL2&^BIT4; P1DIR|=BIT4; BCSCTL2&=^SELS; BCSCTL1=CALBC1_8MHZ; 〃其他情況改變 8MHz 就可以了 DCOCTL=CALDCO_8MHZ; while(l); #include "io430.h" #include "in430.h" unsigned char time=O; unsigned int i=0; int main( void ) ( 〃關(guān)閉看門(mén)狗 WDTCTL = WDTPW + WDTHOLD; 〃設(shè)置端口 P1.0輸出3KHzA
37、CLK 時(shí)鐘信號(hào) P1SEL|=BITO; PlSEL2&^BIT0; P1DIR|=BITO; BCSCTL3&=-LFXTlS0; BCSCTL3|=LFXT1S1; BCSCTLl&=^DIVAO; BCSCTL1|=DIVA1; 〃設(shè)置P2.0~P2.7為輸出狀態(tài) P2SEL&=0; P2SEL2&=0; P2DIR|=0Xff; P2OUT|=0Xff; 〃設(shè)置端口 Pl.5允許中斷 PlSEL&=^BIT5; PlSEL2&=-BIT5; P1REN|=BIT5; PlOUT&=~BIT5;
38、PIDIR&尸?BIT5; PHES&尸?BIT5; PlIFG&=^BIT5; P1IE|=BIT5; _EINT(); while(l){ if (i>=3000) { time+=l; i=0;} P2OUT=~time; //LED燈顯示輸出秒表的值 } ) #pragma vector=PORTl_VECTOR —interrupt void port_ISR(){ i++; PlIFG&=~(BIT5);〃清中斷標(biāo)志 14 2 18 2 . 思 考 題 21 3 .改 進(jìn) 版 24
39、 4 選 作 intA 28 3intB 29 5 .原 程 序 31 選 作 改 進(jìn) 版 33 實(shí) 驗(yàn) 五 35 2 35 3 36 4 37 5 38 實(shí)驗(yàn)四.中斷技術(shù) 一.實(shí)驗(yàn)?zāi)康? 1 . 了解中斷原理,包括對(duì)中斷源、中斷向量、中斷類(lèi) 型號(hào)、中斷程序以及中斷響應(yīng)過(guò)程的理解; 2 .掌握單片機(jī)C語(yǔ)言中斷程序設(shè)計(jì)方法; 二.實(shí)驗(yàn)基本任務(wù) 1 .中斷響應(yīng)過(guò)程的理解 閱讀下面C語(yǔ)言中斷程序L4_int.C (見(jiàn)后頁(yè)),說(shuō)明 程序執(zhí)行的流程和實(shí)現(xiàn)功能。上機(jī)實(shí)踐,回答下面問(wèn)題,掌 握用C語(yǔ)言編寫(xiě)中斷程序的方法
40、。 1)從程序如何判斷用的是哪個(gè)中斷源?其中斷類(lèi)型 號(hào)是多少?將實(shí)驗(yàn)板上某一按鍵與該中斷源對(duì)應(yīng)的引腳相 連,運(yùn)行程序,操作按鍵,觀察現(xiàn)象。 2 ) main函數(shù)中無(wú)調(diào)用函數(shù)Buzz的語(yǔ)句,函數(shù)Buzz 如何能被執(zhí)行?何時(shí)會(huì)被執(zhí)行?據(jù)此描述中斷響應(yīng)過(guò)程。 3)如果portjnt函數(shù)中不清分中斷標(biāo)志P1IFG的后 果是什么? 4)如果L4Jnt?c中的 PORT1_VECTOR 改為 PORT2_VECTOR,其他不變,程序執(zhí)行的后果是什么? 為什么?(可在關(guān)中斷處加一斷 點(diǎn),運(yùn)行程序,看現(xiàn)象,分析原因) 5)如果中斷源采用的是PL5,按鍵用K7,請(qǐng)?jiān)O(shè)計(jì)連線, 修改L4_int.c程序
41、完成以中斷方式響應(yīng)K7的操作。 問(wèn)題回答: 1 .程序執(zhí)行的流程和實(shí)現(xiàn)功能。 流程:主循環(huán) 實(shí)現(xiàn)功能:當(dāng)不進(jìn)行任何操作時(shí),L4不停閃爍,如 果按下K2,那么L4閃爍暫停,蜂鳴器響三次后,L4繼續(xù)閃 爍。 1)從P1OUT1=BFH;可判斷出中斷源為P1.1中 斷類(lèi)型號(hào)為2?,F(xiàn)象為當(dāng)不進(jìn)行任何操作時(shí),L4不停閃爍, 如果按下K2,那么L4閃爍暫停,蜂鳴器響三次后,L4繼續(xù) 閃爍。 2)程序中有中斷向量設(shè)置,當(dāng)中斷信號(hào)發(fā)出時(shí),Blink被 暫停,而B(niǎo)uzz作為中斷子程序被調(diào)用。 中斷響應(yīng)過(guò)程是指在收到中斷源信號(hào)時(shí),程序暫停主 程序中正在操作的過(guò)程,優(yōu)先執(zhí)行中斷子程序,等中斷子程 序完
42、成后,再次轉(zhuǎn)向主程序。 3)那樣會(huì)使得中斷子程序一直運(yùn)行而不終止,從而系 統(tǒng)無(wú)法回到主程序。 4)后果:無(wú)法執(zhí)行中斷操作。 原因:中斷向量所表示的偏執(zhí)地址與中斷子程序地址 不一致。5) 2 .中斷程序編程練習(xí) 在實(shí)驗(yàn)板上用跳線將按鍵K5、K6分別與單片機(jī)的 PL4和PL5相連,編程以中斷方式響應(yīng)按鍵K5和K6的請(qǐng) 求:當(dāng)按下一次K5鍵,實(shí)驗(yàn)板上的蜂鳴器發(fā)出一警報(bào)聲; 當(dāng)按下一次K6鍵,實(shí)驗(yàn)板上的發(fā)光二極管L1閃3次。主 循環(huán)中控制L7循環(huán)閃亮。 思考:如果用長(zhǎng)導(dǎo)線將按鍵K5、K6分別連接在P2.2 和P2.5上,如何修改程序以實(shí)現(xiàn)任務(wù)2功能? 原題目的電路圖如下所示。 思考題的
43、電路圖為: 三、已完成的選作任務(wù)。 1.6)(選做)去掉L4_int.c程序最后的那條無(wú)限循環(huán) 語(yǔ)句,看看有什么現(xiàn)象?可以去掉嗎? 6)現(xiàn)象:L4閃爍一下后不再閃爍,程序停止,即使 再次按下K2,也不能使蜂鳴器發(fā)出聲音。 3.(選做)采用事件標(biāo)志處理中斷 閱讀程序L4JntA.c和L4_intB.c (見(jiàn)后頁(yè)),描述其 實(shí)現(xiàn)功能。在實(shí)驗(yàn)板上將P1.0與一個(gè)按鍵的控制端相連, P1.7與蜂鳴器的控制端相連。比擬L4_intA.c和L4_intB.c 二者在編程實(shí)現(xiàn)上有何不同。 注意各自中斷子程執(zhí)行時(shí)間的長(zhǎng)短。用L4JntB.c的方法, 改寫(xiě)任務(wù)2的編程。 L4-inA.C實(shí)現(xiàn)的功
44、能是按下K1,蜂鳴器響一下,不 按那么不響。L4-inB.C與L4-inA.C功能相同。 電路圖如下。 L4-inA.C和L4?inB.C的電路圖。 用L4?inB.C的方式編程,電路圖為 4.(選做)按鍵抖動(dòng)處理 程序L4_Key.C見(jiàn)后頁(yè),其功能是用中斷方式相應(yīng)與 PL2連接的按鍵,計(jì)數(shù)按鍵的次數(shù),并將所計(jì)的次數(shù)用8個(gè) 發(fā)光二極管顯示出來(lái)。運(yùn)行該程序,并操作按鍵,觀察實(shí)際 操作的次數(shù)與顯示值之間的關(guān)系。編程改進(jìn)L4_Key.C程序, 用軟件方式去除按鍵抖動(dòng)的影響。 實(shí)際操作次數(shù)與顯示值之間的關(guān)系是,顯示值用二進(jìn) 制的方式表現(xiàn)實(shí)際操作次數(shù)。 電路圖如下所示。 實(shí)驗(yàn)五.基本時(shí)鐘和定時(shí)功能 一.實(shí)驗(yàn)?zāi)康? 1 .了解MSP430Gxxx基本時(shí)鐘模塊的工作原理,掌 握其控制方法;
- 溫馨提示:
1: 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 6.煤礦安全生產(chǎn)科普知識(shí)競(jìng)賽題含答案
- 2.煤礦爆破工技能鑒定試題含答案
- 3.爆破工培訓(xùn)考試試題含答案
- 2.煤礦安全監(jiān)察人員模擬考試題庫(kù)試卷含答案
- 3.金屬非金屬礦山安全管理人員(地下礦山)安全生產(chǎn)模擬考試題庫(kù)試卷含答案
- 4.煤礦特種作業(yè)人員井下電鉗工模擬考試題庫(kù)試卷含答案
- 1 煤礦安全生產(chǎn)及管理知識(shí)測(cè)試題庫(kù)及答案
- 2 各種煤礦安全考試試題含答案
- 1 煤礦安全檢查考試題
- 1 井下放炮員練習(xí)題含答案
- 2煤礦安全監(jiān)測(cè)工種技術(shù)比武題庫(kù)含解析
- 1 礦山應(yīng)急救援安全知識(shí)競(jìng)賽試題
- 1 礦井泵工考試練習(xí)題含答案
- 2煤礦爆破工考試復(fù)習(xí)題含答案
- 1 各種煤礦安全考試試題含答案