历史上的今天
今天是:2025年03月17日(星期一)
2020年03月17日 | MSP430F149按键中断寄存器配置
2020-03-17 来源:eefocus
P20~P23为LED,P11为按键。按下为低电平。
使用中断函数按下一次按键则LED状态反转一次。
#include "io430.h"
#include "in430.h"
void select_xt2(void){
unsigned char i;
/*------选择系统主时钟为8MHz-------*/
BCSCTL1 &= ~XT2OFF;
do{
IFG1 &= ~OFIFG; //清除晶振失败标志
for (i = 0xFF; i > 0; i--); //等待8MHz晶体起振
}while ((IFG1 & OFIFG));
BCSCTL2 |= SELM_2 + SELS ; //MCLK和SMCLK选择高频晶振
}
void main()
{
// Stop watchdog timer to prevent time out reset
WDTCTL = WDTPW + WDTHOLD;
P1DIR = 0XFD; //P1 in or out
P1IE = 0X02; //开启P1中断
P1IES = 0X02; //中断触发方式
P1IFG = 0X00; //中断标志清零
P2DIR = 0XFF;
P2OUT = 0XFF;
_EINT();
}
#pragma vector = PORT1_VECTOR
__interrupt void PORT1_ISR(void)
{
__delay_cycles(50000);
if((P1IN&0X02) == 0)
P2OUT = ~P2OUT;
__delay_cycles(50000);
}
其中,配置P1端口的中断时要用到的寄存器有:
P1IE,中断使能寄存器,只使能P11的中断:0000,0010 = 0X02
P1IES,中断触发选择寄存器,0上升沿,1下降沿,0000,0010=0X02
P1IFG,中断标志寄存器,清零,0X00
一定要开启全部中断!__EINT();
中断响应函数定义为统一格式:
#pragma vector = PORT1_VECTOR
__interrupt void PORT1_ISR(void)
其中,PORT1_VECTOR为头文件中定义了的
下一篇:MSP432P401R时钟入门
史海拾趣
|
本信息来自合作QQ群:电子工程师技术交流(12425841) 群主在坛子ID:Kata 麻烦推荐个运放,能测出1mV左右电压,失真比较小 用OP07可以不? … 查看全部问答> |
|
用keil编码1114的i2c,我在设置了编译优化选项之后出现了巨大的问题。索性,在取消掉所有的优化选项后i2c通信已经正常。 可惜结果仍然不正确,我就跟代码。这时候才发现一个无法理解的问题。我在funcA()里调用funcB()时传入一个静态myVar ...… 查看全部问答> |
|
如题,公司用的是ANTDATA公司出的DTGS-800模块,虽然也带有文档说明,但我觉得不够详细,所以特来发帖提问,希望大家踊跃发言,问题如下: 1、读取短信的时候,怎样才能不改变短信的状态呢?例如,执行了以下AT命令 AT+UGSM=1 返回OK(DTGS-800支 ...… 查看全部问答> |
|
求助:PWM输出8.2KHZ1:1的方波,为什么在4.3K有个的很强频率分量 设置如下: unsigned short pwmizhouqi=256; LPC_TMR16B1->TCR = 0; LPC_SYSCON->SYSAHBCLKCTRL |= (1PIO1_9 = 0X01; LPC_TMR16B1->MR0 = pwmizhouqi/2; LPC ...… 查看全部问答> |
|
原帖不能编辑了,就新开一帖在这里,望斑竹谅解 目前为止,基于launchpad和nrf24l01的单向收发已经实现,程序在下面放出,还有很多要改进的,仅供参考。欢迎高手拍砖。 学习经历: 1.收到板子后查了下资料,发现很丰富啊,于是 ...… 查看全部问答> |
|
我用的是MPLAB ICE和PICC编译PIC16F722,之前编译什么的都没问题,重装系统后再安装后就再也编译不成功了,提示No installed compiler driver supports device 16F722。 编译PIC16F505没有问题。每次点Project-Select Language Toolsuite后HI-TECH ...… 查看全部问答> |




