-
定时器设置为
信号发射,打开计时器;
设置个变量n,在定时器中断函数里面计数,进入中断+1。
接收到回波信号时记录n,定时器TAR值。
时间=定时器周期*n+当前定时器时间。
-
3楼说法有道理。
如果需要的精度太高,就不能用430计时了,考虑其他计时芯片。
-
TACTL寄存器的MCx置位,只要不是0就开始计数了。
MCx:计数模式控制位
0:停止模式
1:增计数模式
2:连续计数模式
3:增/减计数模式
-
不知道你多大频率的信号,反正我用448的片子,200k的信号还是能捕捉到的。
-
2楼说的有道理。。。
-
4楼说的没错。
再不行检查头文件里面变量,常量声明是不是少个;号。
-
你理解错了
BIT0=0x01
~BIT0=0xFE
P1OUT&0xFE相当于P1.0置低,其它位不变。
-
void initADC12(){ P6SEL = 0x02; //设置P6.0为模拟输入通道 ADC12CTL0 &= ~(ENC); //设置ENC为0,从而修改ADC12寄存器的值 ADC12CTL0 |= ADC12ON + SHT0_8 + MSC; //打开ADC12内核 ADC12CTL1 = SHP + CONSEQ_2+CSTARTADD_1; ADC12MCTL1 |= INCH_1; ADC12IE = 0x02; //使能中断ADC12IFG.0 ADC12CTL0 |= ENC; //使能转换 _EINT(); ADC12CTL0 |= ADC12SC; //开始转换}
这么写
你使用了MCTL1通道,在ADC12CTL1里面没有设置
加上ADC12CTL0 &= ~(ENC); 不然设置无效 。
[ 本帖最后由 lllhhheee 于 2012-3-14 16:19 编辑 ]
-
重新掉电一下试试。
-
去掉
#include "io430.h"
-
头文件冲突了。
-
没错!!!
-
P1DIR &=BIT4+BIT5+BIT6+BIT7;等于P1DIR=P1DIR&0xf0;吧
对的
-
。。。恢复楼主的,回复错了。
-
没有不同,看来你对C语言不熟
P1OUT|=BIT0 等价于 P1OUT=P1OUT|0x01
P1OUT&=~BIT0 等价于 P1OUT=~(P1OUT&0x01)
你程序里面 BIT0=led=0x01
-
干什么用?
这方面程例非常多。随便找了一个。
//调试成功
#include "msp430x14x.h"
//按键按下,则P1.0状态取反
void main(void)
{
sys_init();
port_init();
while(1)
{
while((P1IN&0xf0)==0xf0){}; // 等待有键按下
delay(10000); //软件去抖
if((P1IN&0xf0)!=0xf0)
{
switch (P1IN&0xf0)
{
case 0xe0:{ //S1键按下处理...
P1OUT ^=BIT0;
}break;
case 0xd0:{ //S2键按下处理...
P1OUT ^=BIT0;
}break;
case 0xb0:{ //S3键按下处理...
P1OUT ^=BIT0;
}break;
case 0x70:{ //S4键按下处理...
P1OUT ^=BIT0;
}break;
default:{
P1OUT ^=BIT0;
} break;
}
}
}
}
void sys_init() //关看门狗,初始化DCO为8MHz
{
WDTCTL=WDTPW+WDTHOLD; //关看门狗
BCSCTL1 =RSEL0+RSEL1+RSEL2;//RSEL=7; //设定DCO为8MHZ
DCOCTL =DCO0+DCO1+DCO2;//DCO1=7;
}
void port_init()
{
//按键口
// P1DIR &=BIT4+BIT5+BIT6+BIT7; // 按键口设为输入
// P1SEL &= 0x0f; //按键口用于普通I/O口
//L2
P1DIR |=BIT0; //L2为输出口
}
void delay(unsigned int t)
{
unsigned int i,j;
for(i=0;i
-
内部的不准确,还是用外接的吧。
-
简单说就是IIC总线上会连接多个器件。
在软件模拟IIC总线接口时:
假设通过P1.1,P1,2分别控制SCL,SDA
如果需要SDA传输一个高电平很多书上都是直接
P1DIR = BIT2;
P1OUT |=BIT2;
这么做当总线上其它从器件SDA也输出高电平相当于短路,会损坏器件。
正确做法是
SCL,SDA连接一个上拉电阻接VCC
然后
P1DIR ~= BIT2 端口置输入状态相当于置高电平
P1DIR |= BIT2 端口置输出状态相当于置低电平
-
楼主讲的很实用,却是在用IIC时发现了把端口置高电平损坏器件的问题,最后通过LZ的方法解决了问题。
-
2.11,星期六还要上班,命苦啊。