回覆列表
  • 1 # 使用者3456175603979

    80C51微控制器有P0-P3四個P口,以P0為例說明:

    要搞清這個問題,就要明白p0口的內部結構。P0口是由鎖存器經兩個驅動場效電晶體和外部引腳相連的。

    讀引腳的意思就是直接讀P0外部引腳的電位,而讀埠(鎖存器)讀的是內部與資料匯流排連結的鎖存器的電位。

    兩者不同。一般來說,讀取P0的資料,都是讀引腳,目的是獲取與P0相連的外部電路的狀態。而讀埠是在執行下述語句時由CPU自行完成的:

    inc P0;給p0加1

    執行這個語句時 ,採用“讀-改-寫”的過程,先讀取p0的埠資料,再加1,然後送到p0鎖存器裡。注意這個埠資料跟p0的引腳狀態不一樣,比如你事先給p0寫進69H,p0裡資料就是69H,而引腳上的狀態因為你沒有執行MOV A,p0之類的指令,它是不會進到p0的鎖存器裡去的。由此可見,所謂的讀埠,不是讀取p0的狀態,而是在執行inc之類的指令時由CPU自行完成的,

    讀引腳就是讀取p0口狀態了。讀引腳時要注意:先要給p0寫FFH,使它的場效電晶體T2和地斷開。

    因為p0口的場效電晶體T2一端接地,一端與外部引腳相連,由P0的鎖存器控制,當給鎖存器寫1時,它和地斷開,寫0時和地相連,所以寫零時讀到的總是低電平。

    試想你現在要讀P0引腳,按理說P0與外部電路相連,外部電路的是什麼狀態,就應該讀到什麼,但如果p0口的場效電晶體T2一端接地的話,它會把p0口電位拉低,你讀到的總是低電平0,所以要先給p0寫FFH,把p0的場效電晶體T2和地斷開,再讀數時就是真實狀態了。當外部電路斷開,再讀時讀到的就是p0埠(鎖存器)的真實狀態了。

    還不明白給hychyc_2008發訊息,或給hychyc_2008@163.com發郵件。

  • 中秋節和大豐收的關聯?
  • 奶水不足怎麼辦?