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

Subversion Repositories yacc

[/] [yacc/] [trunk/] [bench/] [c_src/] [count/] [test.BAK] - Rev 4

Compare with Previous | Blame | View Log

//Apr.1.2005 for ram16k
//count_tak.c




#define print_port 0x3ff0
#define print_char_port 0x3ff1
#define print_int_port 0x3ff2
#define print_long_port 0x3ff4





#define uart_port               0x03ffc //for 16KRAM
#define uart_wport uart_port
#define uart_rport uart_port
#define int_set_address 0x03ff8 //for 16KRAM



char *name[]={
   "","one","two","three","four","five","six","seven","eight","nine",
   "ten","eleven","twelve","thirteen","fourteen","fifteen",
      "sixteen","seventeen","eighteen","nineteen",
   "","ten","twenty","thirty","forty","fifty","sixty","seventy",
      "eighty","ninety"
};
void print_uart(unsigned char* ptr)// 
{
        unsigned int uport;
        #define WRITE_BUSY 0x0100


        while (*ptr) {
        
                do {
                  uport=*(volatile unsigned*)   uart_port;
                } while (uport & WRITE_BUSY);
                *(volatile unsigned char*)uart_wport=*(ptr++);
        }
        //*(volatile unsigned char*)uart_wport=0x00;//Write Done
}       


void putc_uart(unsigned char c)// 
{
        unsigned int uport;
        

        do {
                  uport=*(volatile unsigned*)   uart_port;
        } while (uport & WRITE_BUSY);
        *(volatile unsigned char*)uart_wport=c;
        
}       

unsigned char read_uart()//Verilog Test Bench Use 
{
                unsigned uport;
                uport= *(volatile unsigned *)uart_rport;
                return uport;
}       

void print(unsigned char* ptr)//Verilog Test Bench Use 
{

        while (*ptr) {
        
                *(volatile unsigned char*)print_port=*(ptr++);
        }

        *(volatile unsigned char*)print_port=0x00;//Write Done

}
void print_char(unsigned char val)//Little Endian write out 16bit number 
{
        *(volatile unsigned char*)print_port=(unsigned char)val ;

}





char *itoa(unsigned long num)
{
   static char buf[12];
   int i;
   buf[10]=0;
   for(i=9;i>=0;--i) {
      buf[i]=(char)((num%10)+'0');
      num/=10;
   }
   return buf;
}

void number_text(unsigned long number)
{
   int digit;
   print(itoa(number));
   print(": ");
   if(number>=1000000000) {
      digit=number/1000000000;
      print(name[digit]);
      print(" billion ");
      number%=1000000000;
   }
   if(number>=100000000) {
      digit=number/100000000;
      print(name[digit]);
      print(" hundred ");
      number%=100000000;
      if(number<1000000) {
         print("million ");
      }
   }
   if(number>=20000000) {
      digit=number/10000000;
      print(name[digit+20]);
      print_char(' ');
      number%=10000000;
      if(number<1000000) {
         print("million ");
      }
   }
   if(number>=1000000) {
      digit=number/1000000;
      print(name[digit]);
      print(" million ");
      number%=1000000;
   }
   if(number>=100000) {
      digit=number/100000;
      print(name[digit]);
      print(" hundred ");
      number%=100000;
      if(number<1000) {
         print("thousand ");
      }
   }
   if(number>=20000) {
      digit=number/10000;
      print(name[digit+20]);
      print_char(' ');
      number%=10000;
      if(number<1000) {
         print("thousand ");
      }
   }
   if(number>=1000) {
      digit=number/1000;
      print(name[digit]);
      print(" thousand ");
      number%=1000;
   }
   if(number>=100) {
      digit=number/100;
      print(name[digit]);
      print(" hundred ");
      number%=100;
   }
   if(number>=20) {
      digit=number/10;
      print(name[digit+20]);
      print_char(' ');
      number%=10;
   }
   print(name[number]);
   print_char('\r');
   print_char('\n');
}

void main()
{
   unsigned mem [1000];
   unsigned long number,i;
        for (i=0;i<10000;i++) {
                
                //print_uart(itoa(i));
        }       
}

Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

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