PIC16F877A делаем игровые автоматы (казино) на языке С в MPLab X

На семисегментном четырёх разрядном (4 цифры) индикаторе цифры меняются от 1 до 3, при нажатии на кнопку фиксируется одна из цифр в памяти, далее выбор переходит к следующему разряду, в конце стоит условие, которое будет сравнивать выпавшие цифры.

Соединил две предыдущие статьи между собой и получил казино:
Подключаем многоразрядный семисегментный индикатор к pic16f877
Добавляем кнопку к pic16f877 на языке С (MPLab X 5.35)

Кнопка на RC7, минуса для смены разрядов на семисегментном индикаторе на RA0,RA1,RA2,RA3 и сами цифры на PORTB с 0 пина по 6.

Если Вам выпало четыре одинаковые цифры, то в конце зажигаются – данные цифры, если же нет, то горит минус:

Видео:

Скачать hex и С файлы казино:
– скачать в zip формате
– скачать в tar.gz формате

Код казино на языке С в MPLab X 5.35:

#include <xc.h>
  
#define _XTAL_FREQ 20000000 //Specify the XTAL crystal FREQ 
  
// Configuration Byte
#pragma config FOSC = HS        // Oscillator Selection bits (HS oscillator)
#pragma config WDTE = OFF       // Watchdog Timer Enable bit (WDT disabled)
#pragma config PWRTE = OFF      // Power-up Timer Enable bit (PWRT disabled)
#pragma config BOREN = ON       // Brown-out Reset Enable bit (BOR enabled)
#pragma config LVP = OFF         // Low-Voltage (Single-Supply) In-Circuit Serial Programming Enable bit (RB3/PGM pin has PGM function; low-voltage programming enabled)
#pragma config CPD = OFF        // Data EEPROM Memory Code Protection bit (Data EEPROM code protection off)
#pragma config WRT = OFF        // Flash Program Memory Write Enable bits (Write protection off; all program memory may be written to by EECON control)
#pragma config CP = OFF   
 
 
void main() //The main function
{
TRISC = 0b10000000; //knopka na RC7
TRISA = 0b00000000; //Minusa na razradi
TRISB = 0b00000000; //cifri
PORTC = 0b10000000; //knopka na RC7
PORTA = 0b00000000; //Minusa na pozicii
PORTB = 0b00000000; //cifri vivod
 
 
int m = 0;
int p = 0;  //pozicii cifr
int k = 0;  //kakaya cifra
int k2 = 0;  //kakaya cifra
int k3 = 0;  //kakaya cifra
int k4 = 0;  //kakaya cifra


 
 
    while(p==0)
    {
        for (m = 0; m <= 20; ++m)
        { 
        PORTA = 0b00000001; //minus na pozicii 1
        PORTB = 0b01000000; //- na pozicii 1
        __delay_ms(4); 
        PORTA = 0b00000010; //minus na pozicii 2
        PORTB = 0b01000000; //- na pozicii 2
        __delay_ms(4); 
        PORTA = 0b00000100; //minus na pozicii 3
        PORTB = 0b01000000; //- na pozicii 3
        __delay_ms(4); 
        PORTA = 0b00001000; //minus na pozicii 4
        PORTB = 0b00001100; //1 na pozicii 4
        __delay_ms(4);
        
             if (PORTCbits.RC7==0)
            {
                 p=1;
                 k=1;
                 __delay_ms(100);
                 goto label1;
                 break;
                 
            }
        }
        
        PORTCbits.RC7=1;
        m = 0;
        
        for (m = 0; m <= 20; ++m)
        { 
        PORTA = 0b00000001; //minus na pozicii 1
        PORTB = 0b01000000; //- na pozicii 1
        __delay_ms(4); 
        PORTA = 0b00000010; //minus na pozicii 2
        PORTB = 0b01000000; //- na pozicii 2
        __delay_ms(4); 
        PORTA = 0b00000100; //minus na pozicii 3
        PORTB = 0b01000000; //- na pozicii 3
        __delay_ms(4); 
        PORTA = 0b00001000; //minus na pozicii 4
        PORTB = 0b01110110; //2 na pozicii 4
        __delay_ms(4);
        
             if (PORTCbits.RC7==0)
            {
                 p=1;
                 k=2;
                 __delay_ms(100);
                 goto label1;
                 break;
            }
        }
        
        PORTCbits.RC7=1;
        m = 0;
        for (m = 0; m <= 20; ++m)
        { 
        PORTA = 0b00000001; //minus na pozicii 1
        PORTB = 0b01000000; //- na pozicii 1
        __delay_ms(4); 
        PORTA = 0b00000010; //minus na pozicii 2
        PORTB = 0b01000000; //- na pozicii 2
        __delay_ms(4); 
        PORTA = 0b00000100; //minus na pozicii 3
        PORTB = 0b01000000; //- na pozicii 3
        __delay_ms(4); 
        PORTA = 0b00001000; //minus na pozicii 4
        PORTB = 0b01011110; //3 na pozicii 4
        __delay_ms(4);
        
             if (PORTCbits.RC7==0)
            {
                 p=1;
                 k=3;
                 __delay_ms(100);
                 goto label1;
                 break;
            }
        }
        
        PORTCbits.RC7=1;
        m = 0;
  
    }


label1:
__delay_ms(100);
PORTCbits.RC7=1;
__delay_ms(100);


while(p==1)
    {
        for (m = 0; m <= 20; ++m)
        { 
        PORTA = 0b00000001; //minus na pozicii 1
        PORTB = 0b01000000; //- na pozicii 1
        __delay_ms(4); 
        PORTA = 0b00000010; //minus na pozicii 2
        PORTB = 0b01000000; //- na pozicii 2
        __delay_ms(4); 
        PORTA = 0b00000100; //minus na pozicii 3
        PORTB = 0b00001100; //1 na pozicii 4
        __delay_ms(4); 
        PORTA = 0b00001000; //minus na pozicii 4
        PORTB = 0b01000000; //- na pozicii 3
        __delay_ms(4);
        
             if (PORTCbits.RC7==0)
            {
                 p=2;
                 k2=1;
                 __delay_ms(100);
                 goto label2;
                 break;
            }
        }
        
        PORTCbits.RC7=1;
        m = 0;
        
        for (m = 0; m <= 20; ++m)
        { 
        PORTA = 0b00000001; //minus na pozicii 1
        PORTB = 0b01000000; //- na pozicii 1
        __delay_ms(4); 
        PORTA = 0b00000010; //minus na pozicii 2
        PORTB = 0b01000000; //- na pozicii 2
        __delay_ms(4); 
        PORTA = 0b00000100; //minus na pozicii 3
        PORTB = 0b01110110; //2 na pozicii 4
        __delay_ms(4); 
        PORTA = 0b00001000; //minus na pozicii 4
        PORTB = 0b01000000; //- na pozicii 3
        __delay_ms(4);
        
             if (PORTCbits.RC7==0)
            {
                 p=2;
                 k2=2;
                 __delay_ms(100);
                 goto label2;
                 break;
            }
        }
        
        PORTCbits.RC7=1;
        m = 0;
        
        for (m = 0; m <= 20; ++m)
        { 
        PORTA = 0b00000001; //minus na pozicii 1
        PORTB = 0b01000000; //- na pozicii 1
        __delay_ms(4); 
        PORTA = 0b00000010; //minus na pozicii 2
        PORTB = 0b01000000; //- na pozicii 2
        __delay_ms(4); 
        PORTA = 0b00000100; //minus na pozicii 3
        PORTB = 0b01011110; //3 na pozicii 4
        __delay_ms(4); 
        PORTA = 0b00001000; //minus na pozicii 4
        PORTB = 0b01000000; //- na pozicii 3
        __delay_ms(4);
        
             if (PORTCbits.RC7==0)
            {
                 p=2;
                 k2=3;
                 __delay_ms(100);
                 goto label2;
                 break;
            }
        }
        
        PORTCbits.RC7=1;
        m = 0;
  
    }

label2:
__delay_ms(100);
PORTCbits.RC7=1;
__delay_ms(100);

while(p==2)
    {
        for (m = 0; m <= 20; ++m)
        { 
        PORTA = 0b00000001; //minus na pozicii 1
        PORTB = 0b01000000; //- na pozicii 1
        __delay_ms(4); 
        PORTA = 0b00000010; //minus na pozicii 2
        PORTB = 0b00001100; //1 na pozicii 4
        __delay_ms(4); 
        PORTA = 0b00000100; //minus na pozicii 3
        PORTB = 0b01000000; //- na pozicii 2
        __delay_ms(4); 
        PORTA = 0b00001000; //minus na pozicii 4
        PORTB = 0b01000000; //- na pozicii 3
        __delay_ms(4);
        
             if (PORTCbits.RC7==0)
            {
                 p=3;
                 k3=1;
                 __delay_ms(100);
                 goto label3;
                 break;
            }
        }
        PORTCbits.RC7=1;
        m = 0;
        
        for (m = 0; m <= 20; ++m)
        { 
        PORTA = 0b00000001; //minus na pozicii 1
        PORTB = 0b01000000; //- na pozicii 1
        __delay_ms(4); 
        PORTA = 0b00000010; //minus na pozicii 2
        PORTB = 0b01110110; //2 na pozicii 4
        
        __delay_ms(4); 
        PORTA = 0b00000100; //minus na pozicii 3
        PORTB = 0b01000000; //- na pozicii 2
        __delay_ms(4); 
        PORTA = 0b00001000; //minus na pozicii 4
        PORTB = 0b01000000; //- na pozicii 3
        __delay_ms(4);
        
             if (PORTCbits.RC7==0)
            {
                 p=3;
                 k3=2;
                 __delay_ms(100);
                 goto label3;
                 break;
            }
        }
        PORTCbits.RC7=1;
        m = 0;
        for (m = 0; m <= 20; ++m)
        { 
        PORTA = 0b00000001; //minus na pozicii 1
        PORTB = 0b01000000; //- na pozicii 1
        __delay_ms(4); 
        PORTA = 0b00000010; //minus na pozicii 2
        PORTB = 0b01011110; //3 na pozicii 4
        
        __delay_ms(4); 
        PORTA = 0b00000100; //minus na pozicii 3
        PORTB = 0b01000000; //- na pozicii 2
        __delay_ms(4); 
        PORTA = 0b00001000; //minus na pozicii 4
        PORTB = 0b01000000; //- na pozicii 3
        __delay_ms(4);
        
             if (PORTCbits.RC7==0)
            {
                 p=3;
                 k3=3;
                 __delay_ms(100);
                 goto label3;
                 break;
            }
        }
        PORTCbits.RC7=1;
        m = 0;
  
    }

label3:
__delay_ms(100);
PORTCbits.RC7=1;
__delay_ms(100);


while(p==3)
    {
        for (m = 0; m <= 20; ++m)
        { 
        PORTA = 0b00000001; //minus na pozicii 1
        PORTB = 0b00001100; //1 na pozicii 4
        
        __delay_ms(4); 
        PORTA = 0b00000010; //minus na pozicii 2
        PORTB = 0b01000000; //- na pozicii 1
        __delay_ms(4); 
        PORTA = 0b00000100; //minus na pozicii 3
        PORTB = 0b01000000; //- na pozicii 2
        __delay_ms(4); 
        PORTA = 0b00001000; //minus na pozicii 4
        PORTB = 0b01000000; //- na pozicii 3
        __delay_ms(4);
        
             if (PORTCbits.RC7==0)
            {
                 p=4;
                 k4=1;
                 __delay_ms(100);
                 goto label4;
                 break;
            }
        }
        PORTCbits.RC7=1;
        m = 0;
        
        for (m = 0; m <= 20; ++m)
        { 
        PORTA = 0b00000001; //minus na pozicii 1
        PORTB = 0b01110110; //2 na pozicii 4
        
        __delay_ms(4); 
        PORTA = 0b00000010; //minus na pozicii 2
        PORTB = 0b01000000; //- na pozicii 1
        
        __delay_ms(4); 
        PORTA = 0b00000100; //minus na pozicii 3
        PORTB = 0b01000000; //- na pozicii 2
        __delay_ms(4); 
        PORTA = 0b00001000; //minus na pozicii 4
        PORTB = 0b01000000; //- na pozicii 3
        __delay_ms(4);
        
             if (PORTCbits.RC7==0)
            {
                 p=4;
                 k4=2;
                 __delay_ms(100);
                 goto label4;
                 break;
            }
        }
        PORTCbits.RC7=1;
        m = 0;
        for (m = 0; m <= 20; ++m)
        { 
        PORTA = 0b00000001; //minus na pozicii 1
        PORTB = 0b01011110; //3 na pozicii 4
        
        __delay_ms(4); 
        PORTA = 0b00000010; //minus na pozicii 2
        PORTB = 0b01000000; //- na pozicii 1
        
        __delay_ms(4); 
        PORTA = 0b00000100; //minus na pozicii 3
        PORTB = 0b01000000; //- na pozicii 2
        __delay_ms(4); 
        PORTA = 0b00001000; //minus na pozicii 4
        PORTB = 0b01000000; //- na pozicii 3
        __delay_ms(4);
        
             if (PORTCbits.RC7==0)
            {
                 p=4;
                 k4=3;
                 __delay_ms(100);
                 goto label4;
                 break;
            }
        }
        PORTCbits.RC7=1;
        m = 0;
  
    }

label4:
__delay_ms(100);
PORTCbits.RC7=1;
__delay_ms(100);


    while(p==4)
    {
        
        
        if (k==1 && k2==1 && k3==1 && k4==1) 
        {
            PORTA = 0b00000001; //minus na pozicii 1
            PORTB = 0b00001100; //- na pozicii 1
            __delay_ms(4); 
            PORTA = 0b00000010; //minus na pozicii 2
            PORTB = 0b00001100;; //- na pozicii 2
            __delay_ms(4); 
            PORTA = 0b00000100; //minus na pozicii 3
            PORTB = 0b00001100; //1 na pozicii 3
            __delay_ms(4); 
            PORTA = 0b00001000; //minus na pozicii 4
            PORTB = 0b00001100; //1 na pozicii 4
            __delay_ms(4);  
            
        }

         if (k==2 && k2==2 && k3==2 && k4==2) 
        {
            PORTA = 0b00000001; //minus na pozicii 1
            PORTB = 0b01110110; //- na pozicii 1
            __delay_ms(4); 
            PORTA = 0b00000010; //minus na pozicii 2
            PORTB = 0b01110110; //- na pozicii 2
            __delay_ms(4); 
            PORTA = 0b00000100; //minus na pozicii 3
            PORTB = 0b01110110; //1 na pozicii 3
            __delay_ms(4); 
            PORTA = 0b00001000; //minus na pozicii 4
            PORTB = 0b01110110; //1 na pozicii 4
            __delay_ms(4);  

        }

        if (k==3 && k2==3 && k3==3 && k4==3) 
        {
            PORTA = 0b00000001; //minus na pozicii 1
            PORTB = 0b01011110; //- na pozicii 1
            __delay_ms(4); 
            PORTA = 0b00000010; //minus na pozicii 2
            PORTB = 0b01011110; //- na pozicii 2
            __delay_ms(4); 
            PORTA = 0b00000100; //minus na pozicii 3
            PORTB = 0b01011110; //1 na pozicii 3
            __delay_ms(4); 
            PORTA = 0b00001000; //minus na pozicii 4
            PORTB = 0b01011110; //1 na pozicii 4
            __delay_ms(4);  

        } 
        
    }

}

————————————-ГОТОВЫЙ КОД КАЗИНО———————————————
—————————————————
Добавил до 9 на каждом разряде семисегментного индикатора.

Скачать код на С и hex файл можно здесь:
– скачать в zip архиве
– скачать в tar.gz архиве.

break – можно удалить из кода.

Скачать С без breake:
– скачать zip архив.

——————————————-

#include <xc.h>
  
#define _XTAL_FREQ 20000000 //Specify the XTAL crystal FREQ 
  
// Configuration Byte
#pragma config FOSC = HS        // Oscillator Selection bits (HS oscillator)
#pragma config WDTE = OFF       // Watchdog Timer Enable bit (WDT disabled)
#pragma config PWRTE = OFF      // Power-up Timer Enable bit (PWRT disabled)
#pragma config BOREN = ON       // Brown-out Reset Enable bit (BOR enabled)
#pragma config LVP = OFF         // Low-Voltage (Single-Supply) In-Circuit Serial Programming Enable bit (RB3/PGM pin has PGM function; low-voltage programming enabled)
#pragma config CPD = OFF        // Data EEPROM Memory Code Protection bit (Data EEPROM code protection off)
#pragma config WRT = OFF        // Flash Program Memory Write Enable bits (Write protection off; all program memory may be written to by EECON control)
#pragma config CP = OFF   
 
 
void main() //The main function
{
TRISC = 0b10000000; //knopka na RC7
TRISA = 0b00000000; //Minusa na razradi
TRISB = 0b00000000; //cifri
PORTC = 0b10000000; //knopka na RC7
PORTA = 0b00000000; //Minusa na pozicii
PORTB = 0b00000000; //cifri vivod
 
 
int m = 0;
int p = 0;  //pozicii cifr
int k = 0;  //kakaya cifra
int k2 = 0;  //kakaya cifra
int k3 = 0;  //kakaya cifra
int k4 = 0;  //kakaya cifra


 
 
    while(p==0)
    {
        for (m = 0; m <= 125; ++m)
        { 
        PORTA = 0b00000001; //minus na pozicii 1
        PORTB = 0b01000000; //- na pozicii 1
        __delay_ms(4); 
        PORTA = 0b00000010; //minus na pozicii 2
        PORTB = 0b01000000; //- na pozicii 2
        __delay_ms(4); 
        PORTA = 0b00000100; //minus na pozicii 3
        PORTB = 0b01000000; //- na pozicii 3
        __delay_ms(4); 
        PORTA = 0b00001000; //minus na pozicii 4
        PORTB = 0b00001100; //1 na pozicii 4
        __delay_ms(4);
        
             if (PORTCbits.RC7==0)
            {
                 p=1;
                 k=1;
                 __delay_ms(100);
                 goto label1;
                 break;
                 
            }
        }
        
        PORTCbits.RC7=1;
        m = 0;
        
        for (m = 0; m <= 125; ++m)
        { 
        PORTA = 0b00000001; //minus na pozicii 1
        PORTB = 0b01000000; //- na pozicii 1
        __delay_ms(4); 
        PORTA = 0b00000010; //minus na pozicii 2
        PORTB = 0b01000000; //- na pozicii 2
        __delay_ms(4); 
        PORTA = 0b00000100; //minus na pozicii 3
        PORTB = 0b01000000; //- na pozicii 3
        __delay_ms(4); 
        PORTA = 0b00001000; //minus na pozicii 4
        PORTB = 0b01110110; //2 na pozicii 4
        __delay_ms(4);
        
             if (PORTCbits.RC7==0)
            {
                 p=1;
                 k=2;
                 __delay_ms(100);
                 goto label1;
                 break;
            }
        }
        
        PORTCbits.RC7=1;
        m = 0;
        for (m = 0; m <= 125; ++m)
        { 
        PORTA = 0b00000001; //minus na pozicii 1
        PORTB = 0b01000000; //- na pozicii 1
        __delay_ms(4); 
        PORTA = 0b00000010; //minus na pozicii 2
        PORTB = 0b01000000; //- na pozicii 2
        __delay_ms(4); 
        PORTA = 0b00000100; //minus na pozicii 3
        PORTB = 0b01000000; //- na pozicii 3
        __delay_ms(4); 
        PORTA = 0b00001000; //minus na pozicii 4
        PORTB = 0b01011110; //3 na pozicii 4
        __delay_ms(4);
        
             if (PORTCbits.RC7==0)
            {
                 p=1;
                 k=3;
                 __delay_ms(100);
                 goto label1;
                 break;
            }
        }
        
        PORTCbits.RC7=1;
        m = 0;
  
    }


label1:
__delay_ms(100);
PORTCbits.RC7=1;
__delay_ms(100);


while(p==1)
    {
        for (m = 0; m <= 125; ++m)
        { 
        PORTA = 0b00000001; //minus na pozicii 1
        PORTB = 0b01000000; //- na pozicii 1
        __delay_ms(4); 
        PORTA = 0b00000010; //minus na pozicii 2
        PORTB = 0b01000000; //- na pozicii 2
        __delay_ms(4); 
        PORTA = 0b00000100; //minus na pozicii 3
        PORTB = 0b00001100; //1 na pozicii 4
        __delay_ms(4); 
        PORTA = 0b00001000; //minus na pozicii 4
        PORTB = 0b01000000; //- na pozicii 3
        __delay_ms(4);
        
             if (PORTCbits.RC7==0)
            {
                 p=2;
                 k2=1;
                 __delay_ms(100);
                 goto label2;
                 break;
            }
        }
        
        PORTCbits.RC7=1;
        m = 0;
        
        for (m = 0; m <= 125; ++m)
        { 
        PORTA = 0b00000001; //minus na pozicii 1
        PORTB = 0b01000000; //- na pozicii 1
        __delay_ms(4); 
        PORTA = 0b00000010; //minus na pozicii 2
        PORTB = 0b01000000; //- na pozicii 2
        __delay_ms(4); 
        PORTA = 0b00000100; //minus na pozicii 3
        PORTB = 0b01110110; //2 na pozicii 4
        __delay_ms(4); 
        PORTA = 0b00001000; //minus na pozicii 4
        PORTB = 0b01000000; //- na pozicii 3
        __delay_ms(4);
        
             if (PORTCbits.RC7==0)
            {
                 p=2;
                 k2=2;
                 __delay_ms(100);
                 goto label2;
                 break;
            }
        }
        
        PORTCbits.RC7=1;
        m = 0;
        
        for (m = 0; m <= 125; ++m)
        { 
        PORTA = 0b00000001; //minus na pozicii 1
        PORTB = 0b01000000; //- na pozicii 1
        __delay_ms(4); 
        PORTA = 0b00000010; //minus na pozicii 2
        PORTB = 0b01000000; //- na pozicii 2
        __delay_ms(4); 
        PORTA = 0b00000100; //minus na pozicii 3
        PORTB = 0b01011110; //3 na pozicii 4
        __delay_ms(4); 
        PORTA = 0b00001000; //minus na pozicii 4
        PORTB = 0b01000000; //- na pozicii 3
        __delay_ms(4);
        
             if (PORTCbits.RC7==0)
            {
                 p=2;
                 k2=3;
                 __delay_ms(100);
                 goto label2;
                 break;
            }
        }
        
        PORTCbits.RC7=1;
        m = 0;
  
    }

label2:
__delay_ms(100);
PORTCbits.RC7=1;
__delay_ms(100);

while(p==2)
    {
        for (m = 0; m <= 125; ++m)
        { 
        PORTA = 0b00000001; //minus na pozicii 1
        PORTB = 0b01000000; //- na pozicii 1
        __delay_ms(4); 
        PORTA = 0b00000010; //minus na pozicii 2
        PORTB = 0b00001100; //1 na pozicii 4
        __delay_ms(4); 
        PORTA = 0b00000100; //minus na pozicii 3
        PORTB = 0b01000000; //- na pozicii 2
        __delay_ms(4); 
        PORTA = 0b00001000; //minus na pozicii 4
        PORTB = 0b01000000; //- na pozicii 3
        __delay_ms(4);
        
             if (PORTCbits.RC7==0)
            {
                 p=3;
                 k3=1;
                 __delay_ms(100);
                 goto label3;
                 break;
            }
        }
        PORTCbits.RC7=1;
        m = 0;
        
        for (m = 0; m <= 125; ++m)
        { 
        PORTA = 0b00000001; //minus na pozicii 1
        PORTB = 0b01000000; //- na pozicii 1
        __delay_ms(4); 
        PORTA = 0b00000010; //minus na pozicii 2
        PORTB = 0b01110110; //2 na pozicii 4
        
        __delay_ms(4); 
        PORTA = 0b00000100; //minus na pozicii 3
        PORTB = 0b01000000; //- na pozicii 2
        __delay_ms(4); 
        PORTA = 0b00001000; //minus na pozicii 4
        PORTB = 0b01000000; //- na pozicii 3
        __delay_ms(4);
        
             if (PORTCbits.RC7==0)
            {
                 p=3;
                 k3=2;
                 __delay_ms(100);
                 goto label3;
                 break;
            }
        }
        PORTCbits.RC7=1;
        m = 0;
        for (m = 0; m <= 125; ++m)
        { 
        PORTA = 0b00000001; //minus na pozicii 1
        PORTB = 0b01000000; //- na pozicii 1
        __delay_ms(4); 
        PORTA = 0b00000010; //minus na pozicii 2
        PORTB = 0b01011110; //3 na pozicii 4
        
        __delay_ms(4); 
        PORTA = 0b00000100; //minus na pozicii 3
        PORTB = 0b01000000; //- na pozicii 2
        __delay_ms(4); 
        PORTA = 0b00001000; //minus na pozicii 4
        PORTB = 0b01000000; //- na pozicii 3
        __delay_ms(4);
        
             if (PORTCbits.RC7==0)
            {
                 p=3;
                 k3=3;
                 __delay_ms(100);
                 goto label3;
                 break;
            }
        }
        PORTCbits.RC7=1;
        m = 0;
  
    }

label3:
__delay_ms(100);
PORTCbits.RC7=1;
__delay_ms(100);


while(p==3)
    {
        for (m = 0; m <= 125; ++m)
        { 
        PORTA = 0b00000001; //minus na pozicii 1
        PORTB = 0b00001100; //1 na pozicii 4
        
        __delay_ms(4); 
        PORTA = 0b00000010; //minus na pozicii 2
        PORTB = 0b01000000; //- na pozicii 1
        __delay_ms(4); 
        PORTA = 0b00000100; //minus na pozicii 3
        PORTB = 0b01000000; //- na pozicii 2
        __delay_ms(4); 
        PORTA = 0b00001000; //minus na pozicii 4
        PORTB = 0b01000000; //- na pozicii 3
        __delay_ms(4);
        
             if (PORTCbits.RC7==0)
            {
                 p=4;
                 k4=1;
                 __delay_ms(100);
                 goto label4;
                 break;
            }
        }
        PORTCbits.RC7=1;
        m = 0;
        
        for (m = 0; m <= 125; ++m)
        { 
        PORTA = 0b00000001; //minus na pozicii 1
        PORTB = 0b01110110; //2 na pozicii 4
        
        __delay_ms(4); 
        PORTA = 0b00000010; //minus na pozicii 2
        PORTB = 0b01000000; //- na pozicii 1
        
        __delay_ms(4); 
        PORTA = 0b00000100; //minus na pozicii 3
        PORTB = 0b01000000; //- na pozicii 2
        __delay_ms(4); 
        PORTA = 0b00001000; //minus na pozicii 4
        PORTB = 0b01000000; //- na pozicii 3
        __delay_ms(4);
        
             if (PORTCbits.RC7==0)
            {
                 p=4;
                 k4=4;
                 __delay_ms(100);
                 goto label4;
                 break;
            }
        }
        PORTCbits.RC7=1;
        m = 0;
        for (m = 0; m <= 125; ++m)
        { 
        PORTA = 0b00000001; //minus na pozicii 1
        PORTB = 0b01011110; //3 na pozicii 4
        
        __delay_ms(4); 
        PORTA = 0b00000010; //minus na pozicii 2
        PORTB = 0b01000000; //- na pozicii 1
        
        __delay_ms(4); 
        PORTA = 0b00000100; //minus na pozicii 3
        PORTB = 0b01000000; //- na pozicii 2
        __delay_ms(4); 
        PORTA = 0b00001000; //minus na pozicii 4
        PORTB = 0b01000000; //- na pozicii 3
        __delay_ms(4);
        
             if (PORTCbits.RC7==0)
            {
                 p=4;
                 k4=4;
                 __delay_ms(100);
                 goto label4;
                 break;
            }
        }
        PORTCbits.RC7=1;
        m = 0;
  
    }

label4:
__delay_ms(100);
PORTCbits.RC7=1;
__delay_ms(100);


    while(p==4)
    {
        if (k==1) 
        {
            PORTA = 0b00000001; //minus na pozicii 1
            PORTB = 0b01000000; //- na pozicii 1
            __delay_ms(4); 
            PORTA = 0b00000010; //minus na pozicii 2
            PORTB = 0b01000000; //- na pozicii 2
            __delay_ms(4); 
            PORTA = 0b00000100; //minus na pozicii 3
            PORTB = 0b00000110; //1 na pozicii 3
            __delay_ms(4); 
            PORTA = 0b00001000; //minus na pozicii 4
            PORTB = 0b00000110; //1 na pozicii 4
            __delay_ms(4);  
            
        }
        
        else
        {
            PORTA = 0b00000001; //minus na pozicii 1
            PORTB = 0b01000000; //- na pozicii 1
            __delay_ms(4); 
            PORTA = 0b00000010; //minus na pozicii 2
            PORTB = 0b01000000; //- na pozicii 2
            __delay_ms(4); 
            PORTA = 0b00000100; //minus na pozicii 3
            PORTB = 0b00000111; //1 na pozicii 3
            __delay_ms(4); 
            PORTA = 0b00001000; //minus na pozicii 4
            PORTB = 0b00000111; //1 na pozicii 4
            __delay_ms(4);  
            
        }
        
    }

}

Скачать файл hex и c:
– скачать в формате zip
– скачать в формате tar.gz

Добавить комментарий