delay_cycles延时问题

2019-03-24 11:23发布

下面是我想做的延时点亮LED灯的程序,就是想验证一下delay_cycles()的延时使用的,但是发现延时不对,而且我单步执行的时候,执行到delay_ms(100)后立马跳到 P4DIR |= BIT5+BIT6+BIT7;  这一句,且i=0,即i=1后进入循环执行循环语句一次之后直接跳出循环,也不执行P4OUT = 0x00;,直接跳到第一句,很不解,求大神帮忙
#include <msp430f6638.h>
#define BIT5                   (0x0020)
#define BIT6                   (0x0040)
#define BIT7                   (0x0080)
#define P4DIR  (*((volatile unsigned char*)(P3P4_BASE_Address + 0x05)))
#define P4OUT         (*((volatile unsigned char*)(P3P4_BASE_Address + 0x03)))*/
#define CPU_F ((double)8000000)
#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))
#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))
volatile unsigned int i,j,k;
volatile unsigned int count=0;
void main(void)
{
  P4DIR |= BIT5+BIT6+BIT7;  // P4.1,P4.2,P4.3 set as output + BIT2 + BIT3
for(i=1;i<=10;i++)
  {
          P4OUT ^= 0xe0;            // XOR P4.1,P4.2,P4.3 + BIT2 + BIT3
          delay_ms(100);
  }
P4OUT = 0x00;
} 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
5条回答
qinkaiabc
2019-03-25 03:47
 精彩回答 2  元偷偷看……0人看过

一周热门 更多>

相关问题

    相关文章