#include"msp430x14x.h"
unsigned char i=0;
void delay(unsigned int z)
{
while(z--);
}
void main()
{
P2DIR=0xff;P2OUT=0xff;
WDTCTL=WDTPW+WDTHOLD;//关闭看门狗
BCSCTL1&=~XT2OFF;
do
{
IFG1 &= ~OFIFG; //清除晶振失败标志
for (i = 0xFF; i > 0; i--); //等待8MHz晶体起振
}
while ((IFG1 & OFIFG)); //晶振失效标志仍然存在?
BCSCTL2=SELM1+SELS+DIVM_3+DIVS_3; //SMCLK MCLK使用XT2外部8M晶振源 同时八分频
while(1)
{
P2OUT=0xf7;
delay(50000) ; //相邻两次闪烁不是间隔50ms吗?
P2OUT=0xff; //为什么是500ms,那不就成了使用了800kHZ的内部时钟源吗
delay(50000);
}
}
msp430时钟源问题,MCLK好像怎么都设置不对,目的是把指令执行时间调到1us。以下是代码
答案:2 悬赏:40 手机版
解决时间 2021-03-06 02:45
- 提问者网友:聂風
- 2021-03-05 16:33
最佳答案
- 五星知识达人网友:怙棘
- 2021-03-05 17:22
void delay(unsigned int z)
{
while(z--);
}
这个函数的延时精度你要测试一下,或者通过反汇编看下指令就知道了。
一条单指令是1us,但是一个while(z--);汇编时由多条指令组成,估计需要10us执行完毕,所以你的参数50000×10us=500ms
{
while(z--);
}
这个函数的延时精度你要测试一下,或者通过反汇编看下指令就知道了。
一条单指令是1us,但是一个while(z--);汇编时由多条指令组成,估计需要10us执行完毕,所以你的参数50000×10us=500ms
全部回答
- 1楼网友:天凉才是好个秋
- 2021-03-05 18:27
是相互独立的,dco是利用单片机内部振荡器产生的,如可以设置为1m,8m,16m
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯