{
UartTxCount--; /* Decrement number of
characters left to send */
if (UartTxCount) {
UDR = UartTxBuf[UartTxRdPtr]; /* Place next character
into UART transmit register */
UartTxRdPtr++; /* Advance to next
character */
OSSemPost(UartTxSem); /* Signal that we have
room for one more character */
} else {
UCR &= ~0x40; /* Disable UART
transmit complete interrupt */
}
}
C:\SOFTWARE\UCOS-II\IAR\TEST\Test.c (189) : Error[Pe077]: this declaration has
no storage class or type specifier
C:\SOFTWARE\UCOS-II\IAR\TEST\Test.c (189) : Error[Pe065]: expected a ";"
C:\SOFTWARE\UCOS-II\IAR\TEST\Test.c (346) : Warning[Pe012]: parsing restarts
here after previous syntax error
#include "stdio.h"
#include "intrins.h"
#include "io196_kb.h"
#pragma language=extended
sfrb int_mask = 0x08;
sfrb int_mask1 = 0x13;
sfrb int_pend = 0x09;
sfrb int_pend1 = 0x12;
sfrb serial_port_status = 0x11;
sfrb wsr = 0x14;
sfrb receive_register = 0x7;
sfrb transmit_register = 0x7;
static char buff[20];
static char index;
/* Transmit interrupt routine: */
void interrupt [0x30] TI_interrupt(void)
{
if(index != 0)
{
wsr = 0; /* set wsr send byte */
transmit_register = buff[index]; /* send it out again */
index--;
}
}
/* Receive interrupt routine: */
void interrupt [0x32] RI_interrupt(void)
{
char shadow;
wsr = 0; /* set wsr to read incoming byte and status register:*/
shadow = serial_port_status;
if(index > 19) /* if the buffer is full, start over. */
index = 0;
buff[index] = receive_register;
/* wsr is set to send byte */
transmit_register = buff[index]; /* send it out again */
index++;
}
void main(void)
{
/* Initially, our buffer is empty */
index = 0;
/* Allow receive and transmit interrupt: */
int_mask1 = 0x03;
/* Enable interrupts:*/
enable_interrupt();
/* Wait for an incoming byte: */
while(1);
}