Dieses Beispielprogramm erweitert das Beispiel Taster. Hier wird pro Tastendruck zusätzlich noch der String Test über die USART gesendet.

 

#include <p18cxxx.h>
#include <usart.h>
#include <delays.h>


// BAUD_RATE_GEN is calculated as = [Fosc / (64 * Desired Baudrate)] - 1
// It needs to be changed depending upon oscillator frequency.
// 20.000.000 Hz / (16 * 9600 Baud) - 1 = 129 (approx.)
#define BAUD_RATE_GEN 129 // Fosc = 20MHz, Baud Rate = 9600 bps

void main(void)
{
//-------------------------define pins------------------------------------------
// We need to set port D, bit 0 as an output
// Using TRISDbits instead of TRISD allows isolating a single bit leaving the other bits unchanged
TRISDbits.TRISD4=0; // 0 = output, 1 = input
TRISDbits.TRISD3=1; // 0 = output, 1 = input

// Set port D, bit 0 to off (driving the LED anode, cathode to ground)
PORTDbits.RD3=0; // switch
PORTDbits.RD4=1;

//-------------------------configure USART ---------------------------------------------------------
// API configures USART for desired parameters:
// - TX/RX interrupts turned off
// - Asynchronous mode
// - 8 bits
// - Continuous Receive Enabled
// - Low speed baud rate generator mode (Fosc / 16)
OpenUSART(USART_TX_INT_OFF | USART_RX_INT_OFF | USART_ASYNCH_MODE | USART_EIGHT_BIT | USART_CONT_RX | USART_BRGH_HIGH, BAUD_RATE_GEN);

while(1) // end of program
{
if( !PORTDbits.RD3 )
{
Delay1KTCYx(10);
while( !PORTDbits.RD3 );
putrsUSART( "Test" );
putrsUSART( "\r\n" ); // Send CR (/r) and LF (/n)
PORTDbits.RD4 ^= 1;
}
}
CloseUSART();
}

Die beiden Zeichen /r und /n haben die Bedeutung CR (carriage return) und LF (line feed). CR setzt den Cursor an den Anfang der Zeile. LF hingegen bedeutet eine neue Zeile.

Das Program ist für das Entwicklungsboard und ändert lediglich den Status eines LEDs auf Knopfdruck.

1 1 1 1 1 1 1 1 1 1 Rating 0.00 (0 Votes)