OpenCores
URL https://opencores.org/ocsvn/mips_enhanced/mips_enhanced/trunk

Subversion Repositories mips_enhanced

[/] [mips_enhanced/] [trunk/] [grlib-gpl-1.0.19-b3188/] [lib/] [openchip/] [doc/] [suidemo.c] - Blame information for rev 2

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 dimamali
 
2
// Set Base address
3
int *sui = (int *) 0x80000400;
4
 
5
 
6
void delay(n) {
7
  int i;
8
  for (i=0;i<n;i++) {
9
  }
10
}
11
 
12
// Character LCD
13
void display_update(data, mode)
14
char    data;
15
int     mode;
16
{
17
        int     lcd_control_data, extended_mode, extended_data, lcd_data_read;
18
 
19
        extended_mode = (mode << 12) & 0x00001000;
20
        extended_data = data & 0x000000ff;
21
        lcd_control_data = extended_mode | extended_data;
22
 
23
        sui[2] = lcd_control_data;
24
        sui[2] = lcd_control_data | 0x00000100; // EN=1
25
        delay(5000);
26
        sui[2] = lcd_control_data;
27
        delay(5000);
28
        return;
29
}
30
 
31
void lcd_init()
32
{
33
        int lcd_count;
34
        static char lcd_data_init[6] =  {0x38, 0x06, 0x0c, 0x01, 0x80};
35
 
36
        delay(150000);
37
 
38
        for (lcd_count = 0; lcd_count < 6; lcd_count++) {
39
                display_update( lcd_data_init[lcd_count], 0);
40
                delay(500000);
41
        }
42
        delay(500000);
43
        return;
44
}
45
 
46
void lcd_write(char *s) {
47
  while (*s)  {
48
    display_update(*s, 1);
49
    s++;
50
  }
51
  return;
52
}
53
 
54
 
55
void lcd_clear()
56
{
57
        display_update(0x01, 0);
58
        return;
59
}
60
 
61
// 7 Segment LED
62
 
63
void led7_write_int(int val) {
64
  static char led_seg[16] = {
65
//  0     1     2     3    
66
    0x3F, 0x06, 0x5B, 0x4F,
67
//  4     5     6     7
68
    0x66, 0x6D, 0x7C, 0x07,
69
//  8     9
70
    0x7F, 0x67, 0x00, 0x00,
71
    0x00, 0x00, 0x00, 0x00
72
  };
73
  unsigned int led_val;
74
  led_val = led_seg[val & 0x000F] | (led_seg[val>>4 & 0x000F]<<8);
75
  led_val ^= 0xFFFFFFFF;
76
 
77
  sui[1] = led_val;
78
 
79
}
80
 
81
 
82
 
83
main() {
84
  int val;
85
 
86
  // Say hello on LCD
87
  lcd_init();
88
  lcd_write("Testing SPARC V8 LCD");
89
 
90
  // write something to 7 Segment LED's
91
  led7_write_int(0x1234);
92
 
93
  // Blink single LEDs
94
  while (1) {
95
        sui[0] = val;
96
        val++;
97
        delay(100000);
98
  }
99
}

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.