找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 7697|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

藍橋杯單片機資源擴展方式說明(IO&MM)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:355619 發(fā)表于 2018-6-20 23:21 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
單片機資源擴展方式說明(IO&MM)
---CT107D單片機綜合訓(xùn)練平臺
  CT107D 單片機綜合訓(xùn)練平臺具有 IO 擴展模式和存儲器映射(MM)擴展模式,可以通過調(diào)節(jié)板上跳線J13進行配置。其中 IO擴展模式較為容易理解,存儲器映射擴展模式可以直接通過XBYTE 關(guān)鍵字來操作部分資源,能夠大大簡化外設(shè)資源程序設(shè)計,下面將舉例說明兩種擴展方式。

1.  IO口擴展方式
平臺將單片機P25、P26、P27 接入到74HC138譯碼器的三線輸入端口,由此我們 可以通過 P25、P26 和 P27 引腳控制 38 譯碼器的輸出端口 Y[0...8];通過板上的擴展模式配置跳線J13,將譯碼器輸出端口Y[0…8]與GND經(jīng)過或非門輸出,作為74HC573的片選信號,即實現(xiàn)了IO擴展方式:
#include "reg52.h"

sbit LCD_E = P1^7;
//主函數(shù)
void main(void)
{
LCD_E = 0; //將 LCD 模塊禁能,防止LCD 模塊對總線狀態(tài)的影響
while(1)
{
/* 注釋1:通過此句代碼將P2.7 = 1,P2.6 = 0,P2.5 = 0,不改變P2口其它引腳
狀態(tài)。由 138譯碼器的真值表可以知道此時譯碼器輸出端Y4 處于低電平狀態(tài);因為
為 IO編程方式,所以Y4和 GND一起經(jīng)過或非 門后,輸出高電平,并連接到573
鎖存器的使能端口,將573 鎖存器“打通“,此時鎖存器輸出端與單片機P0口狀態(tài)一
致。*/
P2 = ((P2&0x1f)|0x80);
/* 注釋 2:因為 573 鎖存器已經(jīng)“打通“,現(xiàn)在通過 P0 口輸出 0xff,573 鎖存器的輸
出端也將輸出0xff,從而將所有LED熄滅。*/
P0 = 0xff;
/* 注釋3:通過此句代碼將P2.7 = 0,P2.6 = 0,P2.5 = 0,不改變P2口其它引腳
狀態(tài)。由 138譯碼器的真值表可以知道此時譯碼器輸出端Y4 處于高電平狀態(tài);因為
為 IO 編程方式,所以 Y4 和 GND 一起經(jīng)過或非 門后,輸出低電平,并連接到 573
鎖存器的使能端口,將573 鎖存器“鎖存“,此時鎖存器將輸入鎖存,輸出端口數(shù)據(jù)不
再受到P0 口影響。*/   
P2 &= 0x1f;
/* 一小段延時函數(shù)  */
delay();
/*與注釋1 相同*/
P2 = ((P2&0x1f)|0x80);
/* 注釋2:因為 573鎖存器已經(jīng)“打通“,現(xiàn)在通過P0 口輸出0x00,573鎖存器的輸
出端也將輸出0x00,從而將所有LED點亮。*/
P0 = 0x00;
/*與注釋3 相同*/
P2 &= 0x1f;
delay();
}
}
  與上例相同,如果想使用執(zhí)行機構(gòu)模塊(蜂鳴器、繼電器、電機等外設(shè)),需要做的無
非是“打通”與執(zhí)行結(jié)構(gòu)連接的鎖存器,進行操作,操作結(jié)束后, “鎖存” ,程序片段如下:  

#include "reg52.h"

sbit LCD_E = P1^7;
sbit RELAY = P0^4;
//主函數(shù)
void main(void)
{
LCD_E = 0; //將 LCD 模塊禁能,防止LCD 模塊對總線狀態(tài)的影響
while(1)
{
/* 注釋 1:通過此句代碼將P2.7 = 1,P2.6 = 0,P2.5 = 1,不改變P2口其它引腳
狀態(tài)。由 138譯碼器的真值表可以知道此時譯碼器輸出端Y5 處于低電平狀態(tài);因為
為 IO編程方式,所以Y5和 GND一起經(jīng)過或非 門后,輸出高電平,并連接到573
鎖存器的使能端口,將573 鎖存器“打通“,此時鎖存器輸出端與單片機P0口狀態(tài)一
致。*/
P2 = ((P2&0x1f)|0xA0);
/* 注釋2:因為573鎖存器已經(jīng)“打通“,現(xiàn)在通過P0.4 輸出高電平,相應(yīng)的573 鎖
存器的輸出端也將輸出高電平,控制繼電器  */
RELAY = 1;
/* 注釋 3:通過此句代碼將P2.7 = 0,P2.6 = 0,P2.5 = 0,不改變P2口其它引腳
狀態(tài)。由 138譯碼器的真值表可以知道此時譯碼器輸出端Y5 處于高電平狀態(tài);因為
為 IO 編程方式,所以 Y5 和 GND 一起經(jīng)過或非 門后,輸出低電平,并連接到 573
鎖存器的使能端口,將573 鎖存器“鎖存“,此時鎖存器將輸入鎖存,輸出端口數(shù)據(jù)不
再受到P0 口影響。*/   
P2 &= 0x1f;
/* 一小段延時函數(shù)  */
delay();
/*與注釋1 相同*/
P2 = ((P2&0x1f)|0x80);
/* 注釋2:因為573鎖存器已經(jīng)“打通“,現(xiàn)在通過P0.4 口輸出低電平,相應(yīng)的573
鎖存器的輸出端也將輸出低電平,控制繼電器  */
RELAY = 0;
/*與注釋3 相同*/
P2 &= 0x1f;
delay();
}
}

2.  存儲器映射擴展方式
51 單片機可以外擴64K 字節(jié)的RAM和ROM空間,傳統(tǒng)的8051單片機具有16 位地
址總線和 8 位數(shù)據(jù)總線,其中 P0 口作為數(shù)據(jù)和地址低字節(jié)的復(fù)用端口,P2 口作為高 8 位
地址線。CT107D 單片機綜合訓(xùn)練平臺的存儲器映射擴展方式(MM),是一種可以像操作
外部 RAM存儲器一樣, 操作LED指示燈、 執(zhí)行結(jié)構(gòu) (蜂鳴器、 繼電器等..)、 數(shù)碼管、 82C55
等外設(shè)資源的擴展方式,當(dāng)然實現(xiàn)這樣的操作,是與 CT107D 單片機綜合訓(xùn)練平臺的硬件
設(shè)計具有關(guān)聯(lián)性的。舉例說明,在上面IO擴展方式里已經(jīng)介紹過,如果我們希望通過程序
點亮或者熄滅LED 指示燈需要進行如下操作:
  2.1 IO擴展方式代碼片段:
P2 = ((P2&0x1f)|0xA0);
P0 = 0x00;    // LED = 0xff;
P2 &= 0x1f;
  如果,我們將擴展方式配置跳線配置為存儲器映射擴展方式(MM),我們可以通過以下
簡單代碼來實現(xiàn)其操作:
XBYTE[0x8000] = 0x00; // XBYTE[0x8000] = 0xff;
  到現(xiàn)在存在的疑問是,LED 指示燈模塊的地址:0x8000是如何確定的呢?由CT107D
單片機綜合訓(xùn)練平臺的硬件電路圖我們可以知道,當(dāng) P2.7 = 1; P2.6 = 0; P2.5 = 0;(其它地
址線不需要關(guān)心),即可將與 LED 指示燈模塊連接的 74HC573“打通” ,此時可以通過 P0
口控制 LED 指示燈的狀態(tài),因此,LED 指示燈模塊的地址為 0x8000;由此類推,我們可
以知道執(zhí)行機構(gòu)模塊的操作地址為 0xA000,數(shù)碼管段碼端的操作地址為 0xE000,數(shù)碼管
位選端口的操作地址為0xC000 等等。
  下面來看一個具體實例:
#include "reg52.h"
#include "absacc.h"
sbit LCD_E = P1^7;

//主函數(shù)
void main(void)
{
    LCD_E = 0; //將 LCD 模塊禁能,防止LCD模塊對總線狀態(tài)的影響
    while(1)
    {
          XBYTE[0x8000] = 0x00;   //LED 指示燈全部點亮
          /* 一小段延時函數(shù)  */            
          delay();
           
          XBYTE[0x8000] = 0xff;   //LED指示燈全部熄滅
          delay();
    }
}
  MM編程方式,能夠簡化程序設(shè)計,這一點在數(shù)碼管動態(tài)掃描顯示的代碼部分體現(xiàn)的尤
為明顯,由于這種擴展方式占用單片機P3.6引腳,在使用4X4矩陣鍵盤時,不建議使用這
種擴展方式。
數(shù)碼管顯示程序片段


完整的pdf格式文檔51黑下載地址:
Microsoft Word - MM&IO編程方式說明.pdf (119.72 KB, 下載次數(shù): 29)


評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂1 踩
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表