欢迎光临MCUWAY! 本站网名:单片机之路  永久域名:www.mcuway.com

设为首页

加入收藏

电子基础 初学MCU 单片机类型 MCU程序 MCU应用 设计软件 测控电路 技术论坛
 您现在的位置: 单片机之路 >> 单片机程序 >> 单片机源码 >> 文章正文

用计算机并口模拟SPI通讯的C源程序

#define LPT_PORT 0x378
#define CLR_WCK(X) {X=X&(~(1<<0)); outportb(LPT_PORT,X); } // data.0
#define SET_WCK(X) {X=X | (1<<0)  outportb(LPT_PORT,X); }
#define CLR_BCK(X) {X=X&(~(1<<2)); outportb(LPT_PORT,X); } // data.2
#define SET_BCK(X) {X=X | (1<<2)  outportb(LPT_PORT,X); }
#define CLR_DATA(X) {X=X&(~(1<<3)); outportb(LPT_PORT,X); } // data.3
#define SET_DATA(X) {X=X | (1<<3)  outportb(LPT_PORT,X); }
#define FALSE 0
#define TRUE 1
void test_comm()
{
unsigned char data 
data = 0;
printf("Please press enter to begin send data\n");
getch();
printf("Pull down WCK data.0\n");
CLR_WCK(data);
getch();
printf("Pull up WCK data.0\n");
SET_WCK(data);
getch();

printf("Pull down BCK data.2\n");
CLR_BCK(data);
getch();
printf("Pull up BCK data.2\n");
SET_BCK(data);
getch();

printf("Pull down DATA data.3\n");
CLR_DATA(data);
getch();
printf("Pull up DATA data.3\n");
SET_DATA(data);
getch();
}
// Note: the size of buffer to send must be dword multiple
// size is the number of bytes to send
void short_delay(int n)
{
int i;
for(i=0;i {int temp =0;}
}
int send_spi_data(unsigned char *buffer, unsigned long size)
{
unsigned char buff[1024];
unsigned char *buf=buff;
unsigned char data;
int i,j,k;
data =0;
if((size%4)!=0) return FALSE;
memcpy(buff,buffer,size);

do{
SET_WCK(data);
for(k=0;k<2;k++){
for(j=0;j<2;j++){
printf(".");
for(i=0;i<8;i++){
if((*buf)&0x80){
SET_DATA(data);
}else{
CLR_DATA(data);
}
short_delay(1);
// delay(1);
SET_BCK(data);
short_delay(1);
// delay(1);
CLR_BCK(data);
short_delay(1);
// delay(1);
*buf<<=1;
}
buf++;
size--;
}
// buf++;
// size--;
CLR_WCK(data);
}
SET_WCK(data);
}while(size>0);
return TRUE;
}
/*
void main()
{
int i;
unsigned char tmpdata[4];
tmpdata[0] = 0x34;
tmpdata[1] = 0x12;
tmpdata[2] = 0x56;
tmpdata[3] = 0x78;
// for(i=0;i<500;i++)
for(i=0;i<50;i++)
{
send_spi_data(tmpdata,4);
}

// test_comm();
}
*/

普通文章28课:单片机音乐汇编程序设计
普通文章27课:单片机的一些基本概念
普通文章26课:单片机矩阵式键盘接口技术
普通文章51单片机教程(从原理开始基于汇编)
普通文章1课:单片机概述
普通文章2课:8051单片机引脚介绍
普通文章3课:单片机存储器结构结构分析
普通文章4课:第一个单片机小程序
普通文章5课:单片机延时程序分析
普通文章6课:单片机并行口结构
普通文章7课:单片机的特殊功能寄存器
普通文章8课:单片机寻址方式与指令系统
普通文章9课:单片机数据传递类指令
普通文章10课:单片机数据传送类指令
普通文章11课:单片机算术运算指令
普通文章12课:单片机逻辑运算类指令
普通文章13课:单片机逻辑与或异或指令祥解
普通文章14课:单片机条件转移指令
普通文章15课:单片机位操作指令
普通文章16课:单片机定时器与计数器
普通文章17课:单片机定时器/计数器的方式控制
普通文章18课:单片机的中断系统
普通文章19课:单片机定时器、中断试验
普通文章20课:单片机定时/计数器实验
普通文章21课:单片机串行口介绍

  • 上一篇文章:
  • 下一篇文章:
  • 更多精彩内容>>>

    普通文章电流单位
    普通文章功率单位
    普通文章什么是达林顿管?
    普通文章晶闸管的作用与原理

    学习单片机的必经之路——单片机之路,永久域名:www.mcuway.com