![430单片机个人总结.doc_第1页](http://file2.renrendoc.com/fileroot_temp3/2021-7/26/5aed7b2b-ad4d-488c-8aa3-76e792a620e7/5aed7b2b-ad4d-488c-8aa3-76e792a620e71.gif)
![430单片机个人总结.doc_第2页](http://file2.renrendoc.com/fileroot_temp3/2021-7/26/5aed7b2b-ad4d-488c-8aa3-76e792a620e7/5aed7b2b-ad4d-488c-8aa3-76e792a620e72.gif)
![430单片机个人总结.doc_第3页](http://file2.renrendoc.com/fileroot_temp3/2021-7/26/5aed7b2b-ad4d-488c-8aa3-76e792a620e7/5aed7b2b-ad4d-488c-8aa3-76e792a620e73.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、430单片机个人总结msp430单片机学习第二周报告总结学生姓名学习自律小时?学习问题或不足?其他建议?CIMADE教改培优班2021-07暑假第二期黄熙班级学号15D102每天自评学习力9小时度?实验涉及寄存器较多项目四依次点亮数码管的每一位通过章节的学习了解数码管工作原理。位选与段选在学习数码管的时候必不可少的概念是位选与段选。所谓位选就是控制哪一个数码管工作;段选就是控制一个数码管的哪一段工作。本实验所用数码管为共阳极段选与位选都为低电平有效。共阴极与共阳极共阳极数码管的8个发光二极管的阳极(二极管正端)连接在一起通常公共阳极接高电平(一般接正电源)其它管脚接段驱动电路的输出端。共阴极数
2、码管的8个发光二极管的阴极(二极管负端)连接在一起通常公共阴极接低电平(一般接地)其它管脚接段驱动电路的输出端。程序实验四的单位数码管实验不需要位选就可以完成。还有就是本程序里采用了C语言里的右移位操作a=b,表示将二进制数a的每一位右移b个位置若a为正数则高位补0若为负则高位补1.项目五四位一体数码管依次显示0至9本实验采用的是动态扫描的方式通过硬件连接和软件编程让四位一体数码管依次显示0至9共十个数字。程序与C相关主要有数组调用的和for循环语句以及涉及到的段选与位选。注意数码管的共阴极共阳极程序略有不同就是开始的输入电平的高低段选时的电平高低。位选无论共阴极还是共阳极都是高电平。模块三基
3、础时钟与低功耗模块实验章节问题:对晶振不了解原理不懂而且涉及寄存器较多。时钟源的配置校准不会。时钟基本知识实验涉及时钟源、寄存器简介1、基础时钟模块包括四个时钟源:(1)LF_T1CLK为低速/高速晶振源通常接32.768KHZ晶振(2)_T2CLK外接标准高速晶振可以接400KHZ16MHZ的时钟信号源通常是接8MHZ。(不是每一型号都有该时钟)(3)DCOCLK内部数控RC振荡器大约在1.1MHZ受温度和电压的影响较大;若外部不接稳定的晶振电路直接由内部时钟工作则会因环境变化而导致性能不稳定。(4)VLOCLK内部低频振荡器12KHZ标准振荡器。注:低频时钟源从LF_T1和VLO中选一个高
4、频时钟源只有DCO一个。MCLK和SMCLK可以从低频和高频中选一个而ACLK只能选择低频。2、三种时钟信号可被CPU和外设所使用:(1)ACLK:辅助时钟通常由LF_T1CLK或VLOCLK作为时钟源经1248分频得到;分频系数由DIVA决定。(2)MCLK:主时钟主要用于CPU和系统它可以通过软件从四个时钟源选择经1248分频后得到;分频系数由DIVM决定。(3)SMCLK:子系统时钟它也可以通过软件从四个时钟源选择经1248分频后得到;分频系数由DIVS决定。寄存器DCOCTL控制寄存器BCSCTL1地址为57H初始值为84H(BasicClockSystemControlRegiste
5、r1)BCSCTL2地址为58H初始值为00HBCSCTL3寄存器_bis_SR_register(SCG1+SCG0);这句话表示关闭DCO将SR中的位置零在低功耗模式下运行。此类语句较为复杂应注意。PWM波形输出实验PWM(PulseWidthModulation)控制脉冲宽度调制技术通过对一系列脉冲的宽度进行调制来等效地获得所需要波形(含形状和幅值)。程序#include<msp430g2553.hvoidTimer_A0_initTACTL=TASSEL_2+MC_1+TACLR;/Timer_A0选择子系统时钟SMCLK增计数模式TACTL寄存器计数器清零TACCTL1=OUT
6、MOD_7;/选择模式7PWM输出功能。TACCR0=8000;/设置TACCR0为8000TACCR1=1000;/设置TACCR1的初始值为1000voidmain(void)WDTCTL=WDTPW|WDTHOLD;/关闭开门狗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中断下降沿触发P1REN|=0x08;/
7、P1.3上拉电阻使能P1IFG&;=0x08;/清除标志位Timer_A0_init;/调用voidTimer_A0_init_EINT;/全局中断使能#pragmavector=PORT1_VECTOR/#pragma预处理指令指明引起中断的中断向量类型_interruptvoidPORT1(void)/中断处理函数P1OUT=BIT0;/P1.0电压翻转TACCR1+=1000;/TACCR1=TACCR1+1000if(TACCR18000)/如果TACCR18000TACCR1=1000;/重新赋值TACCR1=1000P1IFG&;=0x08;/清除标志位本本实验需要示波器运行完程序
8、没有得到什么有价值的东西不能帮助很好的理解程序。结果只有按键可以控制P1.0的亮灭看不到波形的改变。项目六PWM脉冲宽度调制运用相关知识1.脉宽调制(PWM)基本原理.2.用Timer_A比较模块的模式7(OUTMOD_7)输出PWM波.(前面模块讲的有所以先看一下前面的知识还是有必要的。)#include“msp430g2553.h”voidTimer_A0_initTA0CTL=TASSEL_2+TACLR+MC_1;/Timer_A计数器的时钟源选择辅助时钟SMCLK选择增计数模式TA0CCTL1=OUTMOD_7;/选择比较模式7TA0CCR0=8000;/设置TA0CCR0初始值为8
9、000TA0CCR1=1000;/设置TA0CCR1初始值为1000(CCR1/CCR0)代表占空比voidmain(void)WDTCTL=WDTPW+WDTHOLD;/关闭看门狗P1DIR|=BIT2+BIT6;/设置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输出方波信号。实验结果:通过按键控制实现外部LED2逐渐变量后突然变暗。模块六ADC10此章节用的知识主要是模电数电转换涉及寄存器较多。感觉要学这一章节首先要弄明白这个图图6.2.2采样/转换时间(1)设置采样输入信号源即SHI信号
12、源通过采样输入信号源选择控制位SHSx位来选择包括如下:ADC10SC位(采样转换控制位)Timer_AOutputUnit1Timer_AOutputUnit0Timer_AOutputUnit2在采样输入信号SHI产生上升沿时触发内部的采样定时器然后由定时器产生控制采样时序及转换开始的采样定时信号SCON启动一次采样周期。SHI信号源的极性可以通过采样输入信号反向控制位ISSH来切换。(2)设置采样保持时间即采样周期。通过SHTx位选择采样周期tsle选择包括如下:4个ADC10CLK周期8个ADC10CLK周期16个ADC10CLK周期64个ADC10CLK周期模拟信号和数字信号的主要区
13、别是数字信号在时间和幅值上是离散的模拟信号在时间和幅值上是连续变化的模拟信号可以通过模拟信号-数字信号转换器即A/D转化为数字信号。模拟信号-数字信号转换器的采样部分可以形象的看做一个开关开关经过一段时间闭合一次在经过一段时间断开如此循环。(这些实际是由采样定时信号SCON控制完成。)这样经过开关的信号已经由连续的信号变为不连续的即离散的信号但还不是严格意义上的数字信号再经过量化、编码就成为数字信号。开关一次闭合的时间就叫做采样保持时间。在选择的采样周期与ADC10CLK同步后采样定时器设置SCON为高(3)采样完成后SCON由高到低变化时控制模数转换开始然后需要13个ADC10CLK的时间进
14、行转化。如图6.2.2(4)最小采样保持时间采样保持时间与ADC12模块的等效输入电路有关。从ADC10模块输入看ADC内部等效为一个电阻(最大2K)与一个电容(最大20pf)相串联。这个内部RC常数直接影响着最小的采样保持时间参数。所以,在采样转换中有一个最小采样保持时间值概念。当SCON=0时所有的输入为高阻态。当SCON=1时在采样时间tsle期间被选择的输入相当于一个RC低通滤波器如图6.2.3。为达到10位的转换精度电容C1的电压必须得充到源电压VS的1/2LSB范围内。ADC10通道采样模式具体四种采样方式之间的区别还没搞懂。第一个实验用ADC10实现内部温度采样准确温度还没能够准
15、确的显示出来。本周总结体会:MSP430的功能非常强大其内部的寄存器非常多关系也比较复杂对于初学者往往有无从下手的感觉。就像老师这周布置的任务MCU-AD-SIO-PWM,老师说过后就开始看资料从PWM开始往后进行直接看简直跟看天书一般不过还是坚持着翻了一遍看着发现有些知识寄存器都没见到过原来用到了计时器计数模块的知识于是又开始往前翻从前往后看。看的还不深入好多点还不明白。书读百遍其义自现。只是才开始学习而已总之不能放弃。毕竟大一知识欠缺并且才开始了解单片机。相关知识链接C语言、模电、数电单片机基础。C语言循环语句用的比较多模电数电知识点应用相对应用比较零碎用老师说的方法遇到问题看其相关可是课
16、本上的知识点前后相关我感觉非零基础就可以直接穿插学习的数电感觉还好些模电搞得都是公式不太容易懂。MSP430需要记忆的知识点比较多多记几遍。看一些知识拓展及相关类的书籍我相信会慢慢理解掌握它的。MSP430学习总结MSP430学习总结前言这次主要看的资料是MSP430F425型号的与MSP430F169有点区别但由于MSP430单片机采用模块化结构在不同型号的单片机中同一种模块的使用方法和寄存器都是相同的。下面会对它们的功能和区别加以说明。一、MSP430单片机的特点1、我觉得MSP430最大的特点就是超低功耗430之所以能够在低功耗的条件下运行主要是由于引入了“时钟系统”的概念和采用模块化结
17、构。让CPU可以间歇性的工作节省功耗。在MSP430单片机中通过时钟配置可以产生3种时钟:MCLK:主时钟MCLK是专门为CPU运行提供的时钟配置的越高CPU执行的速度就越快。一旦关闭MCLKECPU就停止工作所以在超低功耗中通过间接开启MCLK的方式降低功耗。SMCLK:子系统时钟为单片机内部某些高速设备提供时钟并且SMCLK是独立于的关闭MCLK让停止工作子系统开启仍然可以使外设继续工作。ACLK:活动时钟;一般是由晶振直接产生的低频时钟在单片机运行时一般不关闭和定时器使用间接唤醒CPU。时钟系统对于3种时钟不同程度的关闭就可以进入不同的低功耗模式(低功耗在下面讨论)。2、单片机采用模块化
18、结构每一种模块都具有独立而完整的结构这样就可以单独开启或者关闭某些模块只需要激活某些使用的模块以节省电力。、MSP430单片机的内核是16位RISC处理器其运算能力和速度都具有一定的优势。MSP430还有其它的一些优势在这里就不一一列举了。二、MSP430单片机的内部资源1、I/O口寄存器PxIN:PxOUT:PxDIR:PxSET:功能使用总结:以上的4个寄存器是所有I/O都具有的在使用I/O口之前首先要设置PxDIR对于要使用第二功能的还要设置PxSETPx口输入寄存器Px口输出寄存器Px口方向寄存器0=输入1=输出0=普通I/O1=第二Px口第二功能选择寄存器下面介绍的是430中P1P2
19、口引发中断需要设置的寄存器(MSP430单片机只有P1、P2口能引发中断)PxIE:Px口中断允许寄存器0=不允许0=上升沿1=允许1=下降沿PxIES:Px口中断沿选择寄存器PxIFG:Px口中断标志位寄存器0=中断条件不成立1=中断条件曾经成立(说明:无论中断是否被允许也不论是否正在执行中断服务程序只要I/O满足中断条件PxIFG的相应位就会置1只能通过软件清除这个可以用来判断哪一位I/O发生了中断也不会漏掉每一次中断。使用总结:在使用I/O中断之前需要将I/O设置成输入状态并允许I/O的中断。在通过PxSET设置触发方式。程序框架:#include<msp430x16x.hvoid
20、main(void)WDTCTL=WDTPW+WDTHOLD;/停止看门狗/P1.0、P1.1、P1.2设/主函数P1DIR&;=(BIT0+BIT1+BIT2);置为输入P1IES|=BIT0+BIT1+BIT2;置为下降沿中断/P1.0、P1.1、P1.2设P1IE|=BIT0+BIT1+BIT2;中断_EINT();/允许P1.0、P1.1、P1.2/允许总中断while(1);#pragmavector=P0RT1_VECTOR_interruptvoidP1_ISR(void)断服务程序P1_ISRIf(P1IFG&;BIT0)?.?./这里写P1.0的中断处理程序/判断P1.0中断
21、标志/P1口中断源/声明一个中If(P1IFG&;BIT1)?./判断P1.1中断标志?./这里写P1.1的中断处理程序If(P1IFG&;BIT0)?.?.P1IFG=0;/判断P1.2中断标志/这里写P1.2的中断处理程序/清除P1所有中断标志位2、低功耗模式MSP430系列单片机具有5种不同深度的低功耗休眠模式。在空闲时通过不同程度的休眠将内部各个模块尽可能的被关闭从而降低功耗。低功耗模式0(LMP0):在此模式下只有MCLK时钟被禁止结果是关闭CPU和ACLK仍然有效且和ACLK之间的倍频关系仍然成立相应的模块也会继续工作CPU关闭后程序不在运行直到被中断唤醒或者复位所以进入任何一个低
22、功耗模式之前必须设置好的中断条件等待被唤醒否则程序将永远停止。低功耗模式(LMP):在此模式下不仅MCLK时钟被禁止倍频环路也被关闭结果被关闭仍有效但是和ACLK之间的倍频关系不在成立只能作为一个粗略的时钟来用。低功耗模式(LMP):在此模式下不仅MCLK时钟被禁止发生器(数字时钟)也被关闭仅打开倍频环路和该模式一般不用建议用更低功耗代替。低功耗模式(LMP):在此模式下只有打开和都被停止该模式下功耗仅有。低功耗模式(LMP):在此模式下和都被停止单片机内部所有的模块都将停止工作只能依靠外部中断唤醒该模式下功耗仅有。与低功耗相关的内部函数:_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基础定时器(MSP430F425有而MSP430F169没有)asicTimer基础定时器总共有5个控制位1、BTDIV:预分频选择0=无预分频寄存器)2、BTSSEL:时钟源选择0=ACLK1=(位于BTCTL寄存器)BTDIV时该位无效时钟选择为/3、BTHOLD:asicTimer停止0=正常运行于BTCTL寄存器)4、
24、BTIPx:asicTimer中断频率选择(位于BTCTL寄存器)5、BTFREQx:设置asicTimer为提供的刷新频率(位于BTCTL寄存器)asicTimer中断1、BTIE:asicTimer中断允许位于IE2寄存器)2、BTIFG:asicTimer中断标志位中断发生(位于IE2寄存器)下面以一个程序框图来说明asicTimer和低功耗模式0=无中断发生1=0=禁止1=允许(位1=停止运行(位1=256分频(位于BTCTL/_要求是P1.5接有按键(按下为低电平),P2.0输出至LED,当按键按下时LED亮按键松开灭。传统的程序可能就是CPU一直对I/O口扫描这样耗电很大看下面的程
25、序利用asicTimer和低功耗模式来做_/#include<msp430x16x.hvoidmain(void)WDTCTL=WDTPW+WDTHOLD;P1DIR&;=BIT5;P2DIR|=BIT0;/停止看门狗/主函数/P1.5设置为输入/P2.0设置为输出BTCTL=BT_ADLY_8;/asicTimer时钟选为ACLK设为8毫秒中断一次IE2|=BTIE;_EINT();/允许asicTimer中断/允许总中断while(1);/进入低功耗模式3等待被唤醒/_If(P1IN&;BIT5)=0)P2OUT|=BIT0;elseP2OUT&;=BIT0;/按键松开关闭LED_/
26、按键按下点亮LED#pragmavector=BASICTIMER_VECTOR中断源_interruptvoidBT_ISR(void)/声明一个中断服务程序BT_ISR,8毫秒中断一次If(P1IN&;BIT5)=0)P2OUT|=BIT0;elseP2OUT&;=BIT0;/按键松开关闭LED/按键按下点亮LED/asicTimer_low_power_mode_off_on_exit;/退出时唤醒PU/退出中断保持休眠状态4、16位定时器Timer_A在MSP430单片机中都有一个16位定时器Timer_A(简称)用于精确定时、计数在普通的定时/计数上还曾加了3路捕获/比较模块能够在C
27、PU不干预的情况下自动根据触发条件定时器计数值或自动产生各种输出波形(如调制、单稳态脉冲)Timer_A定时器分为两个部分:主计数器和比较/捕获模块。主计数器负责定时计数。计数值(寄存器的值)被送到各个比较/捕获模块中它们无需CPU干预的情况下根据触发条件与计数器的值自动完成某些测量和输出功能如调制测量脉宽、周期等应用。Timer_A定时器中的主计数器相关的控制位都位于寄存器中主计数器的计数值存放在寄存器中。每个比较/捕获模块还有一个独立的控制寄存器TACCTLx以及一个比较/捕获值寄存器TACCRx(x=0、1、2)在一般定时应用中TACCRx可以提供额外的定时中断触发条件在输出模式下TAC
28、CRx用于设定周期与占空比在捕获模式下TACCRx存放捕获结果。主计数器相关控制位TASSELx:Timer_A计数器的时钟源选择(位于TACTL寄存器)TASSEL_0:外部管脚TASSEL_2:SMCLKTASSEL_1:ACLKTASSEL_3:外部管脚(取反)IDx:Timer_A计数器的预分频处理(位于TACTL寄存器)ID_0:无分频ID_2:4分频ID_1:2分频ID_3:8分频TACLR:Timer_A计数器清零控制位(位于TACTL寄存器)0=不清零1=清零MCx:Timer_A计数器的计数模式(位于TACTL寄存器)MC_0:停止MC_2:连续曾计数MC_1:曾计数MC_3
29、:曾-减计数(说明:曾计数就是每个时钟周期值TAR加1当TAR值超过TACCR0寄存器的值时会自动清零并且不存在初值装载问题当TA中断被允许的时候回引发中断;连续曾计数就是TAR加1一直加到0xFFFF后清零连续曾计数一般在捕获模式下用的较多曾-减计数是TAR从0开始曾加到TACCR0然后自动切换到递减模式减到0后又恢复递增从1减到0时产生中断)TAIFG:Timer_A计数器溢出标志(中断标志)(位于TACTL寄存器)0=未发生溢出1=曾发生溢出Timer_A定时器的捕获模块在捕获模式下用某个指定的管脚(TAx管脚)的输入电平跳变来触发捕获电路;将此刻主计数器的值自动的保存到相应的捕获值寄存
30、器中此过程无需CPU干预可用于测频率、周期占空比等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捕获模块的捕获触发沿选择(位于TACCTL0/1/2寄存器)CM_0:禁止捕获CM_2:下降沿CM_1:上升沿CM_3:上升沿活下降沿COV:Timer_A捕获模块捕获溢出标志(位于TACCTL0/1/2寄存器)0=未发生溢出1=发生了溢出S
31、CS:Timer_A捕获模块的同步捕获控制位(位于TACCTL0/1/2寄存器)0=异步捕获1=同步捕获/_要求捕获3路信号P1.0输入的方波上升沿捕获P1.2输入的方波下降沿捕获P2.0输入的方波上下沿捕获主计数器用ACLK做时钟连续计数模式_/TACTL|=TASSEL_1+ID_0+MC_2;/主计数器ACLK做时钟无分频连续计数模式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方向设为输入/P2.0方向设为输入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:单脉冲输出可以替代单稳态电路模
33、式3与模式7:输出。模式与模式:但死区的输出。模式:可变频率输出移相输出。Timer_A定时器的中断TAIFG:Timer_A主计数器计满复位标志(位于TACTL寄存器)TAIE:Timer_A主计数器计满中断允许位(位于TACTL寄存器)CCIFG:Timer_A捕获/比较模块中断标志(位于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:的中断服务程序./在这里写比较/捕获模块1Break;case4:2的中断服务程序Break;case10:.中断服务程序Break;/在这里写TA计数溢出的./在这里写比较/捕获模块_low_power_mode_off_on_exit;/退出时唤醒U(如果有必要)#pragmavector=TIMERA0_VECTOR_interruptvoidTA
35、CCR0_ISR(void)?序_low_power_mode_off_on_exit;/退出时唤醒U(如果有必要)/在这里写比较/捕获模块0的中断服务程说明:对于需要紧急处理的捕获事件建议使用通道0因为它独占一个中断源中断内无需分支响应最快。430单片机实验报告430单片机实验报告题目430单片机实验报告信息工程学院学院(部)专业指导教师学号姓名同组成员_六年五月实验一一、实验名称LED流水灯实验二、实验目的LED流水灯实验1.掌握IAR开发环境的使用方法;2.练习IO端口寄存器的设置;练习时钟部分的配置三、实验要求1、制作相应的外围电路。要求用单片机的P1口连接8个发光二级管当相应的IO口
36、输出为高电平时发光二极管发光。2、配置时钟部分。启用单片机内部自带的DCO为系统主时钟并设置MCLK的频率为1.048MHz;选用SMCLK为定时器的时钟其频率SMCLK=MCLK;在此基础上利用定时器每1s产生一次中断。3、流水灯部分。配置IO口相关寄存器;开启定时器中断在中断程序内实现8个发光二极管的循环顺序点亮即流水灯功能。四、实验步骤与内容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;五、实验设备计算机、IAR-FET集成开发环境、MSP430G2553单片机六、问题分析改变延时常数使两个发光二极管闪亮频率改变;修改程序使发光二极管流水闪烁。实验二4_4矩阵键盘和数码管显示实验一、实验名称4_4矩阵键盘和数码管显示实验二、实验目的掌握复杂C430程序的调试方法熟练IAR开发环境的使用方法;三、实验要求1、制作相应的外围电路。要求用单片机的P1口连接4_4矩阵键盘P2口驱动一个共阴极的LED
39、八段数码管。2、编写键盘扫描程序和显示程序。要求用IO口的中断方式来实现对按键的检测利用数码管显示键值。四、实验步骤与内容1、建立工程2、编写程序编译、运行3、把程序下载到单片机中4、程序代码:#include<msp430g2553.hunsignedcharkey_val;/存放键值;voidctrlkey(unsignedcharsw);/控制键盘开关sw=0关sw=1开voidinit_keyboard(void)P1DIR=0_0f;/p1.4-p1.7设置为输出状态P1OUT=0x00;/设置p1.0-p1.3输出全部为0P1IES=0_f0;/p1.4-p1.7下降沿触发中
40、断;P1IE=0_f0;/p1.4-p1.7允许中断;P1IFG=0x00;/中断标志清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;/设置键盘逻辑键值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)/延时函数unsignedintx;for(x=12000;x0;x-);voidctrlkey(unsignedcharsw)if(sw=0)P1IE=0;/关闭
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;五、实验设备计算机、IAR-FET集成开发环境、MSP430G2553单片机六、问题分析使用单片机的P1口与矩阵式键盘连接时可以将P1口低4位的4条端口线定义为行线P1口高4位的4条端口线定义为列线形成4_4键盘可以配置16个按键将单片机P2口与七段数码管连接当按下矩阵键盘任意键时数码管显示该键所在的键号。实验三一、实验名称单片机之间的串口通讯二、实验目的单片机之间的串口通讯掌握对UART模块按需要进行配置的方法三、实验要求1、制作相应的外围电路。要求A单片机的P1口连接一4_4矩
46、阵键盘B单片机和A机以异步串口进行连接B机的P2口上驱动一个共阴极的LED八段数码管。2、要求A机能够以IO口中断的方式读取键值;将A机配置为发送端波特率为9600bps字符长度为8位1位停止位无奇偶校验位将读取的键值发送给B机;配置B机的串口接收模块和A机匹配;B机以中断方式接收A机发送的数据获取键值并在数码管上显示键值。四、实验步骤与内容1、建立工程2、编写程序编译、运行3、把程序下载到单片机中4、程序代码:(1):发送#include<msp430G2553.H/unsignedcharkey_table=0,1,2,3,4,5,6,7,8,/9,10,11,12,13,14,15
47、;/设置键盘逻辑键值inti=0,a=0;voiddelay(void)/延时函数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;五、实验设备计算机、IAR-FET集成开发环境、MSP430G2553单片机六、问题分析1.如果MSP430系列单片机内没有通用串行通信模块该如何实现串行通信功能?答:可以通过软件实现即
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 轮岗交流申请书
- 价格鉴定申请书
- 质量保证金退还申请书
- 铁路职工调动申请书
- 申请书进学生会
- 某保税区鸭子冰模项目立项申请报告(总投资14710万元)
- 中国压片机异形冲模项目投资可行性研究报告
- 2025年度汽车品牌形象大使代言合同
- 个人宅基地申请书
- 装璜三角铁行业深度研究报告
- 统编版小学语文五年级下册第四单元解读与大单元设计思路
- 猫狗创业计划书
- 复产复工试题含答案
- 湖南省长沙市2023-2024学年八年级下学期入学考试英语试卷(附答案)
- 部编版语文三年级下册第六单元大单元整体作业设计
- 售后服务经理的竞聘演讲
- 临床医技科室年度运营发展报告
- 慢加急性肝衰竭护理查房课件
- 文件丢失应急预案
- 从建设和谐社会角度思考治超限载(十)
- 幼儿园小班开学家长会课件
评论
0/150
提交评论