Embedded C program for sorting the numbers in ascending or descending orders. Consider any 2-sorting algorithms for menu driven program in PIC18 using MPLAB IDE

 Program:

#include <xc.h>

void main(void) {
  int i, j, key, temp, flag = 0, choice;
  int arr[] = {
    4,
    1,
    3,
    5,
    2
  };
  TRISB = 2;
  PORTB = 0x03;
  choice = 3;
  switch (choice) {
  case 1: {
    //bubble sort
    for (i = 1; i < 5; i++) {
      for (j = 0; j < 5 - i; j++) {
        if (arr[j] > arr[j + 1]) {
          temp = arr[j];
          arr[j] = arr[j + 1];
          arr[j + 1] = temp;
          flag = 1;
        }
      }
      if (flag == 0) {
        break;
      }
    }
    break;
  }
  case 2: {
    //descending order
    for (i = 1; i < 5; i++) {
      for (j = 0; j < 5 - i; j++) {
        if (arr[j] < arr[j + 1]) {
          temp = arr[j];
          arr[j] = arr[j + 1];
          arr[j + 1] = temp;
          flag = 1;
        }
      }
      if (flag == 0) {
        break;
      }
    }
    break;
  }
  case 3: {
    for (i = 1; i < 5; i++) {
      key = arr[i];
      j = i - 1;
      while (j >= 0 && arr[j] > key) {
        arr[j + 1] = arr[j];
        j = j - 1;
      }
      arr[j + 1] = key;
    }
    break;
  }
  case 4: {
    for (i = 1; i < 5; i++) {
      key = arr[i];
      j = i - 1;
      while (j >= 0 && arr[j] < key) {
        arr[j + 1] = arr[j];
        j = j - 1;
      }
      arr[j + 1] = key;
    }
    break;
  }

  }
  TRISB = 0;
  for (i = 0; i < 5; i++) {
    PORTB = arr[i];
  }
  return;
}

Output:

Fig: Variable Address

Fig: Before Sorting Array


Fig: After Sorting Array






Previous
Next Post »