Tuesday, May 11, 2021

RS-232 Example using PIC18F2550

In previous post, I have show an introductory example of using RS-232 library functions in CCS PICC. Here we will try to make more programming example using this compiler on the same topic. In this programming example, the program keep received character on this data memory, until the present of keyboard ENTER key "0x0D". At this point the micro-controller will send back all received characters.


 




CCS PICC Program:


#include <18f2550.h>

#include <string.h>

/*use external 20MHz crystal oscillator*/ 

#fuses HS,NOWDT,PLL1,CPUDIV1

#use delay(clock=20M)

#use rs232(uart1,baud=9600)


char tmp,i=0;

char txt[20];

   

void main(void){

   

   //Clear PortC

   output_C(0x00);

   //PortC as output

   set_tris_C(0x00);

   printf("CCS PICC String Example Using PIC18F2550\n\r");

   while(1){   

   /*Test if there is character in the buffer*/

      if(kbhit()){

         tmp=getc();

         putc(tmp);

         txt[i]=tmp;

         i++;        

      }

      /*Look for the present of ENTER key*/

      if(tmp==0x0D){

         //sendText(txt);

         printf("Received Text: %s\n",txt);

         /*Clear character*/

         tmp='\0';

         /*Clear text*/

         while(i>0){

            txt[i]='\0';

            i--;

         }

      }

   }

}


I use my own PIC18F2550 Test board to test this program getting an actual result.


RS-232 Example using PIC18F2550
Program testing on PIC18F2550 USB board

I send character via Serial Monitor tool of CCS PICC compiler. Its baud rate is 9600. COM1 is default for most desktop PC that come with RS-232 port.

RS-232 Example using PIC18F2550
Using Serial Monitor of CCS PICC compiler to send/receive ASCII character

As it's targeted PIC18F2550 this example program uses 2% of RAM, and 1% of ROM.



No comments:

Post a Comment

Search This Blog

Labels

25AA010A (1) 8051 (7) 93AA46B (1) ADC (30) Analog Comparator (1) Arduino (15) ARM (6) AT89C52 (7) ATMega32 (56) AVR (57) CCS PICC (28) DAC (1) DHT11 (2) Display (105) Distance Sensor (3) DS18B20 (3) dsPIC (2) dsPIC30F1010 (2) EEPROM (5) Environment Sensor (4) esp8266 (1) I2C (29) Input/Output (67) Interrupt (19) Keil (5) Keypad (10) LCD (47) Master/Slave (1) MAX7221 (1) MCP23017 (5) MCP23S17 (4) Meter (3) MikroC (2) Motor (15) MPLABX (71) Nokia 5110 LCD (3) OLED (2) One-Wire (6) Oscillator (8) PCB (6) PCD8544 (3) PCF8574 (5) PIC (107) PIC12F (2) PIC16F628A (2) PIC16F630 (1) PIC16F716 (3) PIC16F818 (10) PIC16F818/819 (2) PIC16F84A (15) PIC16F876A (1) PIC16F877A (9) PIC16F88 (1) PIC16F887 (60) PIC18 (19) PIC18F1220 (4) PIC18F2550 (3) PIC18F4550 (12) PWM (11) RTC (8) Sensor (10) SH1106 (1) Shift Register (11) Shift Registers (3) SPI (24) STM32 (6) STM32 Blue Pill (6) STM32CubeIDE (6) STM32F103C8T6 (6) SysTick (3) temperature sensor (11) Thermometer (21) Timer/Counter (31) TM1637 (2) UART (7) Ultrasonic (4) Voltmeter (7) WDT (1) XC16 (2) XC8 (94)