main._c
来自「meg16 的所有功能实例」· _C 代码 · 共 93 行
_C
93 行
//ICC-AVR application builder : 2006-6-20 9:25:59
// Target : M16
// Crystal: 1Mhz
#include <iom16v.h>
#include <macros.h>
#include "main.h"
uint8 Buffer;
void main(void)
{
SPI_SS_IN;
SPI_DO_OUT;
SPI_DI_IN;
SPI_CLK_IN;
uart_init(); //TART初始化
SEI(); //全局中断使能
USART_TXD(0x11);
for(;;)
{
if(SS)
{
Buffer=Spi_Send(0XF0);
USART_TXD(Buffer);
}
}
}
//===============================================================
void uart_init(void) //UART初始化
{
//设置侦格式
//异步,8位数据,无奇偶校验,一个停止位,无倍速
UCSRC=(1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);
//设置波特率
UBRRL= (F_osc/Baud_rate/16-1)%256;
UBRRH= (F_osc/Baud_rate/16-1)/256;
//使能接收中断,使能接收,使能发送
UCSRB = (1<<RXCIE)|(1<<RXEN)|(1<<TXEN);
}
//===============================================================
void USART_TXD(uint8 data) //发送采用查询方式
{
while( !(UCSRA & BIT(UDRE)) );
UDR=data;
while( !(UCSRA & BIT(TXC )) );
UCSRA|=BIT(TXC);
}
//=======================================================================
#pragma interrupt_handler USART_RXC:12
void USART_RXC(void)
{
}
//*****************************************************************************************
//函数名:Spi_send(uint8 dat)
//输入:发送的数据
//输出:无
//功能描述:SPI从模式发送一个字节,先发送高位(发送的同时接收)
//*****************************************************************************************
uint8 Spi_Send(uint8 dat)
{
uint8 i,temp;
temp = 0;
for(i=0; i<8; i++)
{
if(dat & 0x80)
{
MOSI_1;
}
else MOSI_0;
dat <<= 1;
while(!SCK);
while(SCK);
temp <<= 1;
if(MISO)temp++;
}
return temp;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?