//********************************************************************
//
// Author : Yang
//
// Date : 21 November 2009
//
// File : spi.c
//
// Hardware : ADuC845, ADuC847, ADuC848
//
// Description :
//
//
//********************************************************************
#include <string.h>
#include <stdio.h>
#include "aduc845.h"
#include <math.h>
typedef unsigned char uchar;
typedef unsigned int uint16 ;
#define counter_max 330 /* when core frequence=6.291456,max=330 */
void SCISendChar(uchar c1);
void SCISendString(uchar * pc1);
void SCISendHex(uchar c1);
uchar dtoa(uchar c1);
uchar xdata SendData[10] ; //varible in xdata , no initial value
uchar SendDataIndex = 0;
//Master
sbit SPI_CS1 = P2^3 ;
sbit SPI_CS2 = P2^6 ;
sbit SPI_CS3 = P2^5 ;
sbit SPI_CS4 = P2^4 ;
//Slave
void init_uart(void);
void delay(uchar ms);
void init_spi(void);
uchar DataRcv = 0;
uchar SPI_DATA_CNT = 0;
uchar temp = 0;
void main (void)
{
uchar i;
PLLCON = 0x01; //6.291456MHz
// CFG845 |= 0x01 ; /* important for xram...................................*/
SendData[0] = 0xA1;
SendData[1] = 0xA2;
SendData[2] = 0xA3;
SendData[3] = 0xA4;
SendData[4] = 0xA5;
SendData[5] = 0xA6;
SendData[6] = 0xA7;
SendData[7] = 0xA8;
SendData[8] = 0xA9;
SendData[9] = 0xAA;
init_uart();
init_spi();
EA = 1;
SCISendString("Start\n");
SPI_CS3 = 0;
while(1)
// for(;;)
{
SCISendString("Send:");
SCISendHex(SendData[temp]);
SCISendChar(' ');
SPIDAT = SendData[temp]; //数据寄存器spidat
delay(1);
if(++temp > 9)
{
temp = 0;
SPI_CS3 = 1; //控制从机ss
for(i=0;i<10;i++)
{
delay(250);
}
SPI_CS3 = 0;
}
for(i=0;i<10;i++)
{
delay(100);
}
}
}
void delay(uchar ms)
{
uint16 i;
while(ms--)
{
for(i = 0; i< 330; i++) //for 6.291415 MHz
{
// _nop_();
}
}
}
void init_spi(void)
{
SPICON = 0x3F; //Master , fcore/16, cpol=1,cpha=1 SPE = 1;
//SPICON = 0x2F; //从机 时钟极性 时钟相位 spi串口使能 传输速率核心时钟1/16
IEIP2 |= 0x01 ; //Enable SPI interrupt
}
void init_uart(void)
{
T3CON = 0x85; /* 9600 Baud rate,DIV=3 ............*/
T3FD = 0x12;
SCON = 0x52; /* Uart: mode1:8bit bd variable.....*/
}
void Ser() interrupt 4
{
if(RI==1)
{
temp=SBUF;
RI=0;
}
}
void interrupt_spi() interrupt 7
{
if (ISPI)
{
DataRcv = SPIDAT; //Auto clear the interrupt flag ISPI
//SCISendString("Rcved:");
// SCISendHex(DataRcv);
// SCISendString("\r\n");
SBUF=DataRcv;while(T1=0);T1=0;
}
}
// Send a Char through SCI
/*void SCISendChar(uchar c1){
while (!TI);
TI = 0;
SBUF = c1;
}
// Send a Hex through SCI
void SCISendHex(uchar c1){
SCISendChar(dtoa((c1&0xF0)>>4));
SCISendChar(dtoa((c1&0x0F)));
}
// convert a decimal to a char //将整数转化为十进制字符串的函数
uchar dtoa(uchar c1) {
return (c1>=10)? (c1+0x37):(c1+0x30);
}
// Send a string through SCI
void SCISendString(uchar * pc1) {
while((*pc1)!=0) {
SCISendChar(*pc1);
pc1++;
}
} */
SPI.zip_aduc845
版权申诉
68 浏览量
2022-09-23
16:46:37
上传
评论
收藏 16KB ZIP 举报
朱moyimi
- 粉丝: 65
- 资源: 1万+
最新资源
- 基于JavaScript和CSS的随寻订购网页设计源码 - web-order
- 基于MATLAB的声纹识别系统设计源码 - VoiceprintRecognition
- 基于Java的微服务插件集合设计源码 - wsy-plugins
- 基于Vue和微信小程序的监理日志系统设计源码 - supervisionLog
- 基于Java和LCN分布式事务框架的设计源码 - tx-lcn
- 基于Java和JavaScript的茶叶评级管理系统设计源码 - tea
- IMG_5680.JPG
- IMG_0437.jpg
- 基于Java的JAVA项目分析工具设计源码 - JAVAProjectAnalysis
- top888.json
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈