- #include<reg52.h>
- #include<intrins.h>
- #define NOP() _nop_()
- #define ParIn P0//并行输入,一次输入8位
- sbit Rout=P1^7; //寄存器串行输出
- sbit Mout=P1^1; //单片机输出控制,通过Rout来控制
- sbit Rclk=P3^6; //寄存器时钟信号,本线与一致信号相连
- sbit Rload=P1^6;//寄存器并行输入装载信号,低电平装载
- void Delay10ms(unsigned int c);
- void main()
- {
- int i;
- while(1)
- {
- ParIn=0x1d;
- Rload=1;//准备装载
- NOP();//延时
- Rload=0;//装载
- NOP();//延时
- Rload=1;//装载结束
- for(i=0;i<8;i++)
- {
-
- if(Rout==1)
- {
- Mout=Rout;
- }
- else
- {
- Mout=0;
- }
- Rclk=1;//准备移出
- NOP();
- Rclk=0;//移出一次
- NOP();
- Delay10ms(100);
- }
- }
- }
- void Delay10ms(unsigned int c) //误差 0us
- {
- unsigned char a, b;
- //--c已经在传递过来的时候已经赋值了,所以在for语句第一句就不用赋值了--//
- for (;c>0;c--)
- {
- for (b=38;b>0;b--)
- {
- for (a=130;a>0;a--);
- }
-
- }
- }
复制代码
|