Четверг, Сентябрь 24, 2020

Пример 7.5 PIC18 Си стр266-Семисегментный индикатор

 

//При нажатии на кнопку будет зажигаться 1,2,3,4,5,6,7,8,9,0
#include<p18cxxx.h>
#include<delays.h>
#pragma config OSC=RC
#pragma config WDT=OFF
#pragma config LVP=OFF
#pragma config BOR=OFF
#pragma config MCLRE=OFF
rom near char look7[]={        //таблица кодов цифр
    0x40,0x79,0x24,
    0x30,0x19,0x12,
    0x02,0x78,0x00,0x10
};
int count;
#pragma code
void Switch(char b)            //антидребезг
{
    do{
        while((PORTA&b)!=b);   //программа зависает сдесь,если кнопка не нажата
        Delay1KTCYx(30);
    }while((PORTA&b)!=b);
    do{
        while((PORTA&b)==b);   //программа зависает сдесь,если кнопка не отпущена
        Delay1KTCYx(30);
    }while((PORTA&b)==b);
}
void main(void)
{
    ADCON1=0xef;
    TRISA=1;
    TRISB=0;
    count=0;
    while(1)
    {
        PORTB=look7[count];
        Switch(1);
        count++;
        if(count>=10)
           count=0;
    }
}

Проверять все премеры нужно с Stimulus:

primer-75-pic18-si-str266-semisegmentnyj-indikator

 




НАЗАД                                                                                                                                         ДАЛЕЕ


Back to Top