/*  Filename     XDP72F
    Description  example for using DP-72F
    Hardware     SLAB-51 + DP-72F x 4
    Compiler     Keil V7.10 
    Engineer     Patikhom K.
    Company      Sila Research Co.,Ltd. */

#include <reg52.h>
#include <absacc.h>
#include <intrins.h>

#define digit 4


/****************** I/O Port *****************/

sbit CLK 	= P1^0;
sbit STR 	= P1^1;
sbit DATA 	= P1^4;

unsigned char DISBUF[4];
unsigned char code SEGTAB[10] = {0x3f,0x06,0x5b,0x4f,0x66,
			0x6d,0x7d,0x07,0x7f,0x6f};

/***************** Basic Function ***********/

void dmsec(unsigned int count){
	unsigned int i;
	while(count){
		for(i=1;i<=115;i++);
		count--;
	}
}

void showdisp (void){             	//sub show data from DISBUF to DP-72F
	unsigned char i,j,k;          	//input : DISBUF[x]
  	for(k=0;k<digit;k++){			// 4 digit
		i = DISBUF[k];
    	for(j=0;j<=7;j++){
        	DATA = i & 0x80;
        	i = i << 1;
        	CLK = 1;
        	_nop_();
        	CLK = 0;
    	}       
		}
    STR = 1;
    _nop_();
    STR = 0;
}

/*********** Main Function ***************/

void main(void){
	unsigned char a;
	unsigned char i,j;
	a = 0x01;

	for(i=1;i<=digit;i++) DISBUF[i] = 0x00;		// Clear display
	showdisp();
	dmsec(100);
	
	while(1){
		for(j=1;j<=3;j++){
			for(i=1;i<=8;i++){
				DISBUF[0] = a;
				DISBUF[1] = a;
				DISBUF[2] = a;
				DISBUF[3] = a;
				showdisp();
				dmsec(1000);
				a = a << 1;
			}
			a = 0x01;
		}
			
		for(i=0;i<digit;i++) DISBUF[i] = 0x00;		// Clear display
		showdisp();
		dmsec(1000);
		
		for(j=1;j<=3;j++){
			for(i=0;i<=9;i++){
				DISBUF[0] = SEGTAB[i];
				DISBUF[1] = SEGTAB[i];
				DISBUF[2] = SEGTAB[i];
				DISBUF[3] = SEGTAB[i];
				showdisp();
				dmsec(1000);
			}
		}

		for(i=0;i<digit;i++) DISBUF[i] = 0x00;		// Clear display
		showdisp();
		dmsec(1000);

		for(j=1;j<=3;j++){
			DISBUF[0] = SEGTAB[0];
			DISBUF[1] = SEGTAB[1];
			DISBUF[2] = SEGTAB[2];
			DISBUF[3] = SEGTAB[3];
			showdisp();
			dmsec(1000);
		
		for(i=0;i<digit;i++) DISBUF[i] = 0x00;		// Clear display
		showdisp();
		dmsec(1000);
		}
	}	 		
}