給你改寫成一次發送3個字節的示例,1T的MCU需要加短延時,12T的51不需要加短延時。
無標題.jpg (159.15 KB, 下載次數: 36)
下載附件
2019-9-19 06:37 上傳
- #include<reg52.h>
- #include<intrins.h>
- sbit Ds=P1^0;//串行數據輸入端 14腳
- sbit Sh=P1^1;//移位寄存器時鐘輸入端 11腳
- sbit St=P1^2;//存儲寄存器時鐘輸入 12腳
- sbit Mr=P1^3;//主復位端,低電平復位 10腳
- void DelayMS(unsigned int ms)
- {
- unsigned char i;
- while(ms--)
- for(i=0;i<120;i++);
- }
- void In_Data(unsigned char a,b,c)
- {
- unsigned char i,j;
- j=a;
- for(i=0;i<8;i++)
- {
- j<<=1;
- _nop_();_nop_();
- Ds=CY;
- _nop_();_nop_();
- Sh=0;
- _nop_();_nop_();
- Sh=1;
- }
- j=b;
- for(i=0;i<8;i++)
- {
- j<<=1;
- _nop_();_nop_();
- Ds=CY;
- _nop_();_nop_();
- Sh=0;
- _nop_();_nop_();
- Sh=1;
- }
- j=c;
- for(i=0;i<8;i++)
- {
- j<<=1;
- _nop_();_nop_();
- Ds=CY;
- _nop_();_nop_();
- Sh=0;
- _nop_();_nop_();
- Sh=1;
- }
- St=0;
- _nop_();_nop_();
- St=1;
- }
- void main()
- {
- Mr=0;
- DelayMS(1);
- Mr=1;
- In_Data(0x4A,0x55,0xAA);
- while(1);
- }
復制代碼
|