-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsourceCode.c
More file actions
51 lines (47 loc) · 1.11 KB
/
Copy pathsourceCode.c
File metadata and controls
51 lines (47 loc) · 1.11 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include <p18f452.h>
#pragma config WDT = OFF
#pragma idata access variable = 0x000
near unsigned char variable = 0;
#pragma idata
#pragma interrupt function
void function(void)
{
if(INTCONbits.TMR0IF)
{
INTCONbits.TMR0IF = 0;
TMR0H = 0x0B;
TMR0L = 0xDC;
variable = 0x01;
}
}
#pragma code vector = 0x00008
void vector(void)
{
_asm
GOTO function
_endasm
}
#pragma code
void main(void)
{
unsigned char triState[] = {3, 3, 5, 5, 6, 6}, displayValue[] = {4, 2, 4, 1, 2, 1}, i = 0;
TRISC = 0xF8; // RC0,RC1,RC2 AS OUTPUT
TRISD = 0xF8; // RD0,RD1,RD2 AS OUTPUT
INTCONbits.GIE = 1; // ACTIVATE ALL INTERRUPTS
INTCONbits.TMR0IE = 1; // ACTIVATE TIMER0 INTERRUPT
INTCONbits.TMR0IF = 0; // DISABLE FLAG
T0CON = 0x01;
TMR0H = 0x0B;
TMR0L = 0xDC;
T0CONbits.TMR0ON = 1;
while(1)
{
if(variable) // IF BLOCK IS TRIGGERED ONCE VARIABLE IS NON-ZERO
{
variable = 0;
LATC = triState[i]; // MAKE ONE OF THE PIN HIGH-IMPEDENCE
LATD = displayValue[i]; // LIGHT UP THE LED
(i == 5 ? i = 0 : ++i); // CHECK IF WE CONVERED ALL THE LED
}
}
}