当前位置: 代码迷 >> 单片机 >> C51 利用LS165进行并转串接收数据程序,有什么有关问题
  详细解决方案

C51 利用LS165进行并转串接收数据程序,有什么有关问题

热度:477   发布时间:2016-04-28 14:53:48.0
C51 利用LS165进行并转串接收数据程序,有什么问题
本帖最后由 woshi_ziyu 于 2014-03-19 09:16:33 编辑
各位帮我看看以下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();

编译一下看看有什么问题
  相关解决方案