单片机扩展74HC165
1 #include <REGX52.H> 2 #include <INTRINS.H> 3 4 typedef unsigned int u16; 5 typedef unsigned char u8; 6 7 #define LED P0 8 9 sbit IN_PL = P1^6; 10 sbit IN_DATA = P1^7; 11 sbit SCK = P3^6; 12 13 14 15 u8 Read74HC165() 16 { 17 u8 indata; 18 u8 i; 19 20 IN_PL = 0; 21 _nop_(); 22 IN_PL = 1; 23 _nop_(); 24 25 indata = 0; 26 for(i = 0; i < 8; i++) 27 { 28 indata = indata << 1; 29 SCK = 0; 30 _nop_(); 31 32 indata |= IN_DATA; 33 SCK = 1; 34 } 35 return indata; 36 } 37 38 void main() 39 { 40 u8 h165Value; 41 LED = 0; 42 while(1) 43 { 44 h165Value = Read74HC165(); 45 if(h165Value != 0XFF) 46 { 47 LED = ~h165Value; 48 } 49 } 50 }
单片机扩展74HC595
1 #include <REGX52.H> 2 #include <INTRINS.H> 3 4 typedef unsigned int u16; 5 typedef unsigned char u8; 6 7 #define LED = P0 8 9 sbit RCLK1 = P3^5; 10 sbit SRCLK = P3^6; 11 sbit SER = P3^4; 12 13 14 void HC595SendByte(u8 dat) 15 { 16 u8 i; 17 for(i = 0; i < 8; i++) 18 { 19 SER = dat>>7; 20 dat <<= 1; 21 22 SRCLK = 0; 23 _nop_(); 24 _nop_(); 25 SRCLK = 1; 26 } 27 RCLK1 = 0; 28 _nop_(); 29 _nop_(); 30 RCLK1 = 1; 31 } 32 33 void delay(u16 i) 34 { 35 while(i--); 36 } 37 38 void main() 39 { 40 u8 LedNum; 41 LedNum = 0X01; 42 43 while(1) 44 { 45 HC595SendByte(LedNum); 46 LedNum = _crol_(LedNum,1); 47 delay(50000); 48 } 49 }
原文:https://www.cnblogs.com/Alei-/p/13657661.html