下面是我想做的延时点亮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;
}
此帖出自
小平头技术问答
一周热门 更多>