Follow along with the video below to see how to install our site as a web app on your home screen.
Note: This feature may not be available in some browsers.
we can use two arrays
displayNumber(1234);
unsigned short mask(unsigned short num);
unsigned short digit_no, digit10, digit1, digit, i;
void interrupt() {
if (digit_no==0) {
PORTA = 0; // Turn off both displays
PORTD = digit1; // Set mask for displaying ones on PORTD
PORTA = 1; // Turn on display for ones (LSD)
digit_no = 1;
} else {
PORTA = 0; // Turn off both displays
PORTD = digit10; // Set mask for displaying tens on PORTD
PORTA = 2; // Turn on display for tens (MSD)
digit_no = 0;
}
TMR0 = 0; // Reset counter TMRO
INTCON = 0x20; // Bit T0IF=0, T0IE=1
}
void main() {
OPTION_REG = 0x80; // Set timer TMR0
TMR0 = 0;
INTCON = 0xA0; // Disable interrupt PEIE,INTE,RBIE,T0IE
PORTA = 0; // Turn off both displays
TRISA = 0; // All port A pins are configured as outputs
PORTD = 0; // Turn off all display segments
TRISD = 0; // All port D pins are configured as outputs
do {
for (i = 0; i<=99; i++) { // Count from 0 to 99
digit = i % 10u;
digit1 = mask(digit); // Prepare mask for displaying ones
digit = (char)(i / 10u) % 10u;
digit10 = mask(digit); // Prepare mask for displaying tens
Delay_ms(1000);
}
} while (1); // Endless loop
}
mask.c file:
/*Header******************************************************/
unsigned short mask(unsigned short num) {
switch (num) {
case 0 : return 0x3F;
case 1 : return 0x06;
case 2 : return 0x5B;
case 3 : return 0x4F;
case 4 : return 0x66;
case 5 : return 0x6D;
case 6 : return 0x7D;
case 7 : return 0x07;
case 8 : return 0x7F;
case 9 : return 0x6F;
}
}
#include <htc.h>
#define _XTAL_FREQ 4000000 // 4 MHz clock
__CONFIG(0X3F39);
long segment [10]= {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
char digit[6] = {0b0010000,0b0100000,0b0001000,0b0000100,0b0000010,0b0000001}; //,0x4,0x08,0x10};
char i;
char j;
char k;
char l;
void main(){
TRISC = 0;
TRISD = 0;
while(1){
PORTC = 0;
PORTD = segment[i];
PORTC = 0b0000000;
__delay_ms(15);
PORTC = 0;
PORTD = segment[j];
PORTC = digit[0];
__delay_ms(4);
PORTC = 0;
PORTD = segment[k];
PORTC = digit[1];
__delay_ms(4);
PORTC = 0;
PORTD = segment[l];
PORTC = digit[2];
__delay_ms(4);
i++;
if (i==10)
{
i=0;
j++;
}
if (j==10)
{
j=0;
k++;
}
if(k==10)
{
k=0;
l++;
}
if (l==10)
{
l=0;
}
}
}