代码已修改,并仿真通过。
#include<reg51.h> //包含单片机寄存器的头文件
#include "intrins.h"
#define uchar unsigned char
#define uint unsigned int
sbit CLK=P1^0;
sbit IN =P1^1;
//uchar code a[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
uint code w[]={0xfffe,0xfffd,0xfffb,0xfff7,0xffef,0xffdf,0xffbf,0xff7f,0xfeff,0xfdff,0xfbff,0xf7ff,0xefff,0xdfff,0xbfff,0x7fff};//【新建了一个流水表】
void delay(uint i)
{
uint j;
uchar k;
for(j=i;j>0;j--)
for(k=125;k>0;k--);
}
//【发送1字节给74LS164】
void send_byte(uchar temp)
{
uchar i;
for(i=0;i<8;i++)
{
if(temp & 0x80)
{
IN =1;
}
else
{
IN =0;
}
CLK = 0;
_nop_(); //if Keil,require use intrins.h
CLK = 1;
temp=temp<<1;// temp左移1位
}
}
//【发送2字节给74LS164】
void send_word(uint temp)
{
send_byte((uchar)(temp>>8));//先发送高字节
send_byte((uchar)(temp&0x00FF));//再发送低字节
}
void main(void)
{
uint i;
while(1)
{
for(i=0;i<16;i++)
{
//send_byte(a[i]);
send_word(w[i]);//【发送2字节】
delay(4000);
}
}
}