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

Subversion Repositories mips789

[/] [mips789/] [tags/] [arelease/] [Clib/] [dvc_lib.c] - Blame information for rev 10

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 10 mcupro
#include "dvc_lib.h"
2
void __inline dis_byte(unsigned char data)
3
{
4
    SEG7LED=data ;
5
}
6
 
7
void dly_us(unsigned int us)
8
{
9
    int i ;
10
    while(us--)
11
    {
12
        i=FRQ/1000000/3-2 ;
13
        while(i--);
14
        //delay 1us
15
    }
16
}
17
 
18
void uart0_putc(unsigned char data)
19
{
20
    while((STATUS&(1<<2))!=0);
21
    UART0_DATA=data ;
22
}
23
unsigned char uart0_getc(void)
24
{
25
    unsigned char ret=0 ;
26
    while((STATUS&(1<<3))==0);
27
    ret=UART0_DATA ;
28
    set_bit(CMD,1);
29
    set_bit(CMD,1);
30
    clr_bit(CMD,1);
31
    return ret ;
32
}
33
unsigned char enqire_rxd(void)
34
{
35
    return(STATUS&(1<<3))?1:0 ;
36
}
37
 
38
void uart0_putstr(char*str)
39
{
40
    while(1)if(*str=='\0')return ;
41
    else uart0_putc(*str++);
42
}
43
 
44
void __inline led1_on(void)
45
{
46
    CMD=CMD&(~(1<<5));
47
}
48
void __inline led1_off(void)
49
{
50
    CMD=CMD|(1<<5);
51
}
52
void __inline led2_on(void)
53
{
54
    CMD=CMD&(~(1<<6));
55
}
56
void __inline led2_off(void)
57
{
58
    CMD=CMD|(1<<6);
59
}
60
 
61
//lcd part
62
 
63
void LCD_init(void)
64
{
65
    char i=3 ;
66
    CLEARSCREEN ;
67
    //clear screen
68
    while(i--)
69
    {
70
        LCD_en_command(DATA_MODE);
71
        //set 8 bit data transmission mode
72
        dly_us(LCD_INIT_US);
73
    }
74
    LCD_en_command(OPEN_SCREEN);
75
    //open display (enable lcd display)
76
    dly_us(LCD_DLY_US);
77
    LCD_en_command(DISPLAY_ADDRESS);
78
    //set lcd first display address
79
    dly_us(LCD_DLY_US);
80
    CLEARSCREEN ;
81
    //clear screen
82
    dly_us(LCD_DLY_US);
83
}
84
 
85
void LCD_en_command(unsigned char command)
86
{
87
    LCDDATA=command ;
88
    clr_bit(CMD,2);
89
    // LCD1602_RS=LOW;
90
    clr_bit(CMD,3);
91
    //LCD1602_RW=LOW;
92
    clr_bit(CMD,4);
93
    //LCD1602_EN=LOW;
94
    dly_us(LCD_DLY_US);
95
    set_bit(CMD,4);
96
    //LCD1602_EN=HIGH;
97
}
98
 
99
void LCD_en_dat(unsigned char dat)
100
{
101
    LCDDATA=dat ;
102
    set_bit(CMD,2);
103
    //LCD1602_RS=HIGH;
104
    clr_bit(CMD,3);
105
    //LCD1602_RW=LOW;
106
    clr_bit(CMD,4);
107
    //LCD1602_EN=LOW;
108
    dly_us(LCD_DLY_US);
109
    set_bit(CMD,4);
110
    //LCD1602_EN=HIGH;
111
}
112
 
113
void LCD_set_xy(unsigned char x,unsigned char y)
114
{
115
    unsigned char address ;
116
    if(y==LINE1)
117
    address=LINE1_HEAD+x ;
118
    else
119
    address=LINE2_HEAD+x ;
120
    LCD_en_command(address);
121
}
122
 
123
void LCD_write_char(unsigned x,unsigned char y,unsigned char dat)
124
{
125
    LCD_set_xy(x,y);
126
    LCD_en_dat(dat);
127
}
128
 
129
void LCD_write_string(unsigned char X,unsigned char Y,unsigned char*s)
130
{
131
    LCD_set_xy(X,Y);
132
    while(*s)
133
    {
134
        LCD_en_dat(*s++);
135
    }
136
}
137
 
138
void download()
139
{
140
    unsigned char*addr=(void*)0 ;
141
    uart0_putstr((char*)"This is MIPS789 Running.\n I am ready to rcv program...\n");
142
    dis_byte(0xcc);
143
    //attenions please'!'
144
    while(uart0_getc()!='!')uart0_putc((unsigned char)('O'));
145
    //'O'k .i am ready
146
    while(1)
147
    {
148
        *addr=(unsigned char)uart0_getc();
149
        dis_byte((unsigned char)(*addr++));
150
    }
151
}
152
 
153
void tmr_en(unsigned int cntr)
154
{
155
    set_bit(CMD,8);
156
    TMR_DATA=cntr ;
157
    tmr_clr();
158
}
159
 
160
void tmr_disen(void)
161
{
162
    clr_bit(CMD,8);
163
    clr_bit(CMD,7);
164
}
165
 
166
void tmr_clr(void)
167
{
168
    set_bit(CMD,7);
169
    set_bit(CMD,7);
170
    clr_bit(CMD,7);
171
    clr_bit(CMD,7);
172
}
173
 
174
unsigned int  read_tmr()
175
{
176
    return TMR_DATA ;
177
}
178
 
179
 
180
unsigned char get_key1()
181
{
182
    return(STATUS&1)?1:0 ;
183
}
184
 
185
unsigned char get_key2()
186
{
187
    return(STATUS&(1<<1))?1:0 ;
188
}

powered by: WebSVN 2.1.0

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