求助"((data & LCD_DATA_MARK)>> LCD_DATA_SHIFT)" 如何理解
#if defined __AVR_ATmega32__#define LCD_DATA_PORTPORTB
#define LCD_DATA_DDR DDRB
#define LCD_DATA_MARK0xF0
#define LCD_DATA_SHIFTPB4
#define LCD_WR_PORTPORTB
#define LCD_WR_DDR DDRB
#define LCD_WR PB6
#define LCD_RS_PORTPORTB
#define LCD_RS_DDR DDRB
#define LCD_RS PB7
#define LCD_EN_PORTPORTB
#define LCD_EN_DDR DDRB
#define LCD_EN PB5
#elif defined(__AVR_ATmega48__)|| defined(__AVR_ATmega88__) || defined(__AVR_ATmega168__)
#define LCD_DATA_PORTPORTB
#define LCD_DATA_DDR DDRB
#define LCD_DATA_MARK0x3C
#define LCD_DATA_SHIFTPB2
#define LCD_RS_PORTPORTC
#define LCD_RS_DDR DDRC
#define LCD_RS PC3
#define LCD_EN_PORTPORTD
#define LCD_EN_DDR DDRD
#define LCD_EN PD5
#endif
#if defined __AVR_ATmega32__
LCD_DATA_PORT = (LCD_DATA_PORT & LCD_DATA_MARK) | ((data & LCD_DATA_MARK)>> LCD_DATA_SHIFT);
#elif defined(__AVR_ATmega48__)|| defined(__AVR_ATmega88__) || defined(__AVR_ATmega168__)
LCD_DATA_PORT = (LCD_DATA_PORT & ~(LCD_DATA_MARK)) | ((data >> LCD_DATA_SHIFT) & LCD_DATA_MARK);
#endif
"((data & LCD_DATA_MARK)>> LCD_DATA_SHIFT)" 如何理解 #define LCD_DATA_SHIFTPB4 去看看PB4的定义应该是“4”.把data 高4位数据移到低4位去。
页:
[1]