Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * File: Main.c
- * Author: gpare
- *
- * Created on June 13, 2019, 2:22 PM
- */
- #define _XTAL_FREQ 32000000
- // PIC16F18875 Configuration Bit Settings
- // 'C' source line config statements
- // CONFIG1
- #pragma config FEXTOSC = HS // External Oscillator mode selection bits (EC above 8MHz; PFM set to high power)
- #pragma config RSTOSC = HFINT32 // Power-up default value for COSC bits (EXTOSC operating per FEXTOSC bits)
- #pragma config CLKOUTEN = OFF // Clock Out Enable bit (CLKOUT function is disabled; i/o or oscillator function on OSC2)
- #pragma config CSWEN = ON // Clock Switch Enable bit (Writing to NOSC and NDIV is allowed)
- #pragma config FCMEN = ON // Fail-Safe Clock Monitor Enable bit (FSCM timer enabled)
- // CONFIG2
- #pragma config MCLRE = ON // Master Clear Enable bit (MCLR pin is Master Clear function)
- #pragma config PWRTE = OFF // Power-up Timer Enable bit (PWRT disabled)
- #pragma config LPBOREN = OFF // Low-Power BOR enable bit (ULPBOR disabled)
- #pragma config BOREN = ON // Brown-out reset enable bits (Brown-out Reset Enabled, SBOREN bit is ignored)
- #pragma config BORV = LO // Brown-out Reset Voltage Selection (Brown-out Reset Voltage (VBOR) set to 1.9V on LF, and 2.45V on F Devices)
- #pragma config ZCD = OFF // Zero-cross detect disable (Zero-cross detect circuit is disabled at POR.)
- #pragma config PPS1WAY = ON // Peripheral Pin Select one-way control (The PPSLOCK bit can be cleared and set only once in software)
- #pragma config STVREN = ON // Stack Overflow/Underflow Reset Enable bit (Stack Overflow or Underflow will cause a reset)
- // CONFIG3
- #pragma config WDTCPS = WDTCPS_31// WDT Period Select bits (Divider ratio 1:65536; software control of WDTPS)
- #pragma config WDTE = ON // WDT operating mode (WDT enabled regardless of sleep; SWDTEN ignored)
- #pragma config WDTCWS = WDTCWS_7// WDT Window Select bits (window always open (100%); software control; keyed access not required)
- #pragma config WDTCCS = SC // WDT input clock selector (Software Control)
- // CONFIG4
- #pragma config WRT = OFF // UserNVM self-write protection bits (Write protection off)
- #pragma config SCANE = available// Scanner Enable bit (Scanner module is available for use)
- #pragma config LVP = ON // Low Voltage Programming Enable bit (Low Voltage programming enabled. MCLR/Vpp pin function is MCLR.)
- // CONFIG5
- #pragma config CP = OFF // UserNVM Program memory code protection bit (Program Memory code protection disabled)
- #pragma config CPD = OFF // DataNVM code protection bit (Data EEPROM code protection disabled)
- // #pragma config statements should precede project file includes.
- // Use project enums instead of #define for ON and OFF.
- #include <xc.h>
- void displayNumberOne(int);
- void displayNumberTwo(int);
- void displayNumberThree(int);
- void displayNumberFour(int);
- void main(void)
- {
- TRISC = 0b00000000; //Register to display data(for number on VFD tube) on display bus (7 bit)
- TRISD = 0b0000; //Register to select what number to address
- TRISA = 0x00;
- PORTA = 0xFF;
- PORTC = 0;
- PORTD = 0;
- return; //Restart program
- }
- void displayNumberOne(int number){
- //Turn On Number One Bit
- RD0 = 1;
- //**********************
- if(number == 1){
- }else if(number == 2){
- }else if(number == 3){
- }else if(number == 4){
- }else if(number == 5){
- }else if(number == 6){
- }else if(number == 7){
- }else if(number == 8){
- }else if(number == 9){
- }
- //Turn Off Number One Bit
- RD0 = 0;
- return;
- }
- void displayNumberTwo(int number){
- //Turn On Number Two Bit
- RD1 = 1;
- //**********************
- if(number == 1){
- }else if(number == 2){
- }else if(number == 3){
- }else if(number == 4){
- }else if(number == 5){
- }else if(number == 6){
- }else if(number == 7){
- }else if(number == 8){
- }else if(number == 9){
- }
- //Turn Off Number Two Bit
- RD1 = 0;
- //**********************
- return;
- }
- void displayNumberThree(int number){
- //Turn On Number Three Bit
- RD2 = 1;
- //**********************
- if(number == 1){
- }else if(number == 2){
- }else if(number == 3){
- }else if(number == 4){
- }else if(number == 5){
- }else if(number == 6){
- }else if(number == 7){
- }else if(number == 8){
- }else if(number == 9){
- }
- //Turn Off Number Three Bit
- RD2 = 0;
- //**********************
- return;
- }
- void displayNumberFour(int number){
- //Turn On Number Four Bit
- RD3 = 1;
- //**********************
- if(number == 1){
- }else if(number == 2){
- }else if(number == 3){
- }else if(number == 4){
- }else if(number == 5){
- }else if(number == 6){
- }else if(number == 7){
- }else if(number == 8){
- }else if(number == 9){
- }
- //Turn Off Number Four Bit
- RD3 = 0;
- //**********************
- return;
- }
- //*****************************************************************************************
- //*notes | 0b00000000 0b means use binary 00000000 means all register bits are output *
- //* | 0x00 0x for hex notation, 00 for all pins output. FF for all pins input*
- //*****************************************************************************************
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement