Tuesday, August 2, 2022

PIC18F4550 Programming Using MPLabX

PIC18F4550 is an enhanced Flash micro-controller with USB 2.0 feature. This device can operate up to 48MHz that yield the executing speed up to 12MIPS.

PIC18F4550 Programming in MPLabX
PIC18F4550 Family Data Summary

PIC18F4550 Programming in MPLabX

Program testing on target board

 There are some compilers available to program this device,

  • MPLABX XC8
  • MikroC Pro for PIC
  • IAR for PIC18
  • CCS PICC, and etc.

MPLABX XC8 is a free compiler from this device manufacturer. We can buy a paid version for a higher code generation quality.

In this example I use the MPLABX IDE to get start with this device programming. I use the latest version of MPLABX of 6.0, and the XC8 compiler of 2.40.

The program will chase the output LED(s) connect to PORTD.

PIC18F4550 Programming in MPLabX
Schematic
Source Code:

  1. /*
  2.  * File: main.c
  3.  * Author: aki-technical
  4.  *
  5.  * Created on August 1, 2022, 6:22 PM
  6.  */
  7.  
  8. #include <xc.h>
  9. #include "config18f4550.h"
  10.  
  11. #define _XTAL_FREQ 20000000
  12.  
  13. void main(void) {
  14. PORTD=0x00;
  15. LATD=0x00;
  16. TRISD=0x00;
  17. LATD=0x01;
  18. while(1){
  19. LATD=0x01;
  20. while(LATD!=0){
  21. LATD<<=1;
  22. __delay_ms(50);
  23. }
  24. }
  25. return;
  26. }
  27.  

Configuration File:

  1. // CONFIG1L
  2. #pragma config PLLDIV = 1
  3. #pragma config CPUDIV = OSC1_PLL2
  4. #pragma config USBDIV = 1
  5.  
  6. // CONFIG1H
  7. #pragma config FOSC = HS
  8. #pragma config FCMEN = OFF
  9. #pragma config IESO = OFF
  10. // CONFIG2L
  11. #pragma config PWRT = OFF
  12. #pragma config BOR = OFF
  13. #pragma config BORV = 3
  14. #pragma config VREGEN = OFF
  15.  
  16. // CONFIG2H
  17. #pragma config WDT = OFF
  18. #pragma config WDTPS = 32768
  19.  
  20. // CONFIG3H
  21. #pragma config CCP2MX = OFF
  22. #pragma config PBADEN = OFF
  23. #pragma config LPT1OSC = OFF
  24. #pragma config MCLRE = ON
  25.  
  26. // CONFIG4L
  27. #pragma config STVREN = OFF
  28. #pragma config LVP = OFF
  29. #pragma config ICPRT = OFF
  30. #pragma config XINST = OFF
  31.  
  32. // CONFIG5L
  33. #pragma config CP0 = OFF
  34. #pragma config CP1 = OFF
  35. #pragma config CP2 = OFF
  36. #pragma config CP3 = OFF
  37.  
  38. // CONFIG5H
  39. #pragma config CPB = OFF
  40. #pragma config CPD = OFF
  41.  
  42. // CONFIG6L
  43. #pragma config WRT0 = OFF
  44. #pragma config WRT1 = OFF
  45. #pragma config WRT2 = OFF
  46. #pragma config WRT3 = OFF
  47.  
  48. // CONFIG6H
  49. #pragma config WRTC = OFF
  50. #pragma config WRTB = OFF
  51. #pragma config WRTD = OFF
  52.  
  53. // CONFIG7L
  54. #pragma config EBTR0 = OFF
  55. #pragma config EBTR1 = OFF
  56. #pragma config EBTR2 = OFF
  57. #pragma config EBTR3 = OFF
  58.  
  59. // CONFIG7H
  60. #pragma config EBTRB = OFF
  61.  

Click here to download its source file. I use Protues 8.10 SP3 to simulate this program. Now let try an random LED output on PORTD.

  1. /*
  2.  * File: main.c
  3.  * Author: aki-technical
  4.  *
  5.  * Created on August 1, 2022, 6:22 PM
  6.  */
  7.  
  8. #include <xc.h>
  9. #include "config18f4550.h"
  10.  
  11. #define _XTAL_FREQ 20000000
  12.  
  13. void main(void) {
  14. PORTD=0x00;
  15. LATD=0x00;
  16. TRISD=0x00;
  17. LATD=0x01;
  18. while(1){
  19. LATD=rand();
  20. __delay_ms(50);
  21. }
  22. return;
  23. }
  24.  

The schematic diagram remains the same as the previous one's.


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 (54) 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 (46) Master/Slave (1) MAX7221 (1) MCP23017 (5) MCP23S17 (4) Meter (3) MikroC (2) Motor (15) MPLABX (66) 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 (2) SPI (24) STM32 (6) STM32 Blue Pill (6) STM32CubeIDE (6) STM32F103C8T6 (6) SysTick (3) temperature sensor (11) Thermometer (21) Timer/Counter (30) TM1637 (2) UART (7) Ultrasonic (4) Voltmeter (7) WDT (1) XC16 (2) XC8 (94)