#include"H_test.h"
unsigned int Buffer=0,Count=0;
unsigned int Pt=0xffff;
unsigned char Pt1=0xfe;
void Delay(unsigned int k);
void Delay(unsigned int k)
{
unsigned int m=0;
for(;m<k;m++)
{};
}
//定时器T0的中断服务程序
void kjp_test(void)interrupt 1 using 1
{
bit c;
TH0=-5000/256; //延时5ms ,方式1
TL0=-5000%256;
Buffer++;
if(Buffer==10) //计时为BUFFER*5MS 的时间
{
Led_Display(); //向模拟的串中P1口传送数据来控制74HC595 来控制LED
Buffer=0;
//控制个LED灯须要用 个字节来3存放数据
// 一个int 型,一个char 型,2+1
Pt1<<=1; //相当于RL移位后会影响PSW
c=CY;
Pt<<=1; //由于左移以后最右端变成了0
if(c==1) // 要达到循环的效果,所以要对其进行相关的运算
Pt+=1;
if(CY==1)
Pt1+=1;
}
}
void fun_hc()
{
InitLed();
}
void Led_Display()
{ bit c;
int i=0,k;
unsigned int P=Pt;
unsigned char P1=Pt1;
MR=1;
OE=1;
for(k=0;k<3;k++)
{
for(i=0;i<8;i++)
{
P<<=1;
DS=CY;
SHCP=1; //送数据到寄存器中 按移位的方式进行,给一上升沿
SHCP=0;
c=CY;
P1<<=1;
if(CY==1)
P+=1;
if(c==1)
P1+=1;
}
}
STCP=1; //将移位寄存器中的值送入到存储寄存器中,给一个上升沿
STCP=0;
OE=0; //通知74HC595进行显示
}
void InitLed()
{
OE=1; //输出全能端
DS=1; //数据传送
STCP=0; //存储寄存器的时钟脉冲
SHCP=0; //移位寄存器的时钟脉冲
MR=0; //复位
}
void Init()
{
TMOD=0x01; //定时器/计数器的方式控制字。将T0设为方式1
EA=1; //中断允许控制
IT1=0; //控制寄存器TCON
ET0=1; //定时器/计数器T0的中断允许位
TH0=-5000/256; //定时初值,5MS
TL0=-5000%256;
TR0=1; //定时器/计数器T0的启动
}