3 #pragma section CODE=IRAM,attr=CODE
4 const char ASCII[] = "0123456789ABCDEF";
8 // Initialize UART asynchronous mode
9 BGR04 = 416; // 38400 Baud @ 16MHz
11 SMR04 = 0x0d; // enable SOT3, Reset, normal mode
12 SSR04 = 0x00; // LSB first
13 PFR19 = (PFR19 & 0xFC) | 0x03; // enable UART: SIN,SOT for async. transfer
14 EPFR19 = 0x00; // enable UART
17 void Putch4(unsigned char ch) /* sends a char */
19 while (SSR04_TDRE == 0); /* wait for transmit buffer empty */
20 TDR04 = ch; /* put ch into buffer */
23 unsigned char Getch4(void) /* waits for and returns incomming char */
27 while(SSR04_RDRF == 0) /* wait for data received */
31 if ((SSR04 & 0xE0) != 0) { /* Check for errors PE, ORE, FRE */
32 SCR04_CRE = 1; /* Clear error flags */
34 return (ch); /* return char*/
40 void Puts4(const char *Name2)
45 for(i=0; i<strlen(Name2); i++) {
53 void Puthex4(unsigned long n, unsigned char digits)
55 unsigned char digit=0,div=0,i;
57 div=(4*(digits-1)); /* init shift divisor */
58 for (i=0;i<digits;i++) {
59 digit = ((n >> div)&0xF); /* get hex-digit value */
60 Putch4(digit + ((digit < 0xA) ? '0' : 'A' - 0xA));
61 div-=4; /* next digit shift */
65 void Putdec4(unsigned long x, int digits)
70 if (digits < 0) { /* should be print of zero? */
74 buf[digits]='\0'; /* end sign of string */
76 for (i=digits; i>0; i--) {
77 buf[i-1] = ASCII[x % 10]; // + '0' enough? :o
82 for (i=0; buf[i]=='0'; i++) { /* no print of zero */
87 Puts4(buf); /* send string */