程序要求的是 亮灭亮灭 然后再流水
- #include <reg52.h>
- #include <intrins.h>
- //#include <delayms.h>
- #define uchar unsigned char
- #define uint unsigned int
- sbit DS1=P2^6;
- sbit ST_CP1=P1^7;
- sbit SH_CP1=P2^5;
- uchar code table[]={
- 0xfe,0xfd,0xfb,0xf7,
- 0xef,0xdf,0xbf,0x7f};
- void delay(uint z)
- {
- uchar x;
- while(z--) //1ms延时程序
- for(x=120;x>0;x--);
- }
- void led_sendbyte(uchar byte) //传输8位数据
- {
- uchar i,num;
- num=byte;
- for(i=0;i<8;i++)
- {
- if(num&0x80)
- DS1=1;
- else
- DS1=0;
- SH_CP1=0;
- _nop_();_nop_();
- SH_CP1=1;
- num=num<<1;
- }
- ST_CP1=0;
- _nop_();_nop_();
- ST_CP1=1;
- }
- void main(void)
- {
- uchar i;
- for(i=0;i<2;i++)
- {
- led_sendbyte(0x00);
- delay(500);
- led_sendbyte(0xff);
- delay(500);
- }
- while(1)
- {
- for(i=0;i<8;i++)
- {
- led_sendbyte(table[i]);
- delay(500);
- }
- }
- }
复制代码 |