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

#include"msp430x14x.h"unsignedchari=0;voiddelay(unsignedintz){while(z--);}voidmain(){... #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);

}

}
展开
 我来答
hwk612167
推荐于2016-11-24 · TA获得超过1322个赞
知道小有建树答主
回答量:281
采纳率:100%
帮助的人:316万
展开全部
void delay(unsigned int z)
{
while(z--);
}
这个函数的延时精度你要测试一下,或者通过反汇编看下指令就知道了。
一条单指令是1us,但是一个while(z--);汇编时由多条指令组成,估计需要10us执行完毕,所以你的参数50000×10us=500ms
厦门君韦信息技术
2024-11-18 广告
厦门君韦信息技术有限公司成立于2015年,是一家致力于提供专业服务的电子元件分销商,具有业界先进的质量和可靠性、强大的搜索供应实力、专业的服务能力。厦门君韦主要深耕于图像识别技术研究与开发,同时助推于通信、工控、电力、汽车等行业客户的供应链... 点击进入详情页
本回答由厦门君韦信息技术提供
查晓筠0i5
2014-12-02 · TA获得超过2752个赞
知道大有可为答主
回答量:2.1万
采纳率:1%
帮助的人:4911万
展开全部
需要帮你写吗
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式