Committed on the Free edition of March Hare Software CVSNT Server. Upgrade to CVS Suite for more features and support: http://march-hare.com/cvsnt/ git-svn-id: http://moon:8086/svn/vhdl/trunk@986 cc03376c-175c-47c8-b038-4cd826a8556b
97 lines
1.3 KiB
C
97 lines
1.3 KiB
C
//#include <stdio.h>
|
|
//#include <stdlib.h>
|
|
//#include <string.h>
|
|
|
|
int faculty(int f0, int *pDst, int len)
|
|
{
|
|
int i=0;
|
|
|
|
pDst[i++] = f0;
|
|
|
|
for (; i < len; i++)
|
|
{
|
|
pDst[i] = pDst[i-1] * i;
|
|
}
|
|
|
|
return i;
|
|
}
|
|
|
|
#define NUM_ELEMENTS 20
|
|
|
|
void saus(char c)
|
|
{
|
|
volatile char *pUART_stat = (char*)0x80000008;
|
|
volatile char *pUART_data = (char*)0x80000004;
|
|
|
|
while((0x02 & *pUART_stat) != 0);
|
|
|
|
*pUART_data = c;
|
|
}
|
|
|
|
int sputs(char *pStr)
|
|
{
|
|
char *start;
|
|
start = pStr;
|
|
|
|
while(*pStr)
|
|
saus(*(pStr++));
|
|
|
|
return pStr - start;
|
|
}
|
|
|
|
void print_word(int word)
|
|
{
|
|
int i;
|
|
unsigned char c, nibble;
|
|
|
|
for (i=0; i < 8; i++)
|
|
|
|
{
|
|
nibble = (char)((word >> 28) & 0xF);
|
|
word <<= 4;
|
|
|
|
if (nibble < 10)
|
|
c = nibble + '0';
|
|
else
|
|
c = nibble + 'A' - 10;
|
|
|
|
saus(c);
|
|
}
|
|
|
|
}
|
|
|
|
int main (void)
|
|
{
|
|
int buf[NUM_ELEMENTS], result, i, j, cnt;
|
|
volatile int *pReg = (int*)0x80000000;
|
|
volatile char *pUART_data = (char*)0x80000004;
|
|
volatile char *pUART_ctrl = (char*)0x80000008;
|
|
volatile char *pUART_baud = (char*)0x80000009;
|
|
char msg[] = "MIPS R3000 CPU\r\nReady\r\n";
|
|
|
|
*pUART_baud = 0x35;
|
|
*pUART_ctrl = 0x55;
|
|
|
|
cnt = 0;
|
|
memset(buf, 0, sizeof(buf));
|
|
|
|
sputs(msg);
|
|
|
|
buf[NUM_ELEMENTS-1] = 1;
|
|
while (1)
|
|
{
|
|
result = faculty(buf[NUM_ELEMENTS-1], buf, NUM_ELEMENTS);
|
|
|
|
for (i=0; i < NUM_ELEMENTS; i++)
|
|
{
|
|
print_word(buf[i]);
|
|
saus(13);
|
|
saus(10);
|
|
}
|
|
cnt++;
|
|
|
|
while(1);
|
|
}
|
|
}
|
|
|