機(jī)電之家資源網(wǎng)
單片機(jī)首頁|單片機(jī)基礎(chǔ)|單片機(jī)應(yīng)用|單片機(jī)開發(fā)|單片機(jī)文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓(xùn)信息
贊助商
pic單片機(jī)雙機(jī)異步通信
pic單片機(jī)雙機(jī)異步通信
 更新時(shí)間:2009-12-10 11:34:09  點(diǎn)擊數(shù):0
【字體: 字體顏色
 單片機(jī)PIC1編程(發(fā)送部分)
#include    <pic.h>
/*該程序?qū)崿F(xiàn)單片機(jī)雙機(jī)異步通信功能,該程序是發(fā)送部分*/
unsigned    char    tran[8];        /*定義一個(gè)數(shù)組存儲(chǔ)發(fā)送數(shù)據(jù)*/
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};
/*不帶小數(shù)點(diǎn)的顯示段碼表*/
/*spi顯示初始化子程序*/
void  SPIINIT()
{
    PIR1=0;
    SSPCON=0x30;    
    SSPSTAT=0xC0;
    /*設(shè)置SPI的控制方式,允許SSP方式
    TRISC=0xD7;            /*SDO引腳為輸出,SCK引腳為輸出*/
    TRISA5=0;                /*RA5引腳設(shè)置為輸出,以輸出顯示鎖存信號(hào)*/
}
/*給數(shù)組賦初值子程序 */
void        fuzhi()
{
    for(k=0;k<8;k++)    

    {
        tran[k]=k+3;
    }
}
/*SCI部件初始化子程序*/
void        sciint()
{
    SPBRG=0X19;            /*將傳輸?shù)牟ㄌ芈试O(shè)為約9 600位/秒*/
    TXSTA=0X04;            /*選擇異步高速方式傳輸8位數(shù)據(jù)*/
    RCSTA=0X80;            /*允許同步串行口工作*/
    TRISC6=1;
TRISC7=1;                /*將RC6、RC7設(shè)置為輸入方式,對(duì)外部呈高阻狀態(tài)*/
}    
/*SPI傳輸數(shù)據(jù)子程序*/
void      SPILED(data)
{
    SSPBUF=data;            /*啟動(dòng)發(fā)送*/
    do    {
              ;
    }while(SSPIF==0);
    SSPIF=0;
}
/*顯示子程序,顯示8位數(shù)*/
void        display()
{
    RA5=0;                    /*準(zhǔn)備鎖存*/
    for(k=0;k<8;k++)    

    {
        data=tran[k];
        data=table[data];        /*查得顯示的段碼*/
        SPILED(data);        /*發(fā)送顯示段碼*/
    }
    RA5=1;                    /*最后給一個(gè)鎖存信號(hào),代表顯示任務(wù)完成*/     
}            
/*主程序*/
main()
{
    SPIINIT();
    fuzhi();                    /*給數(shù)組賦初值*/
    sciint();                    /*SCI部件初始化*/
di();                    /*中斷禁止*/
    TXEN=1;                /*發(fā)送允許*/
    CREN=1;                /*接收數(shù)據(jù)允許*/
    for(k=0;k<8;k++)

    {    
           TXREG=tran[k];        /*發(fā)出一個(gè)字符*/
           while(1)

           {
                 if(TXIF==1)

                 break;
           }                    /*等待寫入完成*/
           while(1)

           {
                  if(RCIF==1)    

                   break;/*若收到響應(yīng)字節(jié),則終止等待*/
           }
           RCREG=RCREG;    /*讀響應(yīng)字節(jié),清RCIF*/    
     }    
     display();                /*顯示發(fā)送的數(shù)據(jù)*/
 while(1)

     {
          ;
      }
}

2  單片機(jī)PIC2編程(接收部分)
#include    <pic.h>
/*該程序?qū)崿F(xiàn)單片機(jī)雙機(jī)異步通信功能,該程序是接收部分,并把接收的數(shù)據(jù)顯示在8個(gè)LED上*/
unsigned      char        rece[8];/*定義一個(gè)數(shù)組存儲(chǔ)接收數(shù)據(jù)*/
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};
/*不帶小數(shù)點(diǎn)的顯示段碼表*/
/*spi顯示初始化子程序*/
void        SPIINIT()
{
;詳細(xì)語句見發(fā)送程序
}
/*SCI部件初始化子程序*/
void        sciint()
{
    SPBRG=0X19;            /*波特率設(shè)置與PIC1相同,為約9 600位/秒*/
    TXSTA=0X04;            /*異步高速傳輸*/
    RCSTA=0X80;            /*串行口工作使能*/
    TRISC6=1;
    TRISC7=1;                /*將RC6、RC7設(shè)置為輸入方式,對(duì)外部呈高阻狀態(tài)*/
}
/*SPI傳送數(shù)據(jù)子程序*/
void      SPILED(data)
{
;詳細(xì)語句與見發(fā)送程序
}
/*顯示子程序,顯示4位數(shù)*/
void    display()
{
        RA5=0;                    /*準(zhǔn)備鎖存*/
for(k=0;k<8;k++)

    {
        data=rece[k];
        data=table[data];        /*查得顯示的段碼*/
        SPILED(data);        /*發(fā)送顯示段碼*/
    }
    RA5=1;                    /*最后給一個(gè)鎖存信號(hào),代表顯示任務(wù)完成*/     
}
/*主程序*/
main()
{
    SPIINIT();                /*spi顯示初始化*/
    sciint();                    /*SCI部件初始化*/
    di();                    /*中斷禁止*/
    CREN=1;                /*接收允許*/
    TXEN=1;                /*發(fā)送允許*/
    for(k=0;k<8;k++)

    {
           while(1)

            {
                 if(RCIF==1)   

                 break;
             }                    /*等待接收數(shù)據(jù)*/
rece[k]=RCREG;        /*讀取接收數(shù)據(jù),同時(shí)清掉RCIF*/
             TXREG=rece[k];        /*發(fā)送接收到的數(shù)據(jù)*/
             while(1)

             {
                    if(TXIF==1)   

                     break;
             }                    /*等待寫入完成*/
     }
    display();                /*顯示接收的數(shù)據(jù)*/
    while(1)

    {
        ;
    }
}

  • 上一篇: 單片機(jī)鍵盤的掃描查詢方式輸入
  • 下一篇: 沒有了
  • 發(fā)表評(píng)論   告訴好友   打印此文  收藏此頁  關(guān)閉窗口  返回頂部
    熱點(diǎn)文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評(píng)論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機(jī)電之家 | 會(huì)員助手 | 免費(fèi)鏈接

    點(diǎn)擊這里給我發(fā)消息66821730(技術(shù)支持)點(diǎn)擊這里給我發(fā)消息66821730(廣告投放) 點(diǎn)擊這里給我發(fā)消息41031197(編輯) 點(diǎn)擊這里給我發(fā)消息58733127(審核)
    本站提供的機(jī)電設(shè)備,機(jī)電供求等信息由機(jī)電企業(yè)自行提供,該企業(yè)負(fù)責(zé)信息內(nèi)容的真實(shí)性、準(zhǔn)確性和合法性。
    機(jī)電之家對(duì)此不承擔(dān)任何保證責(zé)任,有侵犯您利益的地方請(qǐng)聯(lián)系機(jī)電之家,機(jī)電之家將及時(shí)作出處理。
    Copyright 2007 機(jī)電之家 Inc All Rights Reserved.機(jī)電之家-由機(jī)電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

    主辦:杭州市高新區(qū)(濱江)機(jī)電一體化學(xué)會(huì)
    中國(guó)行業(yè)電子商務(wù)100強(qiáng)網(wǎng)站

    網(wǎng)站經(jīng)營(yíng)許可證:浙B2-20080178-1