This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] 在输出端口中发送数据的正确方法

Guru**** 2595780 points
Other Parts Discussed in Thread: MSP430G2553

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/638231/proper-method-for-sending-data-in-output-ports

主题中讨论的其他部件:MSP430G2553

我当时正在研究LCD (16x2)与msp430g2553的接口,我提出了以下代码。

代码运行良好。但我有一个问题。

如果我将P1OUT=更改为 P1OUT|= 代码无效。原因是什么。

主要c

#include <MSP4S.h>
#include "byte.h"

INT MAIN ()

WDTCTL = WDTPW | WDTHOLD;//停止看门狗计时器
lcd_init();
LCD数据('A');
返回0;
}

* byte.c
*
*创建时间:2017年11月8日
*作者:AmitKumar
*/
#include <MSP4S.h>
#include "byte.h"

#define D0 BIT0
#define D1 BIT1.
#define D2 BID2 (定义D2 BID2)
#define D3 BIT3.
#定义RS BIT4
#定义EN BIT5
void lcd_init()

P1DIR|=D0+D1+D2+D3+RS+EN;
P1OUT|=D0+D1+D2+D3+RS+EN;
lcd_command (0x33);
lcd_command (0x32);
lcd_command (0x28);
LCD_COMMAND (0x0E);
lcd_command (0x01);
lcd_command (0x06);
lcd_command (0x80);
}

void lcd_command (无符号字符A)

内置RS;
rs=0;
LCD写入(A,RS);
}
void lcd_data (无符号字符A)

内置RS;
RS=1;
LCD写入(A,RS);
}
void lcd_write(unsigned char byte, int rs)

如果(RS==0)

P1OUT&=~RS;
}
否则

P1OUT|=RS;
}
P1OUT=(P1OUT & 0XF0)|(字节和0xF0)>4));  //(存在问题)
P1OUT|=EN;
P1OUT&=~EN;
__DELAY周期(3000);
P1OUT=((P1OUT & 0XF0)|(byte & 0x0F)); //(这是问题)
P1OUT|=EN;
P1OUT&=~EN;
__DELAY周期(3000);


}

 

byte.h
*
*创建时间:2017年11月8日
*作者:AmitKumar
*/

#ifndef byte_H_
#define byte_H_
extern void lcd_init();
extern void lcd_write(unsigned char,int);
extern void lcd_command(unsigned char);
extern void lcd_data(unsigned char);

#endif /* byte_H_*/

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,

    P1OUT|= x相当于P1OUT = P1OUT | x 因此,如果P1OUT有一个未在x中设置的设置位,则它仍将在P1OUT中设置,根据您的示例,该设置与您所需的设置不一样。 根据您的示例,如果设置了P1OUT的较低4位之一,则P1OUT的最终值将设置该位,即使它未设置为"字节"。 这将更改您的逻辑,并将为您提供一个与您仅使用"="设置P1OUT不同的值。

    此致,
    Nathan