日本久久久久曰精品免费,国产精品一级二级三级,乱子伦av无码中文字幕s,国产成人精品一区免费视频

技術熱線: 4007-888-234

技術支持

一個非常簡單但你很難搞懂的C程序

更新時間: 2019-03-26

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

大家找出下面兩個程序的本質區別在什么地方。

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

以上兩個程序其中上面那個是用在51單片機模擬I2C已經可以運行的程序了,一樣是移位的程序卻放到PIC里面就不能運行了。但改成下面那個程序在PIC就可以用。有人會說那下面那個程序放到51里會怎樣?我試過一樣沒問題。也就是51兩個程序都可以用,而PIC卻只能用下面的那個,這是我用做SPI的情況,至于其他的編程我就沒試過了。

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

 



404
返回首頁 |  返回上一頁
主站蜘蛛池模板: 日喀则市| 灵山县| 碌曲县| 道孚县| 岑溪市| 石狮市| 百色市| 乃东县| 棋牌| 长顺县| 遵化市| 富锦市| 攀枝花市| 樟树市| 鹤壁市| 汤原县| 林芝县| 宜丰县| 绥棱县| 商丘市| 凤庆县| 广平县| 云南省| 万荣县| 海南省| 富裕县| 桂阳县| 昌吉市| 开化县| 金坛市| 台中县| 太仓市| 松江区| 华阴市| 巴塘县| 抚顺市| 康平县| 中阳县| 宜兰县| 化隆| 临清市|