亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码

標(biāo)題: 藍(lán)橋杯單片機(jī)資源擴(kuò)展方式說(shuō)明(IO&MM) [打印本頁(yè)]

作者: gashbjnlfd    時(shí)間: 2018-6-20 23:21
標(biāo)題: 藍(lán)橋杯單片機(jī)資源擴(kuò)展方式說(shuō)明(IO&MM)
單片機(jī)資源擴(kuò)展方式說(shuō)明(IO&MM)
---CT107D單片機(jī)綜合訓(xùn)練平臺(tái)
  CT107D 單片機(jī)綜合訓(xùn)練平臺(tái)具有 IO 擴(kuò)展模式和存儲(chǔ)器映射(MM)擴(kuò)展模式,可以通過(guò)調(diào)節(jié)板上跳線J13進(jìn)行配置。其中 IO擴(kuò)展模式較為容易理解,存儲(chǔ)器映射擴(kuò)展模式可以直接通過(guò)XBYTE 關(guān)鍵字來(lái)操作部分資源,能夠大大簡(jiǎn)化外設(shè)資源程序設(shè)計(jì),下面將舉例說(shuō)明兩種擴(kuò)展方式。

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

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

#include "reg52.h"

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

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

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


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







歡迎光臨 (http://www.denmoz.com/bbs/) Powered by Discuz! X3.1