#include <ny8.h>
#include "NY8_constant.h"
#define UPDATE_REG(x) __asm__("MOVR _" #x ",F")
#define CLK PORTBbits.PB0
#define DIO PORTBbits.PB1
void Start(void);
void Stop(void);
void Ask(void);
void WriteByte(unsigned char OneByte);
void TM1637Init(void);
void Display(void);
void delay(int count);
void main()
{
IOSTB = 0x00;
PORTB = 0xFF;
TM1637Init();
while(1);
}
void delay(int count)
{
int i;
for(i=1;i<=count;i++)
;
}
void Start(void)
{
CLK = 1;
DIO = 1;
NOP();
NOP();
DIO = 0;
}
void Stop(void)
{
CLK = 0;
NOP();
NOP();
DIO = 0;
NOP();
NOP();
CLK = 1;
NOP();
NOP();
DIO = 1;
NOP();
NOP();
}
void Ask(void)
{
unsigned char j;
CLK = 0;
NOP();
NOP();
NOP();
NOP();
NOP();
while(DIO==1 && (j<250))
{
j++;
}
CLK = 1;
NOP();
NOP();
CLK = 0;
}
void WriteByte(unsigned char OneByte)//写一个字节
{
unsigned char i;
for(i=0;i<8;i++)
{
CLK = 0;
if(OneByte&0x01)
{
DIO = 1;
}
else
{
DIO = 0;
}
NOP();
NOP();
NOP();
OneByte = OneByte >> 1;
CLK = 1;
NOP();
NOP();
NOP();
}
}
void TM1637Init(void)
{
//unsigned char i;
Start();
WriteByte(0x40);
Ask();
Stop();
Start();
WriteByte(0xc0);
Ask();
WriteByte(0x3f);
Ask();
WriteByte(0x06);
Ask();
WriteByte(0x5b);
Ask();
WriteByte(0x4f);
Ask();
Stop();
Start();
WriteByte(0x89);
Ask();
Stop();
}