msp430模块程序
更新时间:2024-02-02 20:08:01 阅读量: 教育文库 文档下载
- MSP430端口读取程序推荐度:
- 相关推荐
基础时钟模块应用举例
例1 设MCLK=XT2,SMCLK=DCOCLK,将MCLK 由5.4 输出程序如下: #include
unsigned int i;
WDTCTL = WDTPW + WDTHOLD; //停止看门狗 P5DIR |= 0X10; P5SEL |= 0X10;
BCSCTL1 &= ~XT2OFF; do{
IFG1 &= ~OFIFG; for(i = 0xFF;i>0;i--); }
while((IFG1 & OFIFG) != 0); BCSCTL2 |= SELM1; for(;;); }
例2 设ACLK=MCLK=LFXT1=LF #include
unsigned int i;
WDTCTL = WDTPW + WDTHOLD; //停止看门狗 P5DIR |= 0X10; P5SEL |= 0X10; BCSCTL1 &= XTS; do{
IFG1 &= ~OFIFG; for(i = 0xFF;i>0;i--); }
while((IFG1 & OFIFG) != 0); BCSCTL2 |= SELM1+SELM0; for(;;); }
例3 改变BCSCTL1 中Rsel0,Rsel1,Rsel2 的值测量DCO 频率(默认情况MCLK、 SMCLK 均为DCO 时钟,P1.4 输出ACLK,P2.0 输出SMCLK,P5.4 输出MCLK) #include
WDTCTL=WDTPW+WDTHOLD;//看门狗停止P1DIR=0x10;//p1.4 输出 P1SEL=0x10;//P1.4=SMCLk P2DIR=0x01;//p2.0 输出 P2SEL=0x01;//P2.0=ACLk
P5DIR=0x10;//p5.4 输出 P5SEL=0x10;//P5.4=SMCLk
BCSCTL1 =0x00 ;//xt2off,xts,diva.1,diva.0xt5v,,res3 //BCSCTL1 =0x01; //BCSCTL1 =0x02; //BCSCTL1 =0x03; //BCSCTL1 =0x04; //BCSCTL1 =0x05; //BCSCTL1 =0x06; //BCSCTL2=0x07; for(;;) {__NOP();
//_BIS_SR(CPUOFF);// } }
举例1 使用软件定时周期性取反P2.1 #include
WDTCTl = WDTPW + WDTHOLD; P2DIR |= 0x02; for(;;) {
unsigned int i; i = 50000; do (i--); while (i != 0); } }
举例2 单片机在P3.1 产生方波,并把P3.1 与P1.7 相连,P1.7 接收中断,在中断服 务程序中让P3.3 产生方波。 #include
WDTCTL=WDTPW+WDTHOLD; P3OUT =0x00;//P3 引脚低电平 P3DIR |=0xff;//P3 方向输出 P1OUT=0x00;
P1IES |=0x00;//上升沿触发
P1IFG= 0x00; //因为P1IES 设置会使中断标志置位,故清零。 P1IE |=0xff;// P1 模块中断允许 _EINT();//系统中断允许 int i; for(;;)
{
for(i=1;i<=32000;i++) _NOP();
P3OUT ^=0x02;//P3.1 每隔8000 个机器指令周期产生一次跳变 }}
#pragma vector = PORT1_VECTOR __interrupt void P1_Interrupt(void){ if (P1IFG==0x80) { P1IFG=0x00; P3OUT ^= 0x08; } else P1IFG=0x00; }
#include
WDTCTL = WDT_MDLY_32; IE1 |= WDTIE; P1DIR |=0x01; _EINT(); for(;;) {
_BIS_SR(CPUOff); _NOP(); } }
#pragma vector = WDT_VECTOR __interrupt void watchdog_timer(void) {
P1OUT ^= 0x01; }
例2: 看门狗模式
#include
P3DIR=0XFF; //P3 输出
WDTCTL=WDT_MRST_32; //WDTPW+WDTCNTCL 看门狗32 毫秒 int i;
for(i=0;i<5000;i++) _NOP();
P3OUT ^=0X02; // P3.1 灯亮或灭 for(;;) {
WDTCTL =WDT_MRST_32; //喂狗,看门狗计数器清零即 //WDTPW+WDTCNTCL;
for(i=0;i<=5000;i++) _NOP();
P3OUT ^=0x0c; // P3.2 p3.3 灯亮或灭 } }
例1:
//定时开关P3,即P3 输出取反;定时时间到,进入中断 //ACLK=32768HZ,MCLK=SMCLK=DCOCLK=1.048576M //周期性P3 取反,频率为1.048576M/65536/2=8Hz #include
WDTCTL=WDTPW+WDTHOLD;
TACTL =TASSEL1+TACLR+MC1+TAIE;//SMCL,CLEAR TAR, //TIMER_A 连续计数描 述//
//TA 定时器溢出中断允许 P3DIR=0xFF;
//TACTL |=MC1;//TIMER_A 连续计数描述 _EINT(); for(;;) {
_BIS_SR(CPUOFF); _NOP(); } }
#pragma vector=TIMERA1_VECTOR __interrupt void TIMER_A(void) {
switch(TAIV) {
case 2: break; case 4: break;
case 10: P3OUT^=0xFF; break; } }
例2:
//ACLK=32768HZ,MCLK=SMCLK=DCOCLK=1.048576M //周期性P3.1 取反,频率为1.048576M/65535(TA 中断响应)
//周期性P3.3 取反,频率为20000(捕获中断响应)可以看出:P3.1 闪亮的周期约是P3.3 的3 倍
#include
WDTCTL=WDTPW+WDTHOLD;
TACTL =TASSEL1+ID0+ID1+TACLR+TAIE;//MCLK,8 分频,CLEAR TAR,//TA 定时器溢
出中断允许
CCTL0=CCIE; // CCR0=20000;
TACTL |=MC1;//TIMER_A 增减计数描述 P3DIR=0xFF; P3OUT=0xFF; _EINT(); for(;;) {
_BIS_SR(CPUOFF); _NOP(); } }
#pragma vector=TIMERA1_VECTOR //定时器中断__interrupt void TIMER_A(void) {
switch(TAIV) {
case 2: break; case 4: break;
case 10: P3OUT^=0x02; break; } }
#pragma vector=TIMERA0_VECTOR //当TAR=CCR0 产生中断 __interrupt void TIMER_cc(void) {
P3OUT^=0x08; CCR0+=20000; }
举例: 例1:
//软循环产生方波,从p3.1 输出(闪) //CCI0、CCI1 设置为捕获模式,
//P3.1 与P1.1 和P1.2(即CCI0A、CCI1A)相连,当P3.1 产生沿变化,将产生捕获中 断
//CCI0 中断使得P3.3 闪,CCI1 中断使得P3.2 闪j,k 计算前后两次捕获的时间间隔(结 果K= j/2,why) int i,j,k;
#include
WDTCTL=WDTPW+WDTHOLD;
TACTL =TASSEL1+ID0+ID1+MC1+TACLR;//+TAIE;//MCLK,8 分频,CLEAR TAR,连续
模
式//TA 定时器溢出中断允许
CCTL0=CM0+CM1+SCS+CAP+CCIE; //上下升沿,异步,捕获,捕获中断允许cci0 CCTL1=CM0+SCS+CAP+CCIE; //上升沿,异步,捕获,捕获中断允许cci1 P1DIR=0x00; P1SEL=0xff; P3DIR=0xFF; P3OUT=0x00; _EINT(); for(;;) {
for(i=0;i<10000;i++) _NOP();
P3OUT^=0x02; //产生捕获信号源 } }
#pragma vector=TIMERA1_VECTOR // 定时器中断捕获__interrupt void TIMER_A(void) {
switch(TAIV) {
case 2:P3OUT^=0x04;
j=CCR1-j;//两次上升沿间隔 break;
case 4: break;
case 10: P3OUT^=0x02; break; } }
#pragma vector=TIMERA0_VECTOR __interrupt void TIMER_cc(void) {
P3OUT^=0x08;
k=CCR0-k;//上下升沿间隔 }
例2:
//CCI0、CCI1 设置为比较器模式, //CCR0 捕获产生中断
//CCI0 中断使得P3.3 闪,CCI1 中断使得P3.2 闪 #include
WDTCTL=WDTPW+WDTHOLD;
TACTL =TASSEL1+ID0+ID1+MC1+TACLR;//+TAIE;//MCLK,8 器溢出中断允许
CCTL0=CCIE; //cap=0 比较器模式 CCTL1=CCIE; //cap=0 比较器模式 CCR0=10000; CCR1=30000; P3DIR=0xFF; P3OUT=0x00; _EINT();
分频,CLEAR TAR,连续模式//TA 定时 for(;;) {
// for(i=0;i<10000;i++) _NOP();
// P3OUT^=0x02; //产生捕获信号源 } }
#pragma vector=TIMERA1_VECTOR //定时器比较器中断CCR1=TAR __interrupt void TIMER_A(void) {
switch(TAIV) {
case 2:P3OUT^=0x04;
CCR1+=60000;// 改变比较条件 break;
case 4: break;
case 10: P3OUT^=0x02; break; } }
#pragma vector=TIMERA0_VECTOR __interrupt void TIMER_cc(void) {
P3OUT^=0x08;
CCR0 +=20000;//上下升沿间隔 }
//利用Timer_A 输出周期为512 /32768 = 15.625ms、占空比分别为75%和25%的 PWM 矩形波: #include
WDTCTL = WDTPW +WDTHOLD;
TACTL = TASSEL0 + TACLR; // ACLK, 清除TAR CCTL0=0x00;//默认值,比较器模式 CCTL1=0x00;//默认值,比较器模式 CCR0 = 512-1; // PWM 周期 CCTL1 = OUTMOD_7;
CCR1 = 384; //占空比384/512=0.75
CCTL2 = OUTMOD_7;
CCR2 = 128; //占空比128/512=0.25 P1DIR |= 0x04; // P1.2 输出 P1SEL |= 0x04; // P1.2 TA1 out P2DIR |= 0x01; // P2.0 输出 P2SEL |= 0x01; // P2.0 TA2 out
TACTL |= MC0; // Timer_A 增计数模式 for (;;) {
_BIS_SR(LPM3_bits); // 进入LPM3 _NOP(); } }
7.3.5 应用举例
例1 利用定时器A 输出周期为2ms 的方波,并由端口P3 送出算法:采用定时器A 连 续计数模式。使用在P3 端口每隔1ms 将输出求反。背景条件:DCO 产生的频率为 800KHz。使用800KHz 的SMCLK 作为定时器的时钟源,则定时1ms 的计数值为: 1×0.001/(1/(800×1000)) =800。 例2 Timer_A 实现PWM 举例
例:设ACLK = TACLK = LFXT1 = 32768, MCLK = SMCLK = DCOCLK
= 32×ACLK =1.048576Mhz,利用Timer_A 输出周期为512 /32768 = 15.625ms、占空 比分别为75%和25%的PWM 矩形波: #include
WDTCTL = WDTPW +WDTHOLD; FLL_CTL0 |= XCAP14PF;
TACTL = TASSEL0 + TACLR; // ACLK, 清除TAR CCR0 = 512-1; // PWM 周期 CCTL1 = OUTMOD_7;
CCR1 = 384; //占空比384/512=0.75 CCTL2 = OUTMOD_7;
CCR2 = 128; //占空比128/512=0.25 P1DIR |= 0x04; // P1.2 输出 P1SEL |= 0x04; // P1.2 TA1 P2DIR |= 0x01; // P2.0 输出 P2SEL |= 0x01; // P2.0 TA2
TACTL |= MC0; // Timer_A 增计数模式 for (;;) {
_BIS_SR(LPM3_bits); // 进入LPM3 _NOP(); } }
正在阅读:
msp430模块程序02-02
放鞭炮作文400字02-05
江苏省2018年高考学科基地密卷英语(九) Word版附详细答案11-23
熟语、病句 答案讲解03-17
关于人工智能作文300字07-03
今天我当家作文350字06-20
《建设工程安全管理》项目教学方案04-10
福建工程学院 建筑合同法习题集04-02
第9章 振动学基础答案04-21
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 模块
- 程序
- msp430
- 六年级下册四字词语及解释
- 国家计算机二级考试C语言100套上机题
- 练习题编程答案
- 简阳市解放九义校“养习惯、塑品格”教育活动
- 最新上海第三十五棉纺织厂实习周记原创
- 江苏盐都区义务教育学校教职工积效考核办法
- 煤气鼓风冷凝-—鼓风冷凝工段设计
- 常见文言句式
- 自整理欧姆龙PLC以太网FINSTCP通信例程与操作步骤 - 图文
- 人教部编版七年级语文下册第二单元《写作:学习抒情》写作指导
- 最新整理商业地产租金定价策略与测算方法
- 2018年执业药师继续教育考试试题及答案
- 针对发掘普通高中学生英语学习潜力的研究阶段性总结4(2012.09-2013.02)
- 清华学长考研谈
- 2016注册咨询工程师继续教育PPP政策解析及制度建设试卷及答案119分
- 某公司人力资源结构分析报告
- 2014-2015高中物理新课标选修3-1:单元测评(1)
- 江西美术出版社五年级下册美术教案
- 光电工程(项目)安全预评价报告编制规定(水电规安办121号)
- 2015年12月学考成绩