#include<reg51.h>
#include<intrins.h>
#defineuintunsignedint
#defineucharunsignedchar
sbitRCLK=P3^5;
sbitSRCLK=P3^6;
sbitSER=P3^4;
ucharledduan[]={0x00,0x00,0x7E,0x81,0x81,0x81,0x7E,0x00};
ucharledwei[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
voiddelay(uintz);
voidHC595(uchardate) //date必须是char型
{
uinta;
SRCLK=0;
RCLK=0;
for(a=0;a<8;a++)
{
SER=date>>7;
date<<=1;
SRCLK=1;
SRCLK=0;
}
RCLK=1;
RCLK=0;
}
voidmain()
{
P0=0x7f;
while(1)
{ uchari=0;
for(i=0;i<8;i++)
{
P0=ledwei;
HC595(ledduan);
delay(1);
HC595(0x00);
}
}
}
voiddelay(uintz)
{
uintx,y;
for(x=z;x>0;x--)
for(y=100;y>0;y--);
}
问题在于为什么date必须是char型?是int型的话点阵就无法成功显示0
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
调用函数时的参数数据类型如果与函数定义时的参数类型不一致的话,编译时应该会报错或报警告的
一周热门 更多>