版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、430單片機個人總結(jié)msp430單片機學(xué)習(xí)第二周報告總結(jié)學(xué)生姓名學(xué)習(xí)自律小時?學(xué)習(xí)問題或不足?其他建議?CIMADE教改培優(yōu)班2021-07暑假第二期黃熙班級學(xué)號15D102每天自評學(xué)習(xí)力9小時度?實驗涉及寄存器較多項目四依次點亮數(shù)碼管的每一位通過章節(jié)的學(xué)習(xí)了解數(shù)碼管工作原理。位選與段選在學(xué)習(xí)數(shù)碼管的時候必不可少的概念是位選與段選。所謂位選就是控制哪一個數(shù)碼管工作;段選就是控制一個數(shù)碼管的哪一段工作。本實驗所用數(shù)碼管為共陽極段選與位選都為低電平有效。共陰極與共陽極共陽極數(shù)碼管的8個發(fā)光二極管的陽極(二極管正端)連接在一起通常公共陽極接高電平(一般接正電源)其它管腳接段驅(qū)動電路的輸出端。共陰極數(shù)
2、碼管的8個發(fā)光二極管的陰極(二極管負端)連接在一起通常公共陰極接低電平(一般接地)其它管腳接段驅(qū)動電路的輸出端。程序?qū)嶒炈牡膯挝粩?shù)碼管實驗不需要位選就可以完成。還有就是本程序里采用了C語言里的右移位操作a=b,表示將二進制數(shù)a的每一位右移b個位置若a為正數(shù)則高位補0若為負則高位補1.項目五四位一體數(shù)碼管依次顯示0至9本實驗采用的是動態(tài)掃描的方式通過硬件連接和軟件編程讓四位一體數(shù)碼管依次顯示0至9共十個數(shù)字。程序與C相關(guān)主要有數(shù)組調(diào)用的和for循環(huán)語句以及涉及到的段選與位選。注意數(shù)碼管的共陰極共陽極程序略有不同就是開始的輸入電平的高低段選時的電平高低。位選無論共陰極還是共陽極都是高電平。模塊三基
3、礎(chǔ)時鐘與低功耗模塊實驗章節(jié)問題:對晶振不了解原理不懂而且涉及寄存器較多。時鐘源的配置校準(zhǔn)不會。時鐘基本知識實驗涉及時鐘源、寄存器簡介1、基礎(chǔ)時鐘模塊包括四個時鐘源:(1)LF_T1CLK為低速/高速晶振源通常接32.768KHZ晶振(2)_T2CLK外接標(biāo)準(zhǔn)高速晶振可以接400KHZ16MHZ的時鐘信號源通常是接8MHZ。(不是每一型號都有該時鐘)(3)DCOCLK內(nèi)部數(shù)控RC振蕩器大約在1.1MHZ受溫度和電壓的影響較大;若外部不接穩(wěn)定的晶振電路直接由內(nèi)部時鐘工作則會因環(huán)境變化而導(dǎo)致性能不穩(wěn)定。(4)VLOCLK內(nèi)部低頻振蕩器12KHZ標(biāo)準(zhǔn)振蕩器。注:低頻時鐘源從LF_T1和VLO中選一個高
4、頻時鐘源只有DCO一個。MCLK和SMCLK可以從低頻和高頻中選一個而ACLK只能選擇低頻。2、三種時鐘信號可被CPU和外設(shè)所使用:(1)ACLK:輔助時鐘通常由LF_T1CLK或VLOCLK作為時鐘源經(jīng)1248分頻得到;分頻系數(shù)由DIVA決定。(2)MCLK:主時鐘主要用于CPU和系統(tǒng)它可以通過軟件從四個時鐘源選擇經(jīng)1248分頻后得到;分頻系數(shù)由DIVM決定。(3)SMCLK:子系統(tǒng)時鐘它也可以通過軟件從四個時鐘源選擇經(jīng)1248分頻后得到;分頻系數(shù)由DIVS決定。寄存器DCOCTL控制寄存器BCSCTL1地址為57H初始值為84H(BasicClockSystemControlRegiste
5、r1)BCSCTL2地址為58H初始值為00HBCSCTL3寄存器_bis_SR_register(SCG1+SCG0);這句話表示關(guān)閉DCO將SR中的位置零在低功耗模式下運行。此類語句較為復(fù)雜應(yīng)注意。PWM波形輸出實驗PWM(PulseWidthModulation)控制脈沖寬度調(diào)制技術(shù)通過對一系列脈沖的寬度進行調(diào)制來等效地獲得所需要波形(含形狀和幅值)。程序#include<msp430g2553.hvoidTimer_A0_initTACTL=TASSEL_2+MC_1+TACLR;/Timer_A0選擇子系統(tǒng)時鐘SMCLK增計數(shù)模式TACTL寄存器計數(shù)器清零TACCTL1=OUT
6、MOD_7;/選擇模式7PWM輸出功能。TACCR0=8000;/設(shè)置TACCR0為8000TACCR1=1000;/設(shè)置TACCR1的初始值為1000voidmain(void)WDTCTL=WDTPW|WDTHOLD;/關(guān)閉開門狗P1DIR|=BIT0+BIT2;/選擇P1.0和P1.6為輸出端口P1OUT|=BIT0;/P1.0輸出高電平P1SEL|=BIT2;/P1.2作為PWM輸出管腳P1DIR&;=0x08;/選擇P1.3為輸入P1OUT|=0x08;/P1.3上拉輸入P1IE|=0x08;/P1.3中斷使能P1IES|=0x08;/P1.3中斷下降沿觸發(fā)P1REN|=0x08;/
7、P1.3上拉電阻使能P1IFG&;=0x08;/清除標(biāo)志位Timer_A0_init;/調(diào)用voidTimer_A0_init_EINT;/全局中斷使能#pragmavector=PORT1_VECTOR/#pragma預(yù)處理指令指明引起中斷的中斷向量類型_interruptvoidPORT1(void)/中斷處理函數(shù)P1OUT=BIT0;/P1.0電壓翻轉(zhuǎn)TACCR1+=1000;/TACCR1=TACCR1+1000if(TACCR18000)/如果TACCR18000TACCR1=1000;/重新賦值TACCR1=1000P1IFG&;=0x08;/清除標(biāo)志位本本實驗需要示波器運行完程序
8、沒有得到什么有價值的東西不能幫助很好的理解程序。結(jié)果只有按鍵可以控制P1.0的亮滅看不到波形的改變。項目六PWM脈沖寬度調(diào)制運用相關(guān)知識1.脈寬調(diào)制(PWM)基本原理.2.用Timer_A比較模塊的模式7(OUTMOD_7)輸出PWM波.(前面模塊講的有所以先看一下前面的知識還是有必要的。)#include“msp430g2553.h”voidTimer_A0_initTA0CTL=TASSEL_2+TACLR+MC_1;/Timer_A計數(shù)器的時鐘源選擇輔助時鐘SMCLK選擇增計數(shù)模式TA0CCTL1=OUTMOD_7;/選擇比較模式7TA0CCR0=8000;/設(shè)置TA0CCR0初始值為8
9、000TA0CCR1=1000;/設(shè)置TA0CCR1初始值為1000(CCR1/CCR0)代表占空比voidmain(void)WDTCTL=WDTPW+WDTHOLD;/關(guān)閉看門狗P1DIR|=BIT2+BIT6;/設(shè)置P1.2和P1.6為輸出方向P1SEL|=BIT2+BIT6;/P1.2和P1.6作為PWM輸出P1DIR&;=(BIT3+BIT4);/P1.3和p1.4作為輸入按鍵改變PWM占空比P1OUT|=(BIT3+BIT4);/P1.3和p1.4上拉輸入P1REN|=(BIT3+BIT4);/P1.3和p1.4上拉電阻使能Timer_A0_init;while(1)if(!(P1
10、IN&;BIT3)/判斷P1.3按鍵是否按下_delay_cycles(10000);/延時消抖if(!(P1IN&;BIT3)/判斷1.3按鍵是否按下if(CCR1=8000)CCR1=1000;/如果CCR1=8000,CCR1賦值為1000elseCCR1+=1000;/否則CCR1=CCR1+1000while(!(P1IN&;BIT3);/判斷P1.3按鍵是否按_delay_cycles(10000);/延時if(!(P1IN&;BIT4)/判斷P1.4按鍵是否按下_delay_cycles(10000);/延時消抖if(!(P1IN&;BIT4)/判斷P1.4按鍵是否按下if(CC
11、R1<=1000)/如果CCR1<=1000,CCR1賦值為8000CCR1=8000;elseCCR1-=1000;/否則CCR1=CCR1-1000while(!(P1IN&;BIT4);/判斷P1.4按鍵是否按下_delay_cycles(10000);/延時通過按鍵改變占空比P1.3按鍵控制增加它的正占空比P1.4按鍵控制增加它的正占空比P1.2輸出方波信號。實驗結(jié)果:通過按鍵控制實現(xiàn)外部LED2逐漸變量后突然變暗。模塊六ADC10此章節(jié)用的知識主要是模電數(shù)電轉(zhuǎn)換涉及寄存器較多。感覺要學(xué)這一章節(jié)首先要弄明白這個圖圖6.2.2采樣/轉(zhuǎn)換時間(1)設(shè)置采樣輸入信號源即SHI信號
12、源通過采樣輸入信號源選擇控制位SHSx位來選擇包括如下:ADC10SC位(采樣轉(zhuǎn)換控制位)Timer_AOutputUnit1Timer_AOutputUnit0Timer_AOutputUnit2在采樣輸入信號SHI產(chǎn)生上升沿時觸發(fā)內(nèi)部的采樣定時器然后由定時器產(chǎn)生控制采樣時序及轉(zhuǎn)換開始的采樣定時信號SCON啟動一次采樣周期。SHI信號源的極性可以通過采樣輸入信號反向控制位ISSH來切換。(2)設(shè)置采樣保持時間即采樣周期。通過SHTx位選擇采樣周期tsle選擇包括如下:4個ADC10CLK周期8個ADC10CLK周期16個ADC10CLK周期64個ADC10CLK周期模擬信號和數(shù)字信號的主要區(qū)
13、別是數(shù)字信號在時間和幅值上是離散的模擬信號在時間和幅值上是連續(xù)變化的模擬信號可以通過模擬信號-數(shù)字信號轉(zhuǎn)換器即A/D轉(zhuǎn)化為數(shù)字信號。模擬信號-數(shù)字信號轉(zhuǎn)換器的采樣部分可以形象的看做一個開關(guān)開關(guān)經(jīng)過一段時間閉合一次在經(jīng)過一段時間斷開如此循環(huán)。(這些實際是由采樣定時信號SCON控制完成。)這樣經(jīng)過開關(guān)的信號已經(jīng)由連續(xù)的信號變?yōu)椴贿B續(xù)的即離散的信號但還不是嚴格意義上的數(shù)字信號再經(jīng)過量化、編碼就成為數(shù)字信號。開關(guān)一次閉合的時間就叫做采樣保持時間。在選擇的采樣周期與ADC10CLK同步后采樣定時器設(shè)置SCON為高(3)采樣完成后SCON由高到低變化時控制模數(shù)轉(zhuǎn)換開始然后需要13個ADC10CLK的時間進
14、行轉(zhuǎn)化。如圖6.2.2(4)最小采樣保持時間采樣保持時間與ADC12模塊的等效輸入電路有關(guān)。從ADC10模塊輸入看ADC內(nèi)部等效為一個電阻(最大2K)與一個電容(最大20pf)相串聯(lián)。這個內(nèi)部RC常數(shù)直接影響著最小的采樣保持時間參數(shù)。所以,在采樣轉(zhuǎn)換中有一個最小采樣保持時間值概念。當(dāng)SCON=0時所有的輸入為高阻態(tài)。當(dāng)SCON=1時在采樣時間tsle期間被選擇的輸入相當(dāng)于一個RC低通濾波器如圖6.2.3。為達到10位的轉(zhuǎn)換精度電容C1的電壓必須得充到源電壓VS的1/2LSB范圍內(nèi)。ADC10通道采樣模式具體四種采樣方式之間的區(qū)別還沒搞懂。第一個實驗用ADC10實現(xiàn)內(nèi)部溫度采樣準(zhǔn)確溫度還沒能夠準(zhǔn)
15、確的顯示出來。本周總結(jié)體會:MSP430的功能非常強大其內(nèi)部的寄存器非常多關(guān)系也比較復(fù)雜對于初學(xué)者往往有無從下手的感覺。就像老師這周布置的任務(wù)MCU-AD-SIO-PWM,老師說過后就開始看資料從PWM開始往后進行直接看簡直跟看天書一般不過還是堅持著翻了一遍看著發(fā)現(xiàn)有些知識寄存器都沒見到過原來用到了計時器計數(shù)模塊的知識于是又開始往前翻從前往后看??吹倪€不深入好多點還不明白。書讀百遍其義自現(xiàn)。只是才開始學(xué)習(xí)而已總之不能放棄。畢竟大一知識欠缺并且才開始了解單片機。相關(guān)知識鏈接C語言、模電、數(shù)電單片機基礎(chǔ)。C語言循環(huán)語句用的比較多模電數(shù)電知識點應(yīng)用相對應(yīng)用比較零碎用老師說的方法遇到問題看其相關(guān)可是課
16、本上的知識點前后相關(guān)我感覺非零基礎(chǔ)就可以直接穿插學(xué)習(xí)的數(shù)電感覺還好些模電搞得都是公式不太容易懂。MSP430需要記憶的知識點比較多多記幾遍??匆恍┲R拓展及相關(guān)類的書籍我相信會慢慢理解掌握它的。MSP430學(xué)習(xí)總結(jié)MSP430學(xué)習(xí)總結(jié)前言這次主要看的資料是MSP430F425型號的與MSP430F169有點區(qū)別但由于MSP430單片機采用模塊化結(jié)構(gòu)在不同型號的單片機中同一種模塊的使用方法和寄存器都是相同的。下面會對它們的功能和區(qū)別加以說明。一、MSP430單片機的特點1、我覺得MSP430最大的特點就是超低功耗430之所以能夠在低功耗的條件下運行主要是由于引入了“時鐘系統(tǒng)”的概念和采用模塊化結(jié)
17、構(gòu)。讓CPU可以間歇性的工作節(jié)省功耗。在MSP430單片機中通過時鐘配置可以產(chǎn)生3種時鐘:MCLK:主時鐘MCLK是專門為CPU運行提供的時鐘配置的越高CPU執(zhí)行的速度就越快。一旦關(guān)閉MCLKECPU就停止工作所以在超低功耗中通過間接開啟MCLK的方式降低功耗。SMCLK:子系統(tǒng)時鐘為單片機內(nèi)部某些高速設(shè)備提供時鐘并且SMCLK是獨立于的關(guān)閉MCLK讓停止工作子系統(tǒng)開啟仍然可以使外設(shè)繼續(xù)工作。ACLK:活動時鐘;一般是由晶振直接產(chǎn)生的低頻時鐘在單片機運行時一般不關(guān)閉和定時器使用間接喚醒CPU。時鐘系統(tǒng)對于3種時鐘不同程度的關(guān)閉就可以進入不同的低功耗模式(低功耗在下面討論)。2、單片機采用模塊化
18、結(jié)構(gòu)每一種模塊都具有獨立而完整的結(jié)構(gòu)這樣就可以單獨開啟或者關(guān)閉某些模塊只需要激活某些使用的模塊以節(jié)省電力。、MSP430單片機的內(nèi)核是16位RISC處理器其運算能力和速度都具有一定的優(yōu)勢。MSP430還有其它的一些優(yōu)勢在這里就不一一列舉了。二、MSP430單片機的內(nèi)部資源1、I/O口寄存器PxIN:PxOUT:PxDIR:PxSET:功能使用總結(jié):以上的4個寄存器是所有I/O都具有的在使用I/O口之前首先要設(shè)置PxDIR對于要使用第二功能的還要設(shè)置PxSETPx口輸入寄存器Px口輸出寄存器Px口方向寄存器0=輸入1=輸出0=普通I/O1=第二Px口第二功能選擇寄存器下面介紹的是430中P1P2
19、口引發(fā)中斷需要設(shè)置的寄存器(MSP430單片機只有P1、P2口能引發(fā)中斷)PxIE:Px口中斷允許寄存器0=不允許0=上升沿1=允許1=下降沿PxIES:Px口中斷沿選擇寄存器PxIFG:Px口中斷標(biāo)志位寄存器0=中斷條件不成立1=中斷條件曾經(jīng)成立(說明:無論中斷是否被允許也不論是否正在執(zhí)行中斷服務(wù)程序只要I/O滿足中斷條件PxIFG的相應(yīng)位就會置1只能通過軟件清除這個可以用來判斷哪一位I/O發(fā)生了中斷也不會漏掉每一次中斷。使用總結(jié):在使用I/O中斷之前需要將I/O設(shè)置成輸入狀態(tài)并允許I/O的中斷。在通過PxSET設(shè)置觸發(fā)方式。程序框架:#include<msp430x16x.hvoid
20、main(void)WDTCTL=WDTPW+WDTHOLD;/停止看門狗/P1.0、P1.1、P1.2設(shè)/主函數(shù)P1DIR&;=(BIT0+BIT1+BIT2);置為輸入P1IES|=BIT0+BIT1+BIT2;置為下降沿中斷/P1.0、P1.1、P1.2設(shè)P1IE|=BIT0+BIT1+BIT2;中斷_EINT();/允許P1.0、P1.1、P1.2/允許總中斷while(1);#pragmavector=P0RT1_VECTOR_interruptvoidP1_ISR(void)斷服務(wù)程序P1_ISRIf(P1IFG&;BIT0)?.?./這里寫P1.0的中斷處理程序/判斷P1.0中斷
21、標(biāo)志/P1口中斷源/聲明一個中If(P1IFG&;BIT1)?./判斷P1.1中斷標(biāo)志?./這里寫P1.1的中斷處理程序If(P1IFG&;BIT0)?.?.P1IFG=0;/判斷P1.2中斷標(biāo)志/這里寫P1.2的中斷處理程序/清除P1所有中斷標(biāo)志位2、低功耗模式MSP430系列單片機具有5種不同深度的低功耗休眠模式。在空閑時通過不同程度的休眠將內(nèi)部各個模塊盡可能的被關(guān)閉從而降低功耗。低功耗模式0(LMP0):在此模式下只有MCLK時鐘被禁止結(jié)果是關(guān)閉CPU和ACLK仍然有效且和ACLK之間的倍頻關(guān)系仍然成立相應(yīng)的模塊也會繼續(xù)工作CPU關(guān)閉后程序不在運行直到被中斷喚醒或者復(fù)位所以進入任何一個低
22、功耗模式之前必須設(shè)置好的中斷條件等待被喚醒否則程序?qū)⒂肋h停止。低功耗模式(LMP):在此模式下不僅MCLK時鐘被禁止倍頻環(huán)路也被關(guān)閉結(jié)果被關(guān)閉仍有效但是和ACLK之間的倍頻關(guān)系不在成立只能作為一個粗略的時鐘來用。低功耗模式(LMP):在此模式下不僅MCLK時鐘被禁止發(fā)生器(數(shù)字時鐘)也被關(guān)閉僅打開倍頻環(huán)路和該模式一般不用建議用更低功耗代替。低功耗模式(LMP):在此模式下只有打開和都被停止該模式下功耗僅有。低功耗模式(LMP):在此模式下和都被停止單片機內(nèi)部所有的模塊都將停止工作只能依靠外部中斷喚醒該模式下功耗僅有。與低功耗相關(guān)的內(nèi)部函數(shù):_low_power_mode_0;或;0_low_p
23、ower_mode_1;或1;1_low_power_mode_2;或2;2_low_power_mode_3;或3;3/進入低功耗模式/進入低功耗模式/進入低功耗模式/進入低功耗模式_low_power_mode_off_on_exit;/退出時喚醒、asicTimer基礎(chǔ)定時器(MSP430F425有而MSP430F169沒有)asicTimer基礎(chǔ)定時器總共有5個控制位1、BTDIV:預(yù)分頻選擇0=無預(yù)分頻寄存器)2、BTSSEL:時鐘源選擇0=ACLK1=(位于BTCTL寄存器)BTDIV時該位無效時鐘選擇為/3、BTHOLD:asicTimer停止0=正常運行于BTCTL寄存器)4、
24、BTIPx:asicTimer中斷頻率選擇(位于BTCTL寄存器)5、BTFREQx:設(shè)置asicTimer為提供的刷新頻率(位于BTCTL寄存器)asicTimer中斷1、BTIE:asicTimer中斷允許位于IE2寄存器)2、BTIFG:asicTimer中斷標(biāo)志位中斷發(fā)生(位于IE2寄存器)下面以一個程序框圖來說明asicTimer和低功耗模式0=無中斷發(fā)生1=0=禁止1=允許(位1=停止運行(位1=256分頻(位于BTCTL/_要求是P1.5接有按鍵(按下為低電平),P2.0輸出至LED,當(dāng)按鍵按下時LED亮按鍵松開滅。傳統(tǒng)的程序可能就是CPU一直對I/O口掃描這樣耗電很大看下面的程
25、序利用asicTimer和低功耗模式來做_/#include<msp430x16x.hvoidmain(void)WDTCTL=WDTPW+WDTHOLD;P1DIR&;=BIT5;P2DIR|=BIT0;/停止看門狗/主函數(shù)/P1.5設(shè)置為輸入/P2.0設(shè)置為輸出BTCTL=BT_ADLY_8;/asicTimer時鐘選為ACLK設(shè)為8毫秒中斷一次IE2|=BTIE;_EINT();/允許asicTimer中斷/允許總中斷while(1);/進入低功耗模式3等待被喚醒/_If(P1IN&;BIT5)=0)P2OUT|=BIT0;elseP2OUT&;=BIT0;/按鍵松開關(guān)閉LED_/
26、按鍵按下點亮LED#pragmavector=BASICTIMER_VECTOR中斷源_interruptvoidBT_ISR(void)/聲明一個中斷服務(wù)程序BT_ISR,8毫秒中斷一次If(P1IN&;BIT5)=0)P2OUT|=BIT0;elseP2OUT&;=BIT0;/按鍵松開關(guān)閉LED/按鍵按下點亮LED/asicTimer_low_power_mode_off_on_exit;/退出時喚醒PU/退出中斷保持休眠狀態(tài)4、16位定時器Timer_A在MSP430單片機中都有一個16位定時器Timer_A(簡稱)用于精確定時、計數(shù)在普通的定時/計數(shù)上還曾加了3路捕獲/比較模塊能夠在C
27、PU不干預(yù)的情況下自動根據(jù)觸發(fā)條件定時器計數(shù)值或自動產(chǎn)生各種輸出波形(如調(diào)制、單穩(wěn)態(tài)脈沖)Timer_A定時器分為兩個部分:主計數(shù)器和比較/捕獲模塊。主計數(shù)器負責(zé)定時計數(shù)。計數(shù)值(寄存器的值)被送到各個比較/捕獲模塊中它們無需CPU干預(yù)的情況下根據(jù)觸發(fā)條件與計數(shù)器的值自動完成某些測量和輸出功能如調(diào)制測量脈寬、周期等應(yīng)用。Timer_A定時器中的主計數(shù)器相關(guān)的控制位都位于寄存器中主計數(shù)器的計數(shù)值存放在寄存器中。每個比較/捕獲模塊還有一個獨立的控制寄存器TACCTLx以及一個比較/捕獲值寄存器TACCRx(x=0、1、2)在一般定時應(yīng)用中TACCRx可以提供額外的定時中斷觸發(fā)條件在輸出模式下TAC
28、CRx用于設(shè)定周期與占空比在捕獲模式下TACCRx存放捕獲結(jié)果。主計數(shù)器相關(guān)控制位TASSELx:Timer_A計數(shù)器的時鐘源選擇(位于TACTL寄存器)TASSEL_0:外部管腳TASSEL_2:SMCLKTASSEL_1:ACLKTASSEL_3:外部管腳(取反)IDx:Timer_A計數(shù)器的預(yù)分頻處理(位于TACTL寄存器)ID_0:無分頻ID_2:4分頻ID_1:2分頻ID_3:8分頻TACLR:Timer_A計數(shù)器清零控制位(位于TACTL寄存器)0=不清零1=清零MCx:Timer_A計數(shù)器的計數(shù)模式(位于TACTL寄存器)MC_0:停止MC_2:連續(xù)曾計數(shù)MC_1:曾計數(shù)MC_3
29、:曾-減計數(shù)(說明:曾計數(shù)就是每個時鐘周期值TAR加1當(dāng)TAR值超過TACCR0寄存器的值時會自動清零并且不存在初值裝載問題當(dāng)TA中斷被允許的時候回引發(fā)中斷;連續(xù)曾計數(shù)就是TAR加1一直加到0xFFFF后清零連續(xù)曾計數(shù)一般在捕獲模式下用的較多曾-減計數(shù)是TAR從0開始曾加到TACCR0然后自動切換到遞減模式減到0后又恢復(fù)遞增從1減到0時產(chǎn)生中斷)TAIFG:Timer_A計數(shù)器溢出標(biāo)志(中斷標(biāo)志)(位于TACTL寄存器)0=未發(fā)生溢出1=曾發(fā)生溢出Timer_A定時器的捕獲模塊在捕獲模式下用某個指定的管腳(TAx管腳)的輸入電平跳變來觸發(fā)捕獲電路;將此刻主計數(shù)器的值自動的保存到相應(yīng)的捕獲值寄存
30、器中此過程無需CPU干預(yù)可用于測頻率、周期占空比等CAP:Timer_A比較/捕獲模塊工作模式選擇(位于TACCTL0/1/2寄存器)0=比較模式1=捕獲模式CCISx:Timer_A捕獲模塊的捕獲源選擇(位于TACCTL0/1/2寄存器)CCIS_0:CCIxA管腳CCIS_2:GNDCCIS_1:CCIxB管腳CCIS_3:VCCCMx:Timer_A捕獲模塊的捕獲觸發(fā)沿選擇(位于TACCTL0/1/2寄存器)CM_0:禁止捕獲CM_2:下降沿CM_1:上升沿CM_3:上升沿活下降沿COV:Timer_A捕獲模塊捕獲溢出標(biāo)志(位于TACCTL0/1/2寄存器)0=未發(fā)生溢出1=發(fā)生了溢出S
31、CS:Timer_A捕獲模塊的同步捕獲控制位(位于TACCTL0/1/2寄存器)0=異步捕獲1=同步捕獲/_要求捕獲3路信號P1.0輸入的方波上升沿捕獲P1.2輸入的方波下降沿捕獲P2.0輸入的方波上下沿捕獲主計數(shù)器用ACLK做時鐘連續(xù)計數(shù)模式_/TACTL|=TASSEL_1+ID_0+MC_2;/主計數(shù)器ACLK做時鐘無分頻連續(xù)計數(shù)模式TACCTL0|=CAP+CCIS_0+CM_1+SCS;/捕獲模式0外部輸入上升沿同步捕獲TACCTL1|=CAP+CCIS_0+CM_2+SCS;/捕獲模式1外部輸入下降沿同步捕獲TACCTL2|=CAP+CCIS_0+CM_3+SCS;/捕獲模式2外部
32、輸入雙沿同步捕獲P1DIR&;=(BIT0+BIT2);P2DIR&;=BIT0;/P1.0與P1.2方向設(shè)為輸入/P2.0方向設(shè)為輸入P1SEL|=(BIT0+BIT2);/將P1.0與P1.2的第二功能激活P2SEL|=BIT0;/將P2.0的第二功能激活Timer_A定時器的比較模塊OUTMODEx:Timer_A比較模塊的輸出模式控制(位于TACCTL0/1/2寄存器)(說明:一共有8種輸出模式在這里不一一列出。)OUT:Timer_A比較模塊的輸出電平控制位(位于TACCTL0/1/2寄存器)模式0:電平輸出Tax管腳和普通I/0口一樣。模式1與模式5:單脈沖輸出可以替代單穩(wěn)態(tài)電路模
33、式3與模式7:輸出。模式與模式:但死區(qū)的輸出。模式:可變頻率輸出移相輸出。Timer_A定時器的中斷TAIFG:Timer_A主計數(shù)器計滿復(fù)位標(biāo)志(位于TACTL寄存器)TAIE:Timer_A主計數(shù)器計滿中斷允許位(位于TACTL寄存器)CCIFG:Timer_A捕獲/比較模塊中斷標(biāo)志(位于TACTL寄存器)CCIE:Timer_A捕獲/比較模塊中斷允許位(位于TACTL寄存器)TAIV:Timer_A中斷向量寄存器Timer_A定時器程序框架TACTL|=TAIE;TACCTL0|=CCIE;TACCTL1|=CCIE;TACCTL2|=CCIE;_EINT();/允許TA溢出中斷/允許T
34、A比較/捕獲模塊0的中斷/允許TA比較/捕獲模塊1的中斷/允許TA比較/捕獲模塊2的中斷/允許總中斷#pragmavector=TIMERA1_VECTOR_interruptvoidTA_ISR(void)Switch(TAIV)case2:的中斷服務(wù)程序./在這里寫比較/捕獲模塊1Break;case4:2的中斷服務(wù)程序Break;case10:.中斷服務(wù)程序Break;/在這里寫TA計數(shù)溢出的./在這里寫比較/捕獲模塊_low_power_mode_off_on_exit;/退出時喚醒U(如果有必要)#pragmavector=TIMERA0_VECTOR_interruptvoidTA
35、CCR0_ISR(void)?序_low_power_mode_off_on_exit;/退出時喚醒U(如果有必要)/在這里寫比較/捕獲模塊0的中斷服務(wù)程說明:對于需要緊急處理的捕獲事件建議使用通道0因為它獨占一個中斷源中斷內(nèi)無需分支響應(yīng)最快。430單片機實驗報告430單片機實驗報告題目430單片機實驗報告信息工程學(xué)院學(xué)院(部)專業(yè)指導(dǎo)教師學(xué)號姓名同組成員_六年五月實驗一一、實驗名稱LED流水燈實驗二、實驗?zāi)康腖ED流水燈實驗1.掌握IAR開發(fā)環(huán)境的使用方法;2.練習(xí)IO端口寄存器的設(shè)置;練習(xí)時鐘部分的配置三、實驗要求1、制作相應(yīng)的外圍電路。要求用單片機的P1口連接8個發(fā)光二級管當(dāng)相應(yīng)的IO口
36、輸出為高電平時發(fā)光二極管發(fā)光。2、配置時鐘部分。啟用單片機內(nèi)部自帶的DCO為系統(tǒng)主時鐘并設(shè)置MCLK的頻率為1.048MHz;選用SMCLK為定時器的時鐘其頻率SMCLK=MCLK;在此基礎(chǔ)上利用定時器每1s產(chǎn)生一次中斷。3、流水燈部分。配置IO口相關(guān)寄存器;開啟定時器中斷在中斷程序內(nèi)實現(xiàn)8個發(fā)光二極管的循環(huán)順序點亮即流水燈功能。四、實驗步驟與內(nèi)容1、建立工程2、編寫程序編譯、運行3、把程序下載到單片機中4、程序代碼:#include<msp430g2452.hinti=0;voidmain(void)WDTCTL=WDTPW+WDTHOLD;/P1SEL|=0x06;P1DIR|=BI
37、T0+BIT6;/P1.0-P1.2outputsP1SEL|=0x00;P1OUT=BIT0;CCR0=20000;CCTL0=CCIE;/StopWDT/P1.1-P1.2optionselect/CCR0toggle,interruptenabled/SMCLK,Contmode,intenabled/EnterLPM0w/interruptTACTL=TASSEL_2+MC0+TACLR;_BIS_SR(LPM0_bits+GIE);/TimerA0interruptserviceroutine#pragmavector=TIMER0_A0_VECTOR_interruptvoidTi
38、mer_A0(void)/CCR0+=65533;/CCR0+=65533;/AddOffsettoCCR0i=i+1;if(i=50)P1OUT=BIT0;P1OUT=BIT6;i=0;五、實驗設(shè)備計算機、IAR-FET集成開發(fā)環(huán)境、MSP430G2553單片機六、問題分析改變延時常數(shù)使兩個發(fā)光二極管閃亮頻率改變;修改程序使發(fā)光二極管流水閃爍。實驗二4_4矩陣鍵盤和數(shù)碼管顯示實驗一、實驗名稱4_4矩陣鍵盤和數(shù)碼管顯示實驗二、實驗?zāi)康恼莆諒?fù)雜C430程序的調(diào)試方法熟練IAR開發(fā)環(huán)境的使用方法;三、實驗要求1、制作相應(yīng)的外圍電路。要求用單片機的P1口連接4_4矩陣鍵盤P2口驅(qū)動一個共陰極的LED
39、八段數(shù)碼管。2、編寫鍵盤掃描程序和顯示程序。要求用IO口的中斷方式來實現(xiàn)對按鍵的檢測利用數(shù)碼管顯示鍵值。四、實驗步驟與內(nèi)容1、建立工程2、編寫程序編譯、運行3、把程序下載到單片機中4、程序代碼:#include<msp430g2553.hunsignedcharkey_val;/存放鍵值;voidctrlkey(unsignedcharsw);/控制鍵盤開關(guān)sw=0關(guān)sw=1開voidinit_keyboard(void)P1DIR=0_0f;/p1.4-p1.7設(shè)置為輸出狀態(tài)P1OUT=0x00;/設(shè)置p1.0-p1.3輸出全部為0P1IES=0_f0;/p1.4-p1.7下降沿觸發(fā)中
40、斷;P1IE=0_f0;/p1.4-p1.7允許中斷;P1IFG=0x00;/中斷標(biāo)志清0;P2SEL=0_00;key_val=0;voidKey_Scan(void)/掃描鍵盤獲得鍵值unsignedcharrow,col,temp1,temp2;unsignedcharkey_table=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15;/設(shè)置鍵盤邏輯鍵值temp1=0x01;for(row=0;row<4;row+)/行掃描;P1OUT=0_0f;/p1.0-p1.3輸出全為1;P1OUT=temp1;/p1.0-p1.3輸出四位中有一個為0;temp1
41、<<=1;/向左移一位;if(P1IN&;0xf0)<0xf0)/是否P1IN的p1.4-p1.7中有一位為0;temp2=0x10;/temp2用于檢測出哪一位為0;for(col=0;col<4;col+)/列檢測;if(P1IN&;temp2)=0x00)key_val=key_tablerow_4+col;/獲取鍵值;temp2<<=1;/temp2左移1位;voiddelay(void)/延時函數(shù)unsignedintx;for(x=12000;x0;x-);voidctrlkey(unsignedcharsw)if(sw=0)P1IE=0;/關(guān)閉
42、端口中斷;elseP1IE=0xf0;/打開端口中斷;voidkey_event/檢測鍵值獲取鍵值;unsignedchartemp;P1OUT=0;/p1out全為0;等待按鍵輸temp=P1IN;if(temp&;0xf0)<0xf0);/如果有鍵按下;delay;Key_Scan;switch(key_val)case0:P2DIR|=0xff;P2OUT=0x3f;break;case1:P2DIR|=0xff;P2OUT=0x06;break;case2:P2DIR|=0xff;P2OUT=0x5b;break;case3:P2DIR|=0xff;P2OUT=0x4f;brea
43、k;case4:P2DIR|=0xff;P2OUT=0x66;break;case5:P2DIR|=0xff;P2OUT=0x6d;break;case6:P2DIR|=0xff;P2OUT=0x7d;break;case7:P2DIR|=0xff;P2OUT=0x07;break;case8:P2DIR|=0xff;P2OUT=0x7f;break;case9:P2DIR|=0xff;P2OUT=0x6f;break;case10:P2DIR|=0xff;P2OUT=0x77;break;case11:P2DIR|=0xff;P2OUT=0x7c;break;case12:P2DIR|=0x
44、ff;P2OUT=0x39;break;case13:P2DIR|=0xff;P2OUT=0x5e;break;case14:P2DIR|=0xff;P2OUT=0x79;break;case15:P2DIR|=0xff;P2OUT=0x71;break;default:break;#pragmavector=PORT1_VECTOR_interruptvoidport1_vector(void)if(P1IFG&;0xf0)!=0x00)key_event;if(key_val!=0)ctrlkey(0);P1IFG=0_00;P1OUT=0_00;voidmainWDTCTL=WDTPW+
45、WDTHOLD;init_keyboard;delay;ctrlkey(1);while(1)key_event;五、實驗設(shè)備計算機、IAR-FET集成開發(fā)環(huán)境、MSP430G2553單片機六、問題分析使用單片機的P1口與矩陣式鍵盤連接時可以將P1口低4位的4條端口線定義為行線P1口高4位的4條端口線定義為列線形成4_4鍵盤可以配置16個按鍵將單片機P2口與七段數(shù)碼管連接當(dāng)按下矩陣鍵盤任意鍵時數(shù)碼管顯示該鍵所在的鍵號。實驗三一、實驗名稱單片機之間的串口通訊二、實驗?zāi)康膯纹瑱C之間的串口通訊掌握對UART模塊按需要進行配置的方法三、實驗要求1、制作相應(yīng)的外圍電路。要求A單片機的P1口連接一4_4矩
46、陣鍵盤B單片機和A機以異步串口進行連接B機的P2口上驅(qū)動一個共陰極的LED八段數(shù)碼管。2、要求A機能夠以IO口中斷的方式讀取鍵值;將A機配置為發(fā)送端波特率為9600bps字符長度為8位1位停止位無奇偶校驗位將讀取的鍵值發(fā)送給B機;配置B機的串口接收模塊和A機匹配;B機以中斷方式接收A機發(fā)送的數(shù)據(jù)獲取鍵值并在數(shù)碼管上顯示鍵值。四、實驗步驟與內(nèi)容1、建立工程2、編寫程序編譯、運行3、把程序下載到單片機中4、程序代碼:(1):發(fā)送#include<msp430G2553.H/unsignedcharkey_table=0,1,2,3,4,5,6,7,8,/9,10,11,12,13,14,15
47、;/設(shè)置鍵盤邏輯鍵值inti=0,a=0;voiddelay(void)/延時函數(shù)unsignedintx,y;for(x=12000;x0;x-)for(y=20;y0;y-)_NOP;_NOP;_NOP;voidmain(void)WDTCTL=WDTPW+WDTHOLD;if(CALBC1_1MHZ=0xFF)erasedwhile(1);DCOCTL=0;/StopWDT/Ifcalibrationconstant/donotload,trapCPU!/SelectlowestDCOxandMODxsettingsBCSCTL1=CALBC1_1MHZ;DCOCTL=CALDCO_1M
48、HZ;P1SEL=BIT1+BIT2;P1SEL2=BIT1+BIT2;UCA0CTL1|=UCSSEL_2;UCA0BR0=104;UCA0BR1=0;UCA0MCTL=UCBRS0;UCA0CTL1&;=UCSWRST;machine_IE2|=UCA0R_IE;interruptP1DIR=0x00;P1IES|=BIT3;P1IE|=BIT3;_EINT;while(1)_NOP;#pragmavector=PORT1_VECTOR_interruptvoidport1_vector(void)while(P1IN&;0x08)=0)UCA0T_BUF=a;/delay;a+;_NOP
49、;_NOP;(2)接收:#include<msp430g2553.hunsignedcharkey_val=16;/SetDCO/P1.1=R_D,P1.2=T_DP1.1=R_D,P1.2=T_DSMCLK1MHz96001MHz9600ModulationUCBRSx=1_InitializeUSCIstate/EnableUSCI_A0R_voidmain(void)WDTCTL=WDTPW+WDTHOLD;P2DIR=0xff;P2OUT=0x6f;P2SEL=0x00;if(CALBC1_1MHZ=0xFF)while(1);DCOCTL=0;settingsBCSCTL1=C
50、ALBC1_1MHZ;DCOCTL=CALDCO_1MHZ;P1SEL=BIT1+BIT2;P1SEL2=BIT1+BIT2;UCA0CTL1|=UCSSEL_2;UCA0BR0=104;UCA0BR1=0;UCA0MCTL=UCBRS0;UCA0CTL1&;=UCSWRST;machine_IE2|=UCA0R_IE;_bis_SR_register(LPM0_bits+GIE);enabled/StopWDT/Ifcalibrationconstanterased/donotload,trapCPU!/SelectlowestDCOxandMODx/SetDCO/P1.1=R_D,P1.2
51、=T_DP1.1=R_D,P1.2=T_DSMCLK1MHz96001MHz9600ModulationUCBRSx=1/_InitializeUSCIstate/EnableUSCI_A0R_interrupt/EnterLPM0,interrupts/EchobackR_edcharacter,confirmT_bufferisreadyfirst#pragmavector=USCIAB0R_VECTOR_interruptvoidUSCI0R_ISR(void)key_val=UCA0R_BUF;switch(key_val)/_case0:P2DIR|=0xff;P2OUT=0xc0;
52、break;case1:P2DIR|=0xff;P2OUT=0xf9;break;case2:P2DIR|=0xff;P2OUT=0xa4;break;case3:P2DIR|=0xff;P2OUT=0xb0;break;case4:P2DIR|=0xff;P2OUT=0x99;break;case5:P2DIR|=0xff;P2OUT=0x92;break;case6:P2DIR|=0xff;P2OUT=0x82;break;case7:P2DIR|=0xff;P2OUT=0xf8;break;case8:P2DIR|=0xff;P2OUT=0x80;break;case9:P2DIR|=0
53、xff;P2OUT=0x90;break;case10:P2DIR|=0xff;P2OUT=0x88;break;case11:P2DIR|=0xff;P2OUT=0x83;break;case12:P2DIR|=0xff;P2OUT=0xc6;break;case13:P2DIR|=0xff;P2OUT=0xa1;break;case14:P2DIR|=0xff;P2OUT=0x86;break;case15:P2DIR|=0xff;P2OUT=0x8e;break;default:break;_/case0:P2DIR|=0xff;P2OUT=0x3f;break;case1:P2DIR|
54、=0xff;P2OUT=0x06;break;case2:P2DIR|=0xff;P2OUT=0x5b;break;case3:P2DIR|=0xff;P2OUT=0x4f;break;case4:P2DIR|=0xff;P2OUT=0x66;break;case5:P2DIR|=0xff;P2OUT=0x6d;break;case6:P2DIR|=0xff;P2OUT=0x7d;break;case7:P2DIR|=0xff;P2OUT=0x07;break;case8:P2DIR|=0xff;P2OUT=0x7f;break;case9:P2DIR|=0xff;P2OUT=0x6f;bre
55、ak;case10:P2DIR|=0xff;P2OUT=0x77;break;case11:P2DIR|=0xff;P2OUT=0x7c;break;case12:P2DIR|=0xff;P2OUT=0x39;break;case13:P2DIR|=0xff;P2OUT=0x5e;break;case14:P2DIR|=0xff;P2OUT=0x79;break;case15:P2DIR|=0xff;P2OUT=0x71;break;default:break;五、實驗設(shè)備計算機、IAR-FET集成開發(fā)環(huán)境、MSP430G2553單片機六、問題分析1.如果MSP430系列單片機內(nèi)沒有通用串行通信模塊該如何實現(xiàn)串行通信功能?答:可以通過軟件實現(xiàn)即
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 糖尿病藥物聯(lián)合用藥
- 確保安全駕駛常規(guī)的關(guān)鍵要點
- 徐濤課件教學(xué)課件
- 3.1.1亞鐵鹽和鐵鹽課件高一上學(xué)期化學(xué)魯科版(2019)必修第一冊
- DB1304T 481-2024芝麻輕簡化栽培技術(shù)規(guī)程
- 初中七年級家長會教案
- 級中 國美食說課稿
- 壺口瀑布說課稿
- 海洋與生命說課稿
- 格林巴利綜合征治療指南
- teach-back課程(健康教育委員會)2015-3
- 貝葉斯決策理論的起源與發(fā)展
- 服務(wù)器運維應(yīng)急預(yù)案
- (新版)研學(xué)旅行指導(dǎo)師認證考試復(fù)習(xí)題庫大全(附答案)
- 螺栓檢測報告新
- 燒傷護理查房小兒燒傷護理查房PPT
- 婦聯(lián)五年工作總結(jié)九篇
- 饑荒游戲修改編程
- 公安數(shù)據(jù)保密協(xié)議
- 【語言學(xué)習(xí)】趣味識字:“問”字的前世今生
- 鐵路混凝土拌和站標(biāo)準(zhǔn)化管理演示
評論
0/150
提交評論