?? xiang_mu.c
字號(hào):
//-----------------------函數(shù)聲明,變量定義--------------------------------------------------------
#include <reg52.h>
#include <intrins.h>
#include <math.h>
sbit SCK=P1^0; // 將p1.0口模擬時(shí)鐘輸出
sbit MOSI=P1^1; // 將p1.1口模擬主機(jī)輸出
sbit MISO=P1^2; // 將p1.1口模擬主機(jī)輸入
sbit SS1=P1^3; // 將p1.1口模擬片選
#define uchar unsigned char
#define uint unsigned int
#define pi 3.1415926
xdata uchar table[255];
uchar c,i;
uchar adr;
float cy;
//--------------------------------------------------------------------------------------------------
// 函數(shù)名稱: tab
// 函數(shù)功能: 正弦波相位分256份所對(duì)應(yīng)的幅碼表格的生成
//--------------------------------------------------------------------------------------------------
void tab()
{
char b,flag;
float a;
for(i=0;i<255;i++)
{
a=2*pi/256;
b=sin(i*a)*127; //將所得的幅碼乘127
table[i]=b; //將乘后的幅碼存入table中
}
flag=1;
}
void delay(){ ; ; } // 短延時(shí)子函數(shù)
//--------------------------------------------------------------------------------------------------
// 函數(shù)名稱: SPISendByte
// 入口參數(shù): ch
// 函數(shù)功能: 發(fā)送一個(gè)字節(jié)
//--------------------------------------------------------------------------------------------------
void SPISendByte(unsigned char ch)
{
unsigned char idata n=8; // 向SDA上發(fā)送一位數(shù)據(jù)字節(jié),共八位
SCK = 1 ; //時(shí)鐘置高
while(n--)
{
delay();
SCK = 0 ; //時(shí)鐘置低
if((ch&0x80) == 0x80) // 若要發(fā)送的數(shù)據(jù)最高位為1則發(fā)送位1
{
MOSI = 1; // 傳送位1
}
else
{
MOSI = 0; // 否則傳送位0
}
delay();
ch = ch<<1; // 數(shù)據(jù)左移一位
SCK = 1 ; //時(shí)鐘置高
}
}
main()
{
tab();
adr=1;
i=0;
while(adr)
{
c=table[i];
SPISendByte(c);
SPISendByte(adr-1);
i++;
adr++;
}
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -