程序如下:
#include<msp430x14x.h>
#include "cry1602.h"
#include "cry1602.c"
unsigned char big[]="abcdefghijklmnopqrstuvwxyz";
unsigned char small[]="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
void main(void)
{
P1DIR=0xff;P1OUT=0xff;
P2DIR=0xff;P2OUT=0xff;
P3DIR=0xff;P3OUT=0xff;
P4DIR=0xff;P4OUT=0xff;
P5DIR=0xff;P5OUT=0xff;
P6DIR=0xff;P6OUT=0xff;
unsigned char i;
P6DIR |= BIT2;P6OUT |= BIT2; //关闭电平转换
WDTCTL=WDT_ADLY_1000; //间隔定时器,定时1000ms
LcdReset();
DispStr(0,0,big);
for(i = 0; i < 3; i++) //延时2s
{
IFG1 &= ~WDTIFG;
while(!(IFG1 & WDTIFG));
IFG1 &= ~WDTIFG;
}
LcdWriteCommand(0x01,1);
DispNChar(0,0,26,small);
}
黑体部分的延时是如何做到的???,IFG1宏定义的值是多少,为何我在msp430x14x.h的的头文件里看的好像不对的,是0x0002u???还请各位赐教!!
此帖出自
小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
首先很感谢您的回复,我想您在学习的时候肯定也会遇到就算是看书看N遍也不明白的地方。
接着您的回复我有几个疑问:
1.首先,先说IFG1吧,我截了个图在下面,您说IFG1通过宏U0IFG进行了重定义,这个我看到了,但后面并没有在另外定义值是多少,我截了个图在下面,上电后IFG1初始值第0位和4位都是0,其余位用作其他用途,但我想一开始IFG1肯定会有一个初始值的吧,我想的对吗???2.这是我对程序的理解,不知道这几步的注释对不对还请帮忙看下:
for(i = 0; i < 3; i++)
{
IFG1 &= ~WDTIFG; //IFG1原本为0,但启用了看门狗定是间隔器第0位变1,所以WDTIFG为0x01,这一步将IFG1第0位置0,其余位不变
while(!(IFG1 & WDTIFG)); //等待IFG1的第0位置0
IFG1 &= ~WDTIFG; //将IFG1第0位置1,也就是这一步IFG1为1时后会引起上面的1s的延时是吧
}
3.上面这个延时函数应该是2s的,我在开发板实验了几次,分别将for语句中的i<3,分别试了1,2,3,为1的时候时间特别短估计0.5s吧,闪的特别快,为2的时侯差不多1s,3的时候差不多2s,按照您的说法3次应该延时3s,但这确实没有3s,如果您不信我可以把原程序发给您试一下。
一周热门 更多>