人狗畜禽COMPANY LIMITED|全是肉的高H文〈男男〉|全篇肉高H秘书被C办公室四爱|全黄H全肉共妻|全黄H全肉短篇禁乱NP慕浅浅|全黄H全肉短篇N男男

技術(shù)熱線: 4007-888-234
設(shè)計(jì)開發(fā)

專注差異化嵌入式產(chǎn)品解決方案 給智能產(chǎn)品定制注入靈魂給予生命

開發(fā)工具

提供開發(fā)工具、應(yīng)用測試 完善的開發(fā)代碼案例庫分享

技術(shù)支持

從全面的產(chǎn)品導(dǎo)入到強(qiáng)大技術(shù)支援服務(wù) 全程貼心伴隨服務(wù),創(chuàng)造無限潛能!

新品推廣

提供新的芯片及解決方案,提升客戶產(chǎn)品競爭力

新聞中心

提供最新的單片機(jī)資訊,行業(yè)消息以及公司新聞動(dòng)態(tài)

軟件模擬SPI串口(匯編和PICC編寫)

更新時(shí)間: 2019-03-26
閱讀量:2841

軟件模擬SPI串口(匯編和PICC編寫)

pic低檔單片機(jī)中,多沒有SPI串口,在與外界串口器件通訊時(shí)帶來麻煩,下面給出軟件模擬SPI串口的程序:

匯編:

;*********************************************************** output movwf outdb clrf rxdata movlw 0x09 movwf i again decfsz i,1 goto dbtran return dbtran movlw 0x80 andwf outdb,0 btfsc STATUS,2 goto daout bsf PORTC,5 datan rlf outdb,1 movlw 0x02 movwf T1 call delay bsf PORTC,3 btfss PORTC,4 goto datas bsf STATUS,0 datat rlf rxdata,1 movlw 0x02 movwf T1 call delay bcf PORTC,3 goto again daout bcf PORTC,5 goto datan datas bcf STATUS,0 goto datat ;************************************************************ delay decfsz T1,1 goto delay return ;***********************************************************

這是一個(gè)SPI串口調(diào)用子程序,其中outdb為發(fā)送數(shù)據(jù),rxdata為接受來的數(shù)據(jù),此程序在與外部EEPROM通訊中,經(jīng)過檢驗(yàn)沒問題。

piCC

unsigned char RW_SPI(unsigned char val){ unsigned char BitCounter; for (BitCounter=8;BitCounter!=0;BitCounter--){ CLK=0; //write DI=0; if(val&0x80) DI=1; val<<=1;

CLK=1; //read if(DO) val|=1;

} CLK=0; return val; }

此函數(shù)把SPI的讀寫功能集成在一塊,傳遞的val既是向SPI寫的數(shù)據(jù),也是從SPI讀取的數(shù)據(jù),只需要在執(zhí)行讀或?qū)懼鞍?/span>MCUI/O腳設(shè)置成相應(yīng)的輸出或輸入即可。(因?yàn)樵诖蟛糠謶?yīng)用中,是把SPIDIDO相連并用MCU的一個(gè)IO口來讀寫)。

調(diào)用示例:

#define NULL 0

SETIO=OUTPUT; CS=0; RW_SPI(0xab); CS=1;

//SPI0xab數(shù)據(jù)。

CS=0; SETIO=INPUT;



镇宁| 乳山市| 楚雄市| 常山县| 九龙县| 金秀| 台南县| 正蓝旗| 交口县| 西盟| 文山县| 革吉县| 佛教| 同心县| 霍城县| 修文县| 波密县| 武宁县| 明光市| 洮南市| 邳州市| 盐津县| 崇仁县| 镇赉县| 清镇市| 陈巴尔虎旗| 方正县| 寿阳县| 偃师市| 台南市| 耒阳市| 沙河市| 清远市| 喀喇沁旗| 连州市| 工布江达县| 鄂伦春自治旗| 静安区| 凤庆县| 布尔津县| 临江市|