各位帮我看看以下C51 利用LS165进行并转串接收数据程序,有什么问题
#include<reg51.h>
#include<intrins.h>
sbit QH=P3^2; //Pin9 输出位定义
sbit CLK165=P3^1; //Pin2 时钟位定义
sbit SH_LD=P3^0; //Pin1 转载/移位位定义
//INH接GND
void Delay10ms(unsigned int ) ;
unsigned char Sample_165();//LS165并口采样
void main()
{
unsigned char ledNum;
ledNum=0x0;
CLK165=0;
while(1)
{
ledNum= Sample_165;
P2= ledNum;
Delay10ms(50);
}
}
unsigned char Sample_165()
{
unsigned char i;
unsigned char BYTE=0; //最终接收到得字符
SH_LD=0; //将165外部8位并行口数据装入内部寄存器
_nop_();
SH_LD=1; //抬高为移位准备
_nop_();
for(i=0;i<8;i++)
{
BYTE<<=1; //左移一位1
CLK165=0; //时钟低
_nop_();
BYTE|=QH; //先接收高位
_nop_();
CLK165=1; //时钟高,上升沿下一个数据移出
_nop_();
}
return BYTE; //返回接收字符
}
void Delay10ms(unsigned int c) //误差 0us
{
unsigned char a,b;
for(;c>0;c--)
for(b=38;b>0;b--)
for(a=130;a>0;a--);
}
------解决方案--------------------
ledNum= Sample_165;
--------------
ledNum= Sample_165();
编译一下看看有什么问题