重慶分公司,新征程啟航
為企業提供網站建設、域名注冊、服務器等服務
為企業提供網站建設、域名注冊、服務器等服務
c語言沒辦法保留分數,只有小數,要寫分數就要用到復雜的數據結構
創新互聯公司主營豐寧網站建設的網絡公司,主營網站建設方案,App定制開發,豐寧h5小程序定制開發搭建,豐寧網站營銷推廣歡迎豐寧等地區企業咨詢
根號就是一個函數sqrt(x)
用sqrt時候記得
#includemath.h
主機:
//SPI雙機通信 主機//發送0x09,接收方PD0~3,對應點小燈
//包含所需頭文件
#include avr/io.h
#include avr/interrupt.h
#include avr/signal.h
// SS PB4
// MOSI PB5
// MISO PB6
// SCK PB7
/*------宏定義------*/
#define uchar unsigned char
#define uint unsigned int
#define BIT(x) (1(x))
#define NOP() asm("nop")
#define WDR() asm("wdr")
/*------函數定義------*/
void spi_write(uchar sData);
uchar spi_read(void);
//端口初始化
void port_init(void)
{
DDRD = 0XFF;
PORTB=PORTB|0b11110000; //SCK MISO MOSI SS 使能上拉
DDRB=DDRB0b10111111; //MISO 置為輸入
DDRB=DDRB|0b10110001; //SCK MOSI SS 置為輸出
}
void spi_init(void) //spi初始化
{
DDRB|=(~(1PB5))|(1PB7)|(1PB4)|(~(1PB4));
SPCR = 0xF1;
SPSR = 0x01;
}
SIGNAL(SIG_SPI) //一個字節發送或接收完成中斷
{
PORTD=SPDR;
}
void spi_write(uchar sData)//功能:使用SPI發送一個字節
{
SPDR = sData;
while(!(SPSR BIT(SPIF)));
//sData=SPDR;//讀從機發回來的數據
}
uchar spi_read(void)//功能:使用SPI接收一個字節
{
SPDR = 0x00;
while(!(SPSR BIT(SPIF)));
return SPDR;
}
void init_devices(void)
{
cli(); //禁止所有中斷
MCUCR = 0x00;
MCUCSR = 0x80;//禁止JTAG
GICR = 0x00;
port_init();
spi_init();
sei();//開全局中斷
}
//主函數
int main(void)
{
init_devices();
spi_write(0X09);
while(1)
{
NOP();
}
return 0;
}
從機:
//SPI雙機通信 從機
//發送0x06,PA0~3接收
//包含所需頭文件
#include avr/io.h
#include avr/interrupt.h
#include avr/signal.h
/*------宏定義------*/
#define uchar unsigned char
#define uint unsigned int
#define BIT(x) (1(x))
#define NOP() asm("nop")
#define WDR() asm("wdr")
/*------函數定義------*/
void spi_write(uchar sData);
uchar spi_read(void);
//端口初始化
void port_init(void)
{
DDRA = 0XFF;
PORTB=PORTB|0b11110000; //SCK MISO MOSI SS 使能上拉
DDRB=DDRB0b01001111; // SCK MOSI SS 置為輸入
DDRB=DDRB|0b01000001; // MISO 置為輸出
}
void spi_init(void) //spi初始化
{
DDRB|=(1PB5)|(~(1PB7))|(~(1PB4))|(~(1PB4));
SPCR = 0xE1;
SPSR = 0x00;
}
SIGNAL(SIG_SPI) //一個字節發送或接收完成中斷
{
DDRA=0XFF;
PORTA=spi_read();
}
//功能:使用SPI發送一個字節
void spi_write(uchar sData)
{
SPDR = sData;
while(!(SPSR BIT(SPIF)));
//sData=SPDR;//讀從機發回來的數據
}
//功能:使用SPI接收一個字節
uchar spi_read(void)
{
SPDR = 0x00;
while(!(SPSR BIT(SPIF)));
return SPDR;
}
void init_devices(void)
{
cli(); //禁止所有中斷
MCUCR = 0x00;
MCUCSR = 0x80;//禁止JTAG
GICR = 0x00;
port_init();
spi_init();
sei();//開全局中斷
}
//主函數
int main(void)
{
init_devices();
spi_write(0X06);
while(1)
{
NOP();
}
return 0;
}
c語言 函數, 是有類型的。當你沒有寫明類型時,默認是整型。
函數 里通常要有 return 語句。return 語句 用來 返回數值。
只有 void 型函數 沒有 返回值, 不需要 return 語句。
main 函數 是主函數,它也 需要 return 語句,習慣上,大家都用 return 0;
main 函數的返回值 是送返給操作系統,初級編程人員可以不必細究 它的作用,程序里寫上 return 0; 或 return 1; 即可。
一個函數可以有多個return 語句,根據符合某條件執行相應的return 語句。 程序執行到 return 語句就 送返 返回值,結束本函數。
return 語句 應寫成
return 表達式;
最簡單的 表達式 是 1個常數,例如 0。
少數編譯器允許就寫 return ; 這時 默認 返回 0。