1 /* THIS SAMPLE CODE IS PROVIDED AS IS AND IS SUBJECT TO ALTERATIONS. FUJITSU */
\r
2 /* MICROELECTRONICS ACCEPTS NO RESPONSIBILITY OR LIABILITY FOR ANY ERRORS OR */
\r
3 /* ELIGIBILITY FOR ANY PURPOSES. */
\r
4 /* (C) Fujitsu Microelectronics Europe GmbH */
\r
5 /*---------------------------------------------------------------------------*/
\r
7 #include "mb91465k.h"
\r
9 const char ASCII[] = "0123456789ABCDEF";
\r
11 void InitUart4(void)
\r
13 // Initialize UART asynchronous mode
\r
14 // BGR04 = 1666; // 9600 Baud @ 16MHz
\r
15 BGR04 = 832; // 19200 Baud @ 16MHz
\r
16 // BGR04 = 416; // 38400 Baud @ 16MHz
\r
18 // BGR04 = 2083; // 9600 Baud @ 20MHz
\r
19 // BGR04 = 1041; // 19200 Baud @ 20MHz
\r
20 // BGR04 = 520; // 38400 Baud @ 20MHz
\r
22 // BGR04 = 2499; // 9600 Baud @ 24MHz
\r
23 // BGR04 = 1249; // 19200 Baud @ 24MHz
\r
24 // BGR04 = 624; // 38400 Baud @ 24MHz
\r
25 SCR04 = 0x17; // 8N1
\r
26 SMR04 = 0x0d; // enable SOT3, Reset, normal mode
\r
27 SSR04 = 0x00; // LSB first
\r
28 PFR19 = (PFR19 & 0xFC) | 0x03; // enable UART: SIN,SOT for async. transfer
\r
29 EPFR19 = 0x00; // enable UART
\r
32 void Putch4(char ch) /* sends a char */
\r
34 while (SSR04_TDRE == 0); /* wait for transmit buffer empty */
\r
35 TDR04 = ch; /* put ch into buffer */
\r
38 char Getch4(void) /* waits for and returns incomming char */
\r
40 volatile unsigned ch;
\r
45 while(SSR04_RDRF == 0) /* wait for data received */
\r
50 if ((SSR04 & 0xE0) != 0) /* Check for errors PE, ORE, FRE */
\r
52 SCR04_CRE = 1; /* Clear error flags */
\r
55 return (ch); /* return char */
\r
60 void Puts4(const char *Name2) /* Puts a String to UART */
\r
64 len = strlen(Name2);
\r
66 for (i=0; i<strlen(Name2); i++) /* go through string */
\r
70 Putch4(Name2[i]); /* send it out */
\r
75 char Echo4(void) /* Echo UART and return ch */
\r
79 Puts4("UART 4 receive: "); // send text to UART
\r
80 ch = RDR04; // readout character
\r
81 Putch4(ch); // send character to UART
\r
88 void Puthex4(unsigned long n, unsigned char digits)
\r
90 unsigned char digit=0,div=0,i;
\r
92 div=(4*(digits-1)); /* init shift divisor */
\r
93 for (i=0;i<digits;i++)
\r
95 digit = ((n >> div)&0xF); /* get hex-digit value */
\r
96 Putch4(digit + ((digit < 0xA) ? '0' : 'A' - 0xA));
\r
97 div-=4; /* next digit shift */
\r
101 void Putdec4(unsigned long x, int digits)
\r
104 char buf[10],sign=1;
\r
106 if (digits < 0) { /* should be print of zero? */
\r
110 buf[digits]='\0'; /* end sign of string */
\r
112 for (i=digits; i>0; i--) {
\r
113 buf[i-1] = ASCII[x % 10];
\r
119 for (i=0; buf[i]=='0'; i++) { /* no print of zero */
\r
125 Puts4(buf); /* send string */
\r