打印

请教 PIC 单片机通信模式

[复制链接]
1964|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
gyh02133|  楼主 | 2008-6-10 15:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
SSP 模式 上的IIC 格式,,我要一个机子发送,一个机子接收;


咋搞..
#include    <pic.h>
/*该程序实现单片机双机异步通信功能,该程序是发送部分*/
unsigned    char    tran[8];        /*定义一个数组存储发送数据*/
unsigned    char    k,data;    /*定义通用寄存器*/
const  char    table[20]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0XD8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0x7f,0xbf,0x89,0xff};
/*不带小数点的显示段码表*/
/*spi显示初始化子程序*/
void        SPIINIT()
{
    PIR1=0;
    SSPCON=0x30; //0b0011 0000     
    SSPSTAT=0xC0;//状态寄存器1100 0000  SPI 三线传送的
/*设置SPI的控制方式,允许SSP方式,并且时钟下降沿发送,与"74HC595,当其
*SCLK从低到高跳变时,串行输入寄存器"的特点相对应*/
    TRISC=0xD7;            /*SDO引脚为输出,SCK引脚为输出*/
    TRISA5=0;                /*RA5引脚设置为输出,以输出显示锁存信号*/
}
/*给数组赋初值子程序 */
void        fuzhi()
{
    for(k=0;k<8;k++)    {
        tran[k]=k+3;
    }
}
/*SCI部件初始化子程序*/
void        sciint()
{
    SPBRG=0X19;            /*将传输的波特率设为约9 600位/秒*/
    TXSTA=0X04;            /*选择异步高速方式传输8位数据 发送状态和控制寄存器 0000 0100*/
    RCSTA=0X80;            /*允许同步串行口工作1000 0000*/
    TRISC6=1;
    TRISC7=1;                /*将RC6、RC7设置为输入方式,对外部呈高阻状态*/
}    
/*SPI传输数据子程序*/
void      SPILED(data)
{
    SSPBUF=data;            /*启动发送*/
    do    {
              ;
    }while(SSPIF==0);             //SSPIF==1
    SSPIF=0;
}
/*显示子程序,显示8位数*/
void        display()
{
    RA5=0;                    /*准备锁存*/
    for(k=0;k<8;k++)    {
        data=tran[k];
        data=table[data];        /*查得显示的段码*/
        SPILED(data);        /*发送显示段码*/
    }
    RA5=1;                    /*最后给一个锁存信号,代表显示任务完成*/     
}    

是不是这样设置???        
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

16

主题

134

帖子

2

粉丝