1、由于用arduino,有时候,需要用B00010001类似的二进制,但是用51单片机的时候,不能这么写,所以需要添加步骤。
https://blog.csdn.net/ReadAir/article/details/88948410?utm_medium=distribute.pc_relevant.none-task-blog-2defaultbaidujs_title~default-1-88948410-blog-96433325.pc_relevant_default&spm=1001.2101.3001.4242.2&utm_relevant_index=4
http://www.laogu.com/cms/xw_288779.htm
添加
#define LongToBin(n) ( ((n >> 21) & 0x80) | ((n >> 18) & 0x40) | ((n >> 15) & 0x20) | ((n >> 12) & 0x10) | ((n >> 9) & 0x08) | ((n >> 6) & 0x04) | ((n >> 3) & 0x02) | ((n ) & 0x01) ) #define B(n) LongToBin(0x##n##l)
#include#include #define LongToBin(n) ( ((n >> 21) & 0x80) | ((n >> 18) & 0x40) | ((n >> 15) & 0x20) | ((n >> 12) & 0x10) | ((n >> 9) & 0x08) | ((n >> 6) & 0x04) | ((n >> 3) & 0x02) | ((n ) & 0x01) ) #define B(n) LongToBin(0x##n##l) sbit LED=P1^7; sbit HC595_LATCH = P1^0;//latch pin or rck pin STCP ss 595pin12 sbit HC595_OE = P1^1;//oe blank pin 595pin13 // 0data of 74hc595 pin14 ---->mosi P13 //clk of 595 shcp 595pin11 ---->sclk P15 void SendTo595( unsigned char byteData); void Delay10us(); //@22.1184MHz void Delay500ms() //@22.1184MHz { unsigned char i, j, k; i = 57; j = 27; k = 112; do { do { while (--k); } while (--j); } while (--i); } void portmode() { P0M0=0x00;P0M1=0x00; P1M0=0x00;P1M1=0x00; P2M0=0x00;P2M1=0x00; P3M0=0x00;P3M1=0x00; P4M0=0x00;P4M1=0x00; P5M0=0x00;P5M1=0x00; P6M0=0x00;P6M1=0x00; P7M0=0x00;P7M1=0x00; } void Delay30us() //@22.1184MHz { unsigned char i; i = 219; while (--i); } void main() { unsigned char c; c = B(00100111); //相当于c = 0x27 portmode(); LED=0; Delay500ms(); LED=1; Delay500ms(); LED=0; Delay500ms(); LED=1; Delay500ms(); LED=0; Delay500ms(); LED=1; Delay500ms(); LED=0; Delay500ms(); LED=1; Delay500ms(); SPCTL = 0x50; //??SPI???? SPSTAT = 0xc0; //????? HC595_LATCH =1; HC595_OE =0; while(1) { //低电平亮 HC595_LATCH = 0; //????SS?? SPDAT = ~c; // while (!(SPSTAT & 0x80)); //?????? SPSTAT = 0xc0; //????? HC595_LATCH = 1; } } void Delay10us() //@22.1184MHz { unsigned char i; i = 71; while (--i); } void SendTo595( unsigned char byteData) { // char i=0; // for(;i<8;i++) // { // P13 = byteData>>7; 0000 0001 >>1 0000 0000 0000 0001 <<1 0000 0010 // byteData= byteData<<1; // P10 = 0; // Delay10us(); // P10 = 1; // } // HC595_LATCH = 0; //p10 // // Delay10us(); // HC595_LATCH =1; // HC595_OE=0; } // HC595_LATCH = 0; //????SS?? // SPDAT = 0x5a; //?????? // while (!(SPSTAT & 0x80)); //?????? // SPSTAT = 0xc0; //????? // HC595_LATCH = 0;



