问题不大,挺麻烦,开始的三行都是赋值语句,第三行的话,把0x2E装换为二进制00101110,代码太不全了,那些数组的只有个名称,应该是把某位置为1或者0,一般情况下1为开,0为关,下面的TxBuf的代表某个标志位吧,下面几句意思都差不多,拿TxBuf[0]=0x02;做例子,意思就是TxBuf[0]这个标志位把倒数第二位置为1(0000 0010),下面的依次类推!
在MSP430F149中TBCTL表示定时器B的控制寄存器。MCx是该寄存器的第5-4位,是定时器B的工作模式控制位,表示定时器的工作方式。
在头文件中
#define MC_0 (00x10u) / Timer A mode control: 0 - Stop /
这是一个宏定义,MC_0的值即为:00x10u,它是一个无符号乘法运算,结果就是为0,即MC_0的值实际为:0x00(因为这个值比较特殊,所以现用MC_2举例)如果是#define MC_2 (20x10u) ,则MC_2=0x20,二进制为:0010 0000,正好第5位为1。
TBCTL & MC_0 是TBCTL与MC_0按位相与的运算,其作用就是判断MCx(TBCTL第5位和第4位的值)是否为0。
unsigned int i=0; //声明数据类型此句放到最上面,声明为全局变量,否则在中断中无法使用
430的中断函数在IAR中这样写,不知道你用的什么编译器
#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A (void) //定时器A的中断函数
修改后源代码:
#include <msp430x14xh> //声明库文件
unsigned int i=0; //声明数据类型
void main(void)
{
int shi,ge,m;
unsigned char seg[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
//共阳数码管字型码数组
WDTCTL = WDTPW + WDTHOLD; //关看门狗
P1DIR=0XFF;
P2DIR=0XFF;
P2SEL=0X00;
P1SEL=0X00;
TACTL=TASSEL0+TACLR;//aclk辅助时钟
CCTL0 = CCIE; //使能定时器A捕捉与中断功能,CCIE=0x0010
CCR0 =32768; // 设置计数器CCR0初值
TACTL |= MC0; //设置定时器工作模式为加计数到CCR0初值
while(1)//没有循环体的无限次while循环
{
shi=i/10;
ge=i%10;
P1OUT=0x80;
P2OUT=seg[ge];
for(m=0;m<1000;m++);
P1OUT=0x40;
P2OUT=seg[shi];
for(m=0;m<1000;m++);
}
}
#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A (void) //定时器A的中断函数
{
if(i<100)
i++;
else
i=0;
}
MSP430用IAREmbeddedWorkbench软件编写程序和编译代码。
MSP430单片机称之为混合信号处理器,是由于其针对实际应用需求,将多个不同功能的模拟电路、数字电路模块和微处理器集成在一个芯片上,以提供“单片机”解决方案。该系列单片机多应用于需要电池供电的便携式仪器仪表中。
扩展资料:
MSP430系列部分产品具有闪存,在系统设计、开发、调试和实际应用中具有明显优势。TI公司引入了具有闪存和JTAG边界扫描技术的廉价开发工具MSP-Fet430x110,并将国际先进的JTAG技术和Flash在线编程技术引入到MSP430中。
这种将Flash技术与FET开发工具相结合,具有方便、便宜、实用等优点,为用户提供了更理想的原型开发方式。
以上就是关于MSP430AD转换实验帮忙解释下面程序,尽可能每句都解释全部的内容,包括:MSP430AD转换实验帮忙解释下面程序,尽可能每句都解释、msp430使用、麻烦把msp430单片机程序修改一下。。。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)