历史上的今天
今天是:2025年04月01日(星期二)
2020年04月01日 | 2-MSP430按键输入检测
2020-04-01 来源:eefocus
为了写一篇文章做铺垫--提醒着自己,,,,,,
P1.0的电平,随着P1.1引脚输入的电平变化而变化
#include "io430.h"
void delay(void)
{ unsigned char a,b,c;
for(c=167;c>0;c--)
for(b=171;b>0;b--)
for(a=1;a>0;a--);
}
void main( void )
{
WDTCTL = WDTPW + WDTHOLD;//看门狗默认是打开的,不使用就关了它
P1DIR = 0x01;//P1.0为输出模式
while(1)
{
P1OUT = 0x01;//P1.0输出高电平
delay();
P1OUT = 0x00;//P1.0输出低电平
delay();
}
}
在msp430的头文件中有这样的定义
/*-------------------------------------------------------------------------
* Standard Bits
*-------------------------------------------------------------------------*/
#define BIT0 (0x0001)
#define BIT1 (0x0002)
#define BIT2 (0x0004)
#define BIT3 (0x0008)
#define BIT4 (0x0010)
#define BIT5 (0x0020)
#define BIT6 (0x0040)
#define BIT7 (0x0080)
#define BIT8 (0x0100)
#define BIT9 (0x0200)
#define BITA (0x0400)
#define BITB (0x0800)
#define BITC (0x1000)
#define BITD (0x2000)
#define BITE (0x4000)
#define BITF (0x8000)
所以在设置P1.0为输出模式的时候可以
P1DIR = BIT0;
假如说 我们再配置P1.1为输入模式
如果直接 P1DIR = 0x0001;
如果以后再配置P1.2为输出模式
P1DIR = 0x0005;
这样做会非常的麻烦,因为要考虑以前的引脚配置
所以在配置某个引脚为输出引脚的时候
P1DIR = P1DIR | 0x0001; P1.0为输出
P1DIR = P1DIR | 0x0004; P1.2为输出
即
P1DIR = P1DIR | BIT0; P1.0为输出
P1DIR = P1DIR | BIT2; P1.2为输出
即
P1DIR |= BIT0; P1.0为输出
P1DIR |= BIT2; P1.2为输出
当配置为输入的时候P1.1
P1DIR &= 0xFFFD; P1.1为输入
即
P1DIR &= ~BIT1; P1.1为输入 P1DIR = P1DIR & (~BIT1);
看一下是不是互不影响
P1DIR |= BIT0; P1.0为输出 P1DIR = 0000 0000 0000 0000 0000 0000 0000 0001
P1DIR |= BIT2; P1.2为输出 P1DIR = 0000 0000 0000 0000 0000 0000 0000 0101
P1DIR &= ~BIT1; P1.1为输入 P1DIR = 0000 0000 0000 0000 0000 0000 0000 0101
现在看来 不配置方向好像初始化为输入模式
#include "io430.h"
void main( void )
{
// Stop watchdog timer to prevent time out reset
WDTCTL = WDTPW + WDTHOLD;
P1DIR |= BIT0;//P1.0为输出
// P1DIR &= BIT1;//P1.1为输入------屏蔽
// P1DIR |= BIT6;//-----屏蔽
// P1OUT &= ~BIT6;//------屏蔽
P1DIR |= BIT7;//P1.7为输出-------测试不受影响
P1OUT |= BIT7;//P1.7输出高电平-------测试不受影响
while(1)
{
if(P1IN&BIT1)//#define BIT1 (0x0002)如果P1输入寄存器P1IN的第1位为1时
{
P1OUT |= BIT0;//P1.0输出高电平,,不影响其他引脚
}
if(!(P1IN&BIT1))//#define BIT1 (0x0002)如果P1输入寄存器P1IN的第1位为0时
{
P1OUT &= ~BIT0;//P1.0输出低电平,,不影响其他引脚
}
}
}

上一篇:430 IO上下拉电阻
史海拾趣
|
摘要 介绍一种简便实用的PIC编程器实现方案。设计思想是:以单片机作为主控机,欲写入的PIC程序代码存放在主控机中,由主控机提供PIC芯片编程所需信号,并监测整个编程流程。在时钟脉冲信号作用下,把代码写入PIC的Flash中以达到对芯片编程的目的。 ...… 查看全部问答> |
|
大家好。小弟做数字也有2年多了。前面都是做的底层实现既从详细方案开始一直到最后的FPGA上板都经历过,对于细节比较清楚。但缺少项目整体的经验,特别是功耗,面积,规模,电压电流这种前期分析阶段。 目前公司给了小弟一个任务,做某 ...… 查看全部问答> |
|
各位老师: 我用一个单片机的12M晶振XTAL2输出作为另一个单片机AT89C2051-24PU输入信号,由端XTAL1端输入,幅值约3.8V,XTAL2脚输出信号非常弱,只能看到微弱杂波,正常应该有输出的,不知是什么原因?请指教! & ...… 查看全部问答> |
|
基于DIRECTSHOW技术,调节CAMERA的AP显示,老只是能显示在半屏的范围内,不知道怎样把它放大到全屏显示。 基于DIRECTSHOW技术,调节CAMERA的AP显示,老只是能显示在半屏的范围内,不知道怎样把它放大到全屏显示。 //--------------- 显示的图象是正常的,但我想把它整成全屏显示的,怎么整啊!调节那个地方?CAMERA驱动的SFR设置?那个SFR呢?我的图 ...… 查看全部问答> |
|
杂牌的PCI GPIB 卡可以用NI或者agilent的DLL吗? 刚接到 一个任务,是实现PC与一个信号源进行通信。 信号源的接口是IEEE488接口。 公司给我买了一个杂牌的PCI GPIB卡, 现在我将卡装在电脑上,随卡的驱动也装好了, 可是没有大家所说的任何编程开发界面和配置界面, 只是在设备管理器里的树状 ...… 查看全部问答> |
|
我司有台车削中心,带C轴,现在一开机主轴就自己正反反复不停摆动(没有进行任何操作),无任何报警,是哪里的问题呀?主轴是电主轴,只有一个海德汉编码器,系统是西门子840D的。另本以为是个别案例,不料另一台也是一样的问题,两台机器08年生产 ...… 查看全部问答> |
|
想向大家请教个问题,stm32 8字节对齐那个《stm32权位指南》上说是为了满足AAPCS,但是在查阅AAPCS后还是不太明白为什么要8字节对齐,堆栈的8字节对齐是不是 比如在执行PUSH寄存器R0时,这个压入R0就使用了8个字节啊,哪位前辈了解8字节对齐原理, ...… 查看全部问答> |




