|
|
- #include <REG51.H>
- #include <intrins.h>
- #define NOP() _nop_() // 定義空指令 ,這個(gè)函數(shù)在庫(kù) <intrins.h> 中
- //SPI IO
- sbit MOSI = P3^4;
- sbit R_CLK = P3^5;
- sbit S_CLK = P3^6;
- //函數(shù)聲明
- void HC595SendData( unsigned char BT0);
- /*************主函數(shù)*****************************/
- void main(void)
- {
- while(1)
- {
- HC595SendData(0x82);//驅(qū)動(dòng)共陽(yáng)數(shù)碼管顯示6
- }
- }
- /*********************************************************************************************************
- ** 函數(shù)名稱: HC595SendData
- ** 功能描述: 向SPI總線發(fā)送數(shù)據(jù)
- *********************************************************************************************************/
- void HC595SendData( unsigned char BT0)
- {
- unsigned char i;
- for(i = 0; i < 16; i++)//循環(huán)十六次后,就可以用下一個(gè)移位寄存器來(lái)控制了
- {
-
- if((BT0<< i) & 0x80) //判斷最高位是0還是1
- {
- MOSI = 1;// 如果為真,將1送入移位寄存器
- }
- else
- {
- MOSI = 0;
- }
- S_CLK = 0;//移位一次
- NOP();
- S_CLK = 1;//上升沿有效
- }
- R_CLK = 0; //移位結(jié)束取出數(shù)據(jù)
- NOP();
- R_CLK = 1; //上升沿有效
- }
復(fù)制代碼
|
|