Bibliotecas MikroC PRO for PIC: UART
BIBLIOTECA UART
UART (Universal Assynchronous Receiver-Transmitter) é um módulo que possibilita a transmissão e recepção serial de dados originalmente disponíveis na forma paralela.
A biblioteca UART oferece trabalho confortável com o modo (full duplex) assíncrono, via protocolo RS-232.
Você pode facilmente se comunicar com outros dispositivos via protocolo RS-232 (por exemplo, com PC).Você precisa de um MCU PIC com hardware integrado UART, por exemplo 16F887.
Rotinas:
UART_Set_Active(char (*read_ptr)(), void (*write_ptr), char (*ready_ptr)(), char (*tx_idle_ptr()) - Alterna entre os módulos UART.
read_ptr - UARTx_Read;
write_ptr - UARTx_Write;
ready_ptr - UARTx_Data_Ready;
tx_idle_ptr - UARTx_Tx_Idle;
Exemplo:
UART_Set_Active(&UART1_Read, &UART1_Write, &UART1_Data_Ready, &UART1_Tx_Idle);
// Ativa o módulo UART1
// Ativa o módulo UART1
UART_Set_Active(&UART2_Read, &UART2_Write, &UART2_Data_Ready, &UART2_Tx_Idle);
// Ativa o módulo UART2
// Ativa o módulo UART2
OBS.: 'x' especifica o módulo a ser utilizado.
UARTx_Init(const unsigned long baud_rate) - Alterna entre os módulos UART.
baud_rate- Taxa de transmissão;
UARTx_Data_Ready() - Retorna 1 se há dados sendo recebidos; e 0 se não há dados sendo recebidos.
UARTx_Tx_Idle() - Retorna 1 se há dados sendo transmitidos; e 0 se não há dados sendo transmitidos.
UARTx_Read() - Retorna o dado recebido. Use em conjunto com a função UARTx_Data_Ready();
UARTx_Read_Text(char Output, char Delimiter, char Attempts) - Lê caracteres recebidos via UART até a sequência delimiter for detectado.
Output - Texto recebido.
Delimiter - Sequência de caracters para determinar o fim da recepção.
Attempts - Determina o numero de caracteres recebidos.
UARTx_Write(char data) - Transmite um caracter via UART.
data - código do caracter a ser enviado (ver tabela ASCII);
UARTx_Write_Text(char text) - Transmite um caracter via UART.
text- Texto a ser enviado.
EXEMPLO:
char uart_rd; void main() { ANSEL = 0; // Configure AN pins as digital ANSELH = 0; UART1_Init(9600); // Initialize UART module at 9600 bps Delay_ms(100); // Wait for UART module to stabilize UART1_Write_Text("Start"); UART1_Write(10); UART1_Write(13); while (1) { // Endless loop if (UART1_Data_Ready()) { // If data is received, uart_rd = UART1_Read(); // read the received data, UART1_Write(uart_rd); // and send data via UART } } }
Como posso fazer usart para pic16f628a
ResponderExcluir