今日头条
今天在学习MSP430G2553的时候想试试能不能通过延时来实现LED灯的闪烁,然后用了下面第一种的程序:
#include "MSP430G2553.h"
//-----在main函数前提前声明函数-----
void P1_IODect();
void P13_Onclick();
void GPIO_init();
void main(void) {
WDTCTL = WDTPW + WDTHOLD; //关狗
GPIO_init(); //IO初始化
while(1){
unsigned int k = 100000;
while(k>0){
k--;
}
P1OUT ^= BIT0;
P1OUT ^= BIT6;
}
}
void GPIO_init(){
//-----设定P1.0和P1.6的输出初始值-----
P1DIR |= BIT0+BIT6; //设定P1.0和P1.6为输出
P1OUT |= BIT0; //设定P1.0初值
P1OUT &= ~BIT6; //设定P1.6初值
}
结果是两盏灯一直亮,没有闪烁。
后来又把11-15行的程序
unsigned int k = 100000;
while(k>0){
k--;
}
改成教科书上的
__delay_cycles(100000);
就成功了,我想问问为什么?
有大神知道吗?
全部0条评论
快来发表一下你的评论吧 !