msp430单片机用什么软件下载程序?
我可以告诉你方法,但具体做还要靠你自己。
430单片机的一个特点就是寄存器特别多,因此一开始一定要学会看每个寄存器的含义以及他们控制什么功能。
并且每个不同的模块都有自己相应的寄存器,你可以根据控制寄存器来选择自己想要实现的功能。
你说的看不懂很可能就是因为程序中各种工作方式和端口的定义都是以寄存器关键字的方式实现的。
当你熟悉它的这种编程模式的话,就会感觉很好用。
这里有个小程序你可以参考下,这是个通信程序,主要看它的寄存器定义的特点。
#includeunsigned char temp;unsigned int i,left,right,total;unsigned char timeflag,lowbits,highbits;void main(){ WDTCTL=WDTPW+WDTHOLD; //关闭看门狗,一定要有,否则程序会有意想不到的问题BCSCTL1=0x00; //寄存器清零,XT2振荡器开启,LFTX1为低频,ACLK分频因子为1BCSCTL2=0x00;do {IFG1 &= ~OFIFG; //Clear OSCFault flagfor (i=0xFF;i>0;i--); //Time for flag to set}while((IFG1&OFIFG)); //OSCFault flag still set?BCSCTL2=SELM1+SELS; //时钟选择P3SEL=0x30; //端口功能选择P3DIR=0x10; //端口输入输出方向选择P4SEL=0x06;P4DIR=0x00; //P4.1,P4.2为捕获输入TACTL=TACLR+TASSEL_1+MC_1; //用于中断计时,使用辅助时钟CCTL0=CCIE;CCR0=32768;TBCTL=TBCLR+TBSSEL_2+MC_2; //用于计算路程,使用主时钟 TBCCTL1=CM1+CCIS0+CAP+CCIE;TBCCTL2=CM1+CCIS0+CAP+CCIE; //分别用于左右轮捕获ME1|=UTXE0+URXE0;UCTL0=CHAR;UTCTL0=SSEL1;UBR00=0x45;UBR10=0x00;UMCTL0=0xaa;UCTL0&=~SWRST;IE1|=URXIE0;_BIS_SR(LPM0_bits+GIE);} #pragma vector=UART0RX_VECTOR__interrupt void usart0_rx(void){ while(!(IFG1&UTXIFG0)); //TX or RX?temp=RXBUF0;for(i=1000;i>0;i--);i=0;if(temp==0xaa)TXBUF0=timeflag;else if(temp==0x55)TXBUF0=lowbits;elseTXBUF0=highbits;}#pragma vector = TIMERB1_VECTOR__interrupt void Timer_B(void){switch(TBIV){case 2 :left++ ;total=(left+right)/2; break;case 4 :right++;lowbits=total&0xff;highbits=total>>8; break;default :break; }}#pragma vector = TIMERA0_VECTOR__interrupt void Timer_A(void){ timeflag++; //计数间隔为一秒}
MSP430单片机能用什么软件仿真
#include#define uint unsigned int delay(uint); void main() {WDTCTL = 0x5A80; uint ch[8] = {0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; uint i,j; P2DIR = 0xff; P2OUT = 0xff; //低电平点亮 while(1) { for(i=0;i{ P2OUT = ch[i]; delay(50000); } for(j=6;j>0;j--) { P2OUT = ch[j]; delay(50000); } } } void delay(uint z) { uint a; for(a=0;a} 1.这是较为简单的流水灯程序,没有使用定时器,只是简单的延时; 若要精确延时,需要设置定时器A或B. 2.也可以通过移位操作来实现流水灯,移位操作放入中断内最好
转载请注明出处51数据库 » msp430单片机开发的软件iar的正版