我当时正在研究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_*/