?? 從機.c
字號:
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned char
uchar shou;
sbit mi=P1^0; //從機接收主機發(fā)送接口
sbit mo=P1^1; //從機發(fā)送主機接收接口
sbit sclk=P1^2; //主從機時鐘同步時鐘信號
sbit ss=P1^3; //從機選擇控制位
/**********簡單的延時函數(shù)***************/
void delay(uchar z)
{
uchar a;
for(;z>0;z--)
for(a=5;a>0;a--);
}
/**********從機接收數(shù)據(jù)并發(fā)送數(shù)據(jù)函數(shù)************/
void shoufa(uchar date)
{
uchar a,b;
while(ss==0) //檢測是否有數(shù)據(jù)的傳輸
{
/*確認主機要發(fā)送數(shù)據(jù)后進行接收****/
while(sclk==1); //檢測同步時鐘信號
//確定時鐘信號置低
for(a=0;a<8;a++)
{
while(sclk==0) //時鐘置低,準備發(fā)數(shù)據(jù)
{
delay(0); //等待數(shù)據(jù)的穩(wěn)定
b=mi;
P2=b;
if(b==1)
shou|=0x01;
while(sclk==0); //數(shù)據(jù)接收完成一位之后等待發(fā)送數(shù)據(jù)
}
if(a<7)
{
shou<<=1;
}
while(sclk==1)
{
date<<=1;
mo=CY; //輸出數(shù)據(jù)的高位
while(sclk==1);
}
}
}
}
/***********主程序**************/
void main()
{
P1=0xff;
while(1)
{
shoufa(0xff);
P3=shou;
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -