lcd.h File Reference

ROM Interface: RCX LCD control. More...

Go to the source code of this file.

Macros

#define lcd_int(i)   lcd_number(i,sign,e0)
 display an integer in decimal More...
 
#define lcd_unsigned(u)   lcd_number(u,unsign,e0)
 display an unsigned value in decimal More...
 
#define lcd_clock(t)   lcd_number(t,unsign,e_2)
 display a clock. More...
 
#define lcd_digit(d)   lcd_number(d,digit,digit_comma)
 display a single digit right of the man symbol More...
 
#define ASMVOLATILE   __volatile__
 

Enumerations

enum  lcd_segment {
  man_stand = 0x3006 , man_run = 0x3007 , s1_select = 0x3008 , s1_active = 0x3009 ,
  s2_select = 0x300A , s2_active = 0x300B , s3_select = 0x300C , s3_active = 0x300D ,
  a_select = 0x300E , a_left = 0x300F , a_right = 0x3010 , b_select = 0x3011 ,
  b_left = 0x3012 , b_right = 0x3013 , c_select = 0x3014 , c_left = 0x3015 ,
  c_right = 0x3016 , unknown_1 = 0x3017 , circle = 0x3018 , dot = 0x3019 ,
  dot_inv = 0x301A , battery_x = 0x301B , ir_half = 0x301C , ir_full = 0x301D ,
  everything = 0x3020
}
 LCD segment codes. More...
 
enum  lcd_number_style { digit = 0x3017 , sign = 0x3001 , unsign = 0x301F }
 LCD number display styles. More...
 
enum  lcd_comma_style {
  digit_comma = 0x0000 , e0 = 0x3002 , e_1 = 0x3003 , e_2 = 0x3004 ,
  e_3 = 0x3005
}
 LCD comma display styles. More...
 

Functions

void lcd_show (lcd_segment segment)
 show LCD segment More...
 
void lcd_hide (lcd_segment segment)
 hide LCD segment More...
 
void lcd_number (int i, lcd_number_style n, lcd_comma_style c)
 show number on LCD display More...
 
void lcd_clear (void)
 clear LCD display More...
 

Detailed Description

ROM Interface: RCX LCD control.

Author
Markus L. Noga marku.nosp@m.s@no.nosp@m.ga.de
Warning
If CONF_LCD_REFRESH is set in config.h, the kernel will refresh the display automatically every 100ms. Otherwise, display updates are realized exclusively by lcd_refresh().

Definition in file lcd.h.

Macro Definition Documentation

◆ ASMVOLATILE

#define ASMVOLATILE   __volatile__

g++ warns about asm volatile. we define the problem away. the CXX symbol is predefined in the Makefile

Todo:
(when move to g++ 3.x) determine if this is still the case and fix this if not...

Definition at line 150 of file lcd.h.

◆ lcd_clock

#define lcd_clock (   t)    lcd_number(t,unsign,e_2)

display a clock.

passing an argument of 1015 will display 10.15

Definition at line 131 of file lcd.h.

◆ lcd_digit

#define lcd_digit (   d)    lcd_number(d,digit,digit_comma)

display a single digit right of the man symbol

Definition at line 134 of file lcd.h.

◆ lcd_int

#define lcd_int (   i)    lcd_number(i,sign,e0)

display an integer in decimal

Definition at line 123 of file lcd.h.

◆ lcd_unsigned

#define lcd_unsigned (   u)    lcd_number(u,unsign,e0)

display an unsigned value in decimal

Definition at line 126 of file lcd.h.

Enumeration Type Documentation

◆ lcd_comma_style

LCD comma display styles.

Enumerator
digit_comma 

single digit on the right

e0 

whole

e_1 

10ths

e_2 

100ths

e_3 

1000ths, problematic with negatives

Definition at line 111 of file lcd.h.

◆ lcd_number_style

LCD number display styles.

note: signed and unsigned are taken by the C programming language

Enumerator
digit 

single digit on the right

sign 

signed, no leading zeros

unsign 

unsigned, 0 displayed as 0000

Definition at line 99 of file lcd.h.

◆ lcd_segment

LCD segment codes.

these are not to be confused with the codes defined in direct-lcd.h

circle and dot codes cycle. cycle state is preserved on powerdown.

each dot code should be invoked six times before using the other. mixing them will result in strange behaviour.

Enumerator
man_stand 
man_run 
s1_select 
s1_active 
s2_select 
s2_active 
s3_select 
s3_active 
a_select 
a_left 
a_right 
b_select 
b_left 
b_right 
c_select 
c_left 
c_right 
unknown_1 

seemingly without effect. cycle reset?

circle 

0..3 quarters: add one. 4 quarters: reset

dot 

0..4 dots: add a dot. 5 dots: reset

dot_inv 

0 dots: show 5. 1..4 dots: subtract one

battery_x 
ir_half 
ir_full 

the IR display values are mutually exclusive.

everything 

the IR display values are mutually exclusive.

Definition at line 53 of file lcd.h.

Function Documentation

◆ lcd_clear()

void lcd_clear ( void  )
inline

clear LCD display

Definition at line 191 of file lcd.h.

References ASMVOLATILE.

◆ lcd_hide()

void lcd_hide ( lcd_segment  segment)
inline

hide LCD segment

Parameters
segmentsegment to hide

Definition at line 171 of file lcd.h.

References ASMVOLATILE.

◆ lcd_number()

void lcd_number ( int  i,
lcd_number_style  n,
lcd_comma_style  c 
)

show number on LCD display

Parameters
ithe number
na number style
ca comma style

◆ lcd_show()

void lcd_show ( lcd_segment  segment)
inline

show LCD segment

Parameters
segmentsegment to show

Definition at line 156 of file lcd.h.

References ASMVOLATILE.


brickOS is released under the Mozilla Public License.
Original code copyright 1998-2005 by the authors.

Generated for brickOS C by doxygen 1.9.4