永发信息网

msp430时钟源问题,MCLK好像怎么都设置不对,目的是把指令执行时间调到1us。以下是代码

答案:2  悬赏:40  手机版
解决时间 2021-03-06 02:45
  • 提问者网友:聂風
  • 2021-03-05 16:33
#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);

}

}
最佳答案
  • 五星知识达人网友:怙棘
  • 2021-03-05 17:22
void delay(unsigned int z)
{
while(z--);
}
这个函数的延时精度你要测试一下,或者通过反汇编看下指令就知道了。
一条单指令是1us,但是一个while(z--);汇编时由多条指令组成,估计需要10us执行完毕,所以你的参数50000×10us=500ms
全部回答
  • 1楼网友:天凉才是好个秋
  • 2021-03-05 18:27
是相互独立的,dco是利用单片机内部振荡器产生的,如可以设置为1m,8m,16m
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯