- #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--);
- }
-
- }
- }
復制代碼
|