URL
https://opencores.org/ocsvn/mips789/mips789/trunk
Subversion Repositories mips789
Compare Revisions
- This comparison shows the changes necessary to convert path
/
- from Rev 16 to Rev 17
- ↔ Reverse comparison
Rev 16 → Rev 17
/trunk/Clib/dvc_lib.c
0,0 → 1,198
#include "dvc_lib.h" |
void __inline dis_byte(unsigned char data) |
{ |
SEG7LED=data ; |
} |
|
void dly_us(unsigned int us) |
{ |
int i ; |
while(us--) |
{ |
i=FRQ/1000000/3-2 ; |
while(i--); |
//delay 1us |
} |
} |
|
void dly_ms(unsigned int ms) |
{ |
int i ,us=1000*ms; |
while(us--) |
{ |
i=12; |
while(i--); |
} |
} |
|
void uart0_putc(unsigned char data) |
{ |
while((STATUS&(1<<2))!=0); |
UART0_DATA=data ; |
} |
unsigned char uart0_getc(void) |
{ |
unsigned char ret=0 ; |
while((STATUS&(1<<3))==0); |
ret=UART0_DATA ; |
set_bit(CMD,1); |
set_bit(CMD,1); |
clr_bit(CMD,1); |
return ret ; |
} |
unsigned char enqire_rxd(void) |
{ |
return(STATUS&(1<<3))?1:0 ; |
} |
|
void uart0_putstr(char*str) |
{ |
while(1)if(*str=='\0')return ; |
else uart0_putc(*str++); |
} |
|
void __inline led1_on(void) |
{ |
CMD=CMD&(~(1<<5)); |
} |
void __inline led1_off(void) |
{ |
CMD=CMD|(1<<5); |
} |
void __inline led2_on(void) |
{ |
CMD=CMD&(~(1<<6)); |
} |
void __inline led2_off(void) |
{ |
CMD=CMD|(1<<6); |
} |
|
//lcd part |
|
void LCD_init(void) |
{ |
char i=3 ; |
CLEARSCREEN ; |
//clear screen |
while(i--) |
{ |
LCD_en_command(DATA_MODE); |
//set 8 bit data transmission mode |
dly_us(LCD_INIT_US); |
} |
LCD_en_command(OPEN_SCREEN); |
//open display (enable lcd display) |
dly_us(LCD_DLY_US); |
LCD_en_command(DISPLAY_ADDRESS); |
//set lcd first display address |
dly_us(LCD_DLY_US); |
CLEARSCREEN ; |
//clear screen |
dly_us(LCD_DLY_US); |
} |
|
void LCD_en_command(unsigned char command) |
{ |
LCDDATA=command ; |
clr_bit(CMD,2); |
// LCD1602_RS=LOW; |
clr_bit(CMD,3); |
//LCD1602_RW=LOW; |
clr_bit(CMD,4); |
//LCD1602_EN=LOW; |
dly_us(LCD_DLY_US); |
set_bit(CMD,4); |
//LCD1602_EN=HIGH; |
} |
|
void LCD_en_dat(unsigned char dat) |
{ |
LCDDATA=dat ; |
set_bit(CMD,2); |
//LCD1602_RS=HIGH; |
clr_bit(CMD,3); |
//LCD1602_RW=LOW; |
clr_bit(CMD,4); |
//LCD1602_EN=LOW; |
dly_us(LCD_DLY_US); |
set_bit(CMD,4); |
//LCD1602_EN=HIGH; |
} |
|
void LCD_set_xy(unsigned char x,unsigned char y) |
{ |
unsigned char address ; |
if(y==LINE1) |
address=LINE1_HEAD+x ; |
else |
address=LINE2_HEAD+x ; |
LCD_en_command(address); |
} |
|
void LCD_write_char(unsigned x,unsigned char y,unsigned char dat) |
{ |
LCD_set_xy(x,y); |
LCD_en_dat(dat); |
} |
|
void LCD_write_string(unsigned char X,unsigned char Y,unsigned char*s) |
{ |
LCD_set_xy(X,Y); |
while(*s) |
{ |
LCD_en_dat(*s++); |
} |
} |
|
void download() |
{ |
unsigned char*addr=(void*)0 ; |
uart0_putstr((char*)"This is MIPS789 BOOTLOADER\n"); |
dis_byte(0xcc); |
//attenions please'!' |
while(uart0_getc()!='!')uart0_putc((unsigned char)('O')); |
//'O'k .i am ready |
while(1) |
{ |
*addr=(unsigned char)uart0_getc(); |
dis_byte((unsigned char)(*addr++)); |
} |
} |
|
void tmr_en(unsigned int cntr) |
{ |
set_bit(CMD,8); |
TMR_DATA=cntr ; |
tmr_clr(); |
} |
|
void tmr_disen(void) |
{ |
clr_bit(CMD,8); |
clr_bit(CMD,7); |
} |
|
void tmr_clr(void) |
{ |
set_bit(CMD,7); |
set_bit(CMD,7); |
clr_bit(CMD,7); |
clr_bit(CMD,7); |
} |
|
unsigned int read_tmr() |
{ |
return TMR_DATA ; |
} |
|
|
unsigned char get_key1() |
{ |
return(STATUS&1)?0:1 ; |
} |
|
unsigned char get_key2() |
{ |
return(STATUS&(1<<1))?0:1 ; |
} |
/trunk/Clib/dvc_lib.h
0,0 → 1,67
/* |
`define UART_DATA_ADDR 'H80_00_00_28 |
`define CMD_ADDR 'H80_00_00_14 |
`define STATUS_ADDR 'H80_00_00_18 |
`define SEG7LED_ADDR 'H80_00_00_1C |
`define SIM_DIS_ADDR 'H80_00_00_20 |
`define LCD_DATA_ADDR 'H80_00_00_24 |
`define TMR_IRQ_ADDR 'H80_00_00_28 |
`define TMR_DATA_ADDR 'H80_00_00_34 |
`define KEY1_IRQ_ADDR 'H80_00_00_2C |
`define KEY2_IRQ_ADDR 'H80_00_00_30 |
*/ |
|
#define FRQ 50*1000*1000 |
#define LCDDATA *(volatile unsigned char*)0X80000024 |
#define SEG7LED *(volatile unsigned char*)0X8000001C |
#define UART0_DATA *(volatile unsigned char*)0x80000028 |
#define CMD *(volatile unsigned int* )0x80000014 |
#define STATUS *(volatile unsigned int* )0x80000018 |
#define TMR_DATA *(volatile unsigned int* )0x80000034 |
|
#define set_bit(a,b) a=a|(1<<b) |
#define clr_bit(a,b) a=a&(~(1<<b)) |
|
#define LINE1 0 |
#define LINE2 1 |
#define LINE1_HEAD 0x80 |
#define LINE2_HEAD 0xC0 |
#define DATA_MODE 0x38 |
#define OPEN_SCREEN 0x0C |
#define DISPLAY_ADDRESS 0x80 |
#define CLEARSCREEN LCD_en_command(0x01) |
#define LCD_DLY_US 100*10 |
#define LCD_INIT_US 50*1000*10 |
|
#define HIGH 1 |
#define LOW 0 |
#define TRUE 1 |
#define ZERO 0 |
|
void LCD_write_string(unsigned char X,unsigned char Y,unsigned char *s); |
void LCD_write_char( unsigned x,unsigned char y,unsigned char dat); |
void LCD_set_xy( unsigned char x, unsigned char y ); |
void LCD_en_dat(unsigned char dat); |
void LCD_en_command(unsigned char command); |
void LCD_delay(void); |
void dly_us(unsigned int us ); |
void LCD_init(void); |
void led1_on(); |
void led1_off(); |
void led2_on(); |
void led2_off(); |
void uart0_putstr(char *str); |
unsigned char uart0_getc(void); |
unsigned char enqire_rxd(void); |
void uart0_putc(unsigned char data); |
void dis_byte(unsigned char data); |
void download(); |
unsigned char get_key1(); |
unsigned char get_key2(); |
#define getkey1 get_key1 |
#define getkey2 get_key2 |
|
void tmr_en(unsigned int cntr); |
void tmr_disen(void); |
void tmr_clr(void); |
|