今日头条
今天在学习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条评论
快来发表一下你的评论吧 !