那位高手有STC12C5A60s2单片机的SPI调试程序? 谢谢!!
2个回答
展开全部
///////////spi.h/////////////////////////////
#ifndef SPI_H
#define SPI_H
#include <stc12le5a60s2.h>
#include <spi.h>
//sfr P4 = 0xe8;
//STC12LE5A60S2单片机自带SPI控制器连接
//sbit VCC1 = P2^0;// VCC1 NO USE
//sbit SON = P1^6 ;// MISO
//sbit SIN = P1^5 ;// MOSI
//sbit SCKN = P1^7 ; // SCK
sbit CSN = P1^4 ;// 28J60 -- CS
//sbit RSTN = P3^5 ; //RST, no use
//sbit INTN = P3^3 ; // INT, no use
void init_spi(void);
void WriteByte(u8_t temp);
u8_t ReadByte(void);
#endif
////////////////////////////////////////////////////////////////
///////////////////////////spi.c/////////////////////////////
#include<spi.h>
//STC12LE5A60S2单片机自带SPI控制器连接
void init_spi(void)
{
//SSIG = 1; //忽略SS脚
//SPEN = 1; //允许SPI工作
//DORD = 0; //先传高位MSB
//MSTR = 1; //设置单片机为主机
SPCTL = 0xD0; //SPI Control Register SSIG SPEN DORD MSTR CPOL CPHA SPR1 SPR0 0000,0100
SPSTAT = 0xC0; //
//IE2 |= 0x02; //允许SPI中断控制位
}
void WriteByte(u8_t temp)
{
SPDAT = temp;
while(!(SPSTAT & 0x80));
SPSTAT = 0xC0;
}
u8_t ReadByte(void)
{
idata u8_t temp;
//SPSTAT = 0xC0;
SPDAT = 0x00;
while(!(SPSTAT & 0x80));
temp = SPDAT;
SPSTAT = 0xC0;
return temp;
}
////////////////////////////////////////////////////////////////
#ifndef SPI_H
#define SPI_H
#include <stc12le5a60s2.h>
#include <spi.h>
//sfr P4 = 0xe8;
//STC12LE5A60S2单片机自带SPI控制器连接
//sbit VCC1 = P2^0;// VCC1 NO USE
//sbit SON = P1^6 ;// MISO
//sbit SIN = P1^5 ;// MOSI
//sbit SCKN = P1^7 ; // SCK
sbit CSN = P1^4 ;// 28J60 -- CS
//sbit RSTN = P3^5 ; //RST, no use
//sbit INTN = P3^3 ; // INT, no use
void init_spi(void);
void WriteByte(u8_t temp);
u8_t ReadByte(void);
#endif
////////////////////////////////////////////////////////////////
///////////////////////////spi.c/////////////////////////////
#include<spi.h>
//STC12LE5A60S2单片机自带SPI控制器连接
void init_spi(void)
{
//SSIG = 1; //忽略SS脚
//SPEN = 1; //允许SPI工作
//DORD = 0; //先传高位MSB
//MSTR = 1; //设置单片机为主机
SPCTL = 0xD0; //SPI Control Register SSIG SPEN DORD MSTR CPOL CPHA SPR1 SPR0 0000,0100
SPSTAT = 0xC0; //
//IE2 |= 0x02; //允许SPI中断控制位
}
void WriteByte(u8_t temp)
{
SPDAT = temp;
while(!(SPSTAT & 0x80));
SPSTAT = 0xC0;
}
u8_t ReadByte(void)
{
idata u8_t temp;
//SPSTAT = 0xC0;
SPDAT = 0x00;
while(!(SPSTAT & 0x80));
temp = SPDAT;
SPSTAT = 0xC0;
return temp;
}
////////////////////////////////////////////////////////////////
迪凯特科技(北京)有限公司
2023-07-28 广告
2023-07-28 广告
单片机的UART口通信速度通常取决于以下几个因素:1. 硬件规格:不同的单片机UART接口具有不同的最大传输速率,通常在数百Kbps到数Mbps的范围内。例如,某些常见的单片机,如STM32F103C8T6,其UART接口的最大传输速率可达...
点击进入详情页
本回答由迪凯特科技(北京)有限公司提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询