No.89666 作者:xboxmylove 邮件:xboxmylove@163.com ID:46350 登陆:7次 文章数:4篇 最后登陆IP:219.233.113.30 最后登陆:2008/11/9 2:28:42 注册:2006/1/19 9:34:20 财富:129 发帖时间:2006/3/3 17:15:41 发贴者IP:61.155.219.39 标题:xboxmylove:请高手帮忙检查一个模拟发送接收SPI的一个PIC单片机程序!!!! 摘要:No.89666请高手帮忙检查一个模拟发送接收SPI的一个PIC单片机程序!!!!
点击浏览该文件 发送程序绝对正常!!!!!! SPI---C51模拟发送,PIC16F73模拟接收,用PROTEUS模拟仿真!!!为减少代码!!!我把PROTEUS模拟正确的代码加以改动,结果出现了错误,上面附有2中接收代码! 但是不论PROTEUS如何,接收的程序烧进片子后,总无法正常接收主机控制器的数据并显示!!! 极度郁闷中........我把这些发到这里,请大家帮忙指点一二,群众的力量是无限的!!!!!!!!!! 模拟接收错误的那个C程序有注释!!!! 模拟接受正确的的那个C程序,烧进硬件,出现的错误有点类似模拟接收错误的那个C在PROTEUS里面的情况!!!!!!!!! 下面这个是错误的哪个C程序!!! #include <pic.h> __CONFIG(0x3FA7); //配置字 volatile unsigned char DIS[5]={0x3f,0x3f,0x3f,0x3f,0x3f};//显示赋0; const unsigned char tab[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//定义LED段码0~9 unsigned char ptr=0; //定义一个动态扫描指针 void inittimer() //初始化定时器0和看门狗 { OPTION=0x0f; INTCON=0xA0; ADCON1=0x07; } void initport() //初始化接口 { TRISA=0x03; TRISB=0x01; TRISC=0x00; } void receive() //接收函数 { unsigned char a,i,j,ensel,point,check; if(RA1==0) //SPI的使能 { T0IE=0; //关定时器0 for(i=5;i> 0;i--) //5组数据 {a=0; for(j=6;j> 0;j--) //每组数据6位 {while(!RB0); //判断CLK是否为高 NOP(); NOP(); NOP(); NOP(); NOP(); if(RA0==1)a|=0x01; //如果传过来的位是高,就地位补1;传过来的是低则不变 a < <=1; //左移1位准备接下一位 while( ......
>>返回讨论的主题
|