П З (1230299), страница 10
Текст из файла (страница 10)
6) #define Set_Dnumber PORTBbits.RB4 = 1
7) #define Reset_Dnumber PORTBbits.RB4 = 0
8) #define Set_Snumber PORTBbits.RB5 = 1
9) #define Reset_Snumber PORTBbits.RB5 = 0
10) #define Set_Tnumber PORTBbits.RB6 = 1
11) #define Reset_Tnumber PORTBbits.RB6 = 0
12) #pragma config OSC = XT
13) #pragma config OSCS = OFF
14) #pragma config PWRT = ON
15) #pragma config BOR = OFF
16) #pragma config WDT = OFF
17) #pragma config STVR = ON
18) #pragma config LVP = OFF
19) unsigned int counter = 0;
20) unsigned char thousand = 0;
ПРОДОЛЖЕНИЕ ПРИЛОЖЕНИЯ В
21) unsigned char hundred = 0;
22) unsigned char ten = 0;
23) unsigned char one = 0;
24) char led_on = 0;
25) unsigned char dig[10] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
26) void prervo (void);
27) #pragma interrupt prervo
28) #pragma code high_vector = 0x08
29) void high_vector (void)
{
_asm GOTO prervo _endasm
}
30) #pragma code
31) void prervo (void)
{
32) if (PIR1bits.TMR1IF == 1)
{
33) PIR1bits.TMR1IF = 0;
34) TMR1H = 0b11111011;
35) TMR1L = 0b00011110;
36) switch (led_on)
{
37) case 0:
{
ПРОДОЛЖЕНИЕ ПРИЛОЖЕНИЯ В
38) led_on++;
39) Reset_Enumber;
40) LED = *(dig+thousand);
41) Set_Tnumber; break;
}
42) case 1:
{
43) Reset_Tnumber;
44) led_on++;
45) LED = *(dig+hundred);
46) Set_Snumber; break;
}
47) case 2:
{
48) Reset_Snumber;
49) led_on++;
50) LED = *(dig+ten);
51) Set_Dnumber; break;
}
52) case 3:
{
53) Reset_Dnumber;
54) led_on = 0;
55) LED = *(dig+one);
56) Set_Enumber; break;
}
}
}
ПРОДОЛЖЕНИЕ ПРИЛОЖЕНИЯ В
57) if (INTCONbits.TMR0IF == 1)
58) {
59) INTCONbits.TMR0IF = 0;
60) TMR0H = 0b11110000;
61) TMR0L = 0b01100000;
62) thousand = hundred = ten = one = 0;
63) for (; counter >= 1000; counter = counter - 1000) thousand++;
64) for (; counter >= 100; counter = counter - 100) hundred++;
65) for (; counter >= 10; counter = counter - 10) ten++;
66) for (; counter >= 1; counter--) one++;
67) counter = 0;
}
68) if (INTCONbits.INT0IF == 1)
{
69) INTCONbits.INT0IF = 0;
70) counter++;
}
71) void main (void)
{
72) TRISB = 0b00000001;
73) PORTB = 0b00000000;
74) TRISC = 0b00000000;
75) PORTC = 0b00000000;
76) INTCONbits.PEIE = 1;
ПРОДОЛЖЕНИЕ ПРИЛОЖЕНИЯ В
77) INTCONbits.INT0IE = 1;
78) INTCON2bits.INTEDG0 = 1;
79) INTCONbits.TMR0IE = 1;
80) PIE1bits.TMR1IE = 1;
81) TMR0H = 0b11110000;
82) TMR0L = 0b01100000;
83) T0CON = 0b10000111; // коэф. деления 256
84) T1CON = 0b00110001; // коэф. деления 8
85) TMR1H = 0b11111011;
86) TMR1L = 0b00011110;
87) INTCONbits.GIE = 1;
88) while (1)
{
}
}
90















