人狗畜禽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)用測(cè)試 完善的開發(fā)代碼案例庫(kù)分享

技術(shù)支持

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

新品推廣

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

新聞中心

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

一個(gè)非常簡(jiǎn)單但你很難搞懂的C程序

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

以下是問(wèn)題的所在。首先說(shuō)明的是硬件和寄存器的設(shè)定完全正確。我把有問(wèn)題的程序規(guī)納出來(lái),并且以我先前用51單片機(jī)模擬 i2c 能夠運(yùn)行的程序做了對(duì)比。SPII2C都是串行的接口。其原理自己的看書了。問(wèn)題就出現(xiàn)在小小的移位上。下面把其中最容易忽略的地方列出來(lái)給大家一起討論。

大家找出下面兩個(gè)程序的本質(zhì)區(qū)別在什么地方。

main() { char data; char i; data = 0x55;//01010101; for(i = 0; i < 8; i++) { RB4 = (bit)(data & 0x80);//目的是讓RB4口移位輸出01010101; data <<= 1;//輸出下一位。 } }

和下面的程序。

main() { char data; char i; data = 0x55; for(i = 0; i < 8; i++) { if(data & 0x80)//完成讓RB4口移位輸出01010101; { RB4 = 1; } else { RB4 = 0; } data <<= 1; //輸出下一位。 } }

以上兩個(gè)程序其中上面那個(gè)是用在51單片機(jī)模擬I2C已經(jīng)可以運(yùn)行的程序了,一樣是移位的程序卻放到PIC里面就不能運(yùn)行了。但改成下面那個(gè)程序在PIC就可以用。有人會(huì)說(shuō)那下面那個(gè)程序放到51里會(huì)怎樣?我試過(guò)一樣沒(méi)問(wèn)題。也就是51兩個(gè)程序都可以用,而PIC卻只能用下面的那個(gè),這是我用做SPI的情況,至于其他的編程我就沒(méi)試過(guò)了。

但是按C語(yǔ)言的邏輯是完全看不出來(lái)他們的區(qū)別,至于硬件,51口和PIC的功能也一樣,不過(guò)51的是NPNOTP輸出,PIC的是MOS推挽輸出。然后PIC需要定義該口的輸入和輸出寄存器,其他的就沒(méi)多大差別了。輸出時(shí)后51PIC一樣,但輸入時(shí)51可以直接輸出高電平,但PIC需要外部上拉電阻拉高。

 



百色市| 平山县| 东安县| 汨罗市| 佳木斯市| 兰溪市| 无为县| 天峻县| 新化县| 天长市| 吐鲁番市| 阜南县| 日照市| 靖州| 莆田市| 基隆市| 安化县| 云梦县| 库车县| 阿拉善左旗| 清水县| 新巴尔虎右旗| 长葛市| 景洪市| 通道| 阿勒泰市| 班玛县| 上栗县| 南乐县| 新密市| 灵宝市| 亳州市| 贵溪市| 乌海市| 库伦旗| 班玛县| 沂南县| 宝坻区| 景谷| 湘潭县| 崇义县|