lkc8210 發表于 2021-7-23 15:48
看代碼不能截頭截尾,這是DS1302的寫入代碼吧? 還是595的?
正確解釋應該是
先把一位數據放到SER腳輸 ...
感謝指教可我還是有一個點不太懂
SRCLK=0;
_nop_();
_nop_();
SRCLK=1;
SRCLK是一個移位寄存器,為什么要輸入一個下降沿呢?具體實現了什么作用?(剛剛學這個,很多東西都不知道,見諒)
具體代碼如下
sbit SRCLK=P3^6;
sbit RCLK=P3^5;
sbit SER=P3^4;
sbit LED=P0^7;
u8 ledNum;
void Hc595SendByte(u8 dat)
{
u8 a;
SRCLK = 1;
RCLK = 1;
for(a=0;a<8;a++) //發送8位數
{
SER = dat >> 7; //從最高位
dat <<= 1;
SRCLK=0;
_nop_();
_nop_();
SRCLK=1;
}
RCLK=0;
_nop_();
_nop_();
RCLK=1;
}
void delay(u16 i)
{
while(i--);
}
void main()
{
LED=0;
ledNum = ~0x01;
while(1)
{
Hc595SendByte(ledNum);
ledNum=_crol_(ledNum,1);
delay(100000);
}
}
就是控制8*8LED矩陣的一列的一個程序 |