Ejemplo n.º 1
0
void lcd_command( uint16_t cmd )
{
	LCD_PORT_OUT= ( cmd & 0xf0 );
	LCD_PORT_OUT|= LCD_ENABLE_BIT;
	nop( );
	LCD_PORT_OUT&= ~LCD_ENABLE_BIT;
	//
	LCD_PORT_OUT= ( ( cmd << 4 ) & 0xf0 );
	LCD_PORT_OUT|= LCD_ENABLE_BIT;
	nop( );
	LCD_PORT_OUT&= ~LCD_ENABLE_BIT;
	nop( );
	LCD_PORT_OUT= 0;
	brief_pause( 3000 );
}
Ejemplo n.º 2
0
int putchar( uint16_t in )
{
	LCD_PORT_OUT= ( in & 0xf0 ) | LCD_MODE_BIT;
	LCD_PORT_OUT|= LCD_ENABLE_BIT;
	nop( );
	LCD_PORT_OUT&= ~LCD_ENABLE_BIT;
	//
	LCD_PORT_OUT= ( ( in << 4 ) & 0xf0 ) | LCD_MODE_BIT;
	LCD_PORT_OUT|= LCD_ENABLE_BIT;
	nop( );
	LCD_PORT_OUT&= ~LCD_ENABLE_BIT;
	nop( );
	LCD_PORT_OUT= 0;
	brief_pause( 200 );
	return (0);
}
Ejemplo n.º 3
0
void lcd_init( )
{
	//lcd
	LCD_PORT_OUT= 0;
	LCD_PORT_DIR|= LCD_DATA_MASK | LCD_CMD_MASK;

	//assume VCC+ > 20ms away

	//first init
	LCD_PORT_OUT= 0x30;
	LCD_PORT_OUT|= LCD_ENABLE_BIT;
	nop( );
	LCD_PORT_OUT&= ~LCD_ENABLE_BIT;
	//pause should be set by mclk div, > 4.1ms
	brief_pause( 15000 );

	//second init
	LCD_PORT_OUT|= LCD_ENABLE_BIT;
	nop( );
	LCD_PORT_OUT&= ~LCD_ENABLE_BIT;
	//pause should be set by mclk div, > 100us
	brief_pause( 500 );

	//four bit mode
	LCD_PORT_OUT= 0x20;
	LCD_PORT_OUT|= LCD_ENABLE_BIT;
	nop( );
	LCD_PORT_OUT&= ~LCD_ENABLE_BIT;
	brief_pause( 1000 );

	//from here 'lcd_command can be used
	//operational mode 5x8 1/16 duty( two lines )
	lcd_command( 0x28 );
	brief_pause( 1000 );

	//display off
	lcd_command( 0x08 );
	brief_pause( 1000 );

	//display on, no cursor, no blink...
	lcd_command( 0x0c );
	brief_pause( 1000 );
	LCD_PORT_OUT= 0;
}
Ejemplo n.º 4
0
void McuSystem<Speed::SPEED_16MHZ>::delayInUs(uint32_t time)
{
	brief_pause(time << 2);
}
Ejemplo n.º 5
0
void McuSystem<Speed::SPEED_8MHZ>::delayInUs(uint32_t time)
{
	//return imediately for 1/2us delay
	brief_pause(time << 1);
}