找回密码
 注册
搜索
查看: 925|回复: 0

[资料] 用计算机并口模拟SPI通讯的C源程序。 (免费)

[复制链接]
发表于 2006-1-21 14:12:00 | 显示全部楼层 |阅读模式
用计算机并口模拟SPI通讯的C源程序。

#include #include #include #include #include
#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();
}
*/
 
高级模式
B Color Image Link Quote Code Smilies

本版积分规则

Archiver|手机版|小黑屋|52RD我爱研发网 ( 沪ICP备2022007804号-2 )

GMT+8, 2024-12-23 22:44 , Processed in 0.140224 second(s), 16 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表