#include "COMM/stc.h"		//ͷļ
#include "test.h"
#include "intrins.h"	 	 bit busy;


/***********ʼ***********/
sbit scl = P1^7; //TM1650ʱͨѶIO
sbit sda = P1^6;//TM1650ͨѶIO



char *USER_DEVICEDESC = NULL;
char *USER_PRODUCTDESC = NULL;
char *USER_STCISPCMD = "@STCISP#";
int e;	
void sys_init();	//
void delay_ms(u16 ms);	//unsigned int 
void tm1650_start(); //TM1650ͨѶĿʼź
void tm1650_end();//TM1650ͨѶĽź
void tm1650_ack();//TM1650ͨѶӦź
void write_1();//TM1650ͨѶ д1
void write_0();//TM1650ͨѶ д0
void write_byte(unsigned char tem);//дһֽ

void delay(unsigned int time)
{
while(time--);
}


void main()					//ʼе
{
	u8 LED_Data = 0XFE;
	
	u8 num=0;
	u8 LED_DataTab[8] = { 0XFE,0XFD, 0XFB,0XF7,0XEF,0XDF,0XBF,0X7F};
	uint8_t code Num_Buff[16]={ //ֵܹ0-F
        0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71
};
	sys_init();		 //IOڳʼ
	EA = 1;			 //CPUжϣжϡ
	BEEP = 0;		 //ϵһ
	delay_ms(10);	 //ʱ10ms
	BEEP = 1;		 //رշ
 tm1650_start();
        write_byte(0x48);  //ʾģʽ
        tm1650_ack();
  write_byte(0x31);  //1ȣʾָ TM1650datasheet
  tm1650_ack();
  tm1650_end();
  tm1650_start();
  write_byte(0x68);
  tm1650_ack();
  write_byte(Num_Buff[8]);
  tm1650_ack();
  tm1650_end();
  tm1650_start();
  write_byte(0x6a);
  tm1650_ack();
  write_byte(Num_Buff[8]);
  tm1650_ack();
  tm1650_end();
  tm1650_start();
  write_byte(0x6c);
  tm1650_ack();
  write_byte(0x5b);//̶ʾ2
  tm1650_ack();
  tm1650_end();
  tm1650_start();
  write_byte(0x6e);
  tm1650_ack();
  write_byte(0x3f);  //̶ʾ0̶ʾ02Ϊǽǵ2ݣҲ루0û룬1û뷴룬2룬3뷴룩
  tm1650_ack();
  tm1650_end();

	while(1)		//ѭ
	{
		Test();
       

		
		
	}
}

void sys_init()		//
{
	P0M1 = 0x00;   P0M0 = 0x00;   //Ϊ׼˫
    P1M1 = 0x00;   P1M0 = 0x00;   //Ϊ׼˫
    P2M1 = 0x00;   P2M0 = 0x00;   //Ϊ׼˫
    P3M1 = 0x00;   P3M0 = 0x00;   //Ϊ׼˫
    P4M1 = 0x00;   P4M0 = 0x00;   //Ϊ׼˫
    P5M1 = 0x00;   P5M0 = 0x00;   //Ϊ׼˫
    P6M1 = 0x00;   P6M0 = 0x00;   //Ϊ׼˫
    P7M1 = 0x00;   P7M0 = 0x00;   //Ϊ׼˫
    P3M0 = 0x00;
    P3M1 = 0x00; 
    P3M0 &= ~0x03;
    P3M1 |= 0x03;
}
void tm1650_start()
{
sda = 1;
scl = 1;
delay(10);
sda = 0;
delay(5);
}
void tm1650_end()
{
sda = 0;
scl = 1;
delay(6);
sda = 1;
delay(2);
}
void tm1650_ack()
{
while(sda);
delay(5);
scl = 1;
delay(5);
scl = 0;
delay(5);
}
void write_1()
{
sda = 1;
scl = 0;
delay(5);
scl = 1;
delay(10);
scl = 0;
delay(5);
sda = 0;
}
void write_0()
{
sda = 0;
scl = 0;
delay(5);
scl = 1;
delay(10);
scl = 0;
}
void write_byte(unsigned char tem)
{
unsigned char i;
for(i=8;i>0;i--)
{
   if(tem&0x80)
   write_1();
   else
   write_0();
   tem<<=1;
}
}

