目錄
題目:
分析題目:
Proteus仿真:
?代碼:
82c55工作方式:
代碼解析:
題目:
單片機(jī)擴(kuò)展一片82C55可編程并行I/O芯片,實(shí)現(xiàn)數(shù)字量的輸入/輸出:8個(gè)輸入開(kāi)關(guān)分別控制8個(gè)輸出LED。
? ? ? ? ? ? ? ?
?82C55—可編程的通用并行接口電路(3個(gè)8位I/O口)
分析題目:
由題可知,我們可以將82c55的PA口作為輸出口連接八個(gè)LED,PB口作為輸入口連接八個(gè)按鍵。
Proteus仿真:
本題涉及的Proteus文件以及程序源碼均在本賬號(hào)發(fā)布
?代碼:
#include<reg52.h>
#include<absacc.h>
#define uchar unsigned char
#define uint unsigned int
#define PAdata XBYTE[0x7f00] //82c55芯片PA口地址(0111 1111 0000 0000)
#define PBdata XBYTE[0x7f01] //82c55芯片PB口地址(0111 1111 0000 0001)
#define PCdata XBYTE[0x7f02] //82c55芯片PC口地址(0111 1111 0000 0010)
#define contral XBYTE[0x7003] //82c55控制口地址 (0111 1111 0000 0011)
sbit reset=P3^5;
void delayms(uint j)
{
uchar i;
for(;j>0;j--)
{
i=250;
while(--i);
i=249;
while(--i);
}
}
void main()
{
uchar temp;
reset = 1; //82c55復(fù)位
delayms(10);
contral = 0x8b; //設(shè)置PB,PC口輸入,PA口輸出(1000 1011)
while(1)
{
temp = PBdata; //讀PB口開(kāi)關(guān)值
PAdata = temp; //寫(xiě)PA口
}
}
82c55工作方式:
- 方式0:基本輸入/輸出;
- 方式1:應(yīng)答輸入/輸出;
輸入? ?????????????????????????????????????????????????????????輸出
- 方式2:雙向傳送;
代碼解析:
82C55各端口地址的確定:#define PAdata XBYTE[0x7f00]
82C55各端口地址由P2和P0口決定。
端口地址:P2和P0=16位(根據(jù)具體I/O口接法決定,答案不是唯一的)
P2:111 1111? ? ? ? ? ? ? ? (本程序單片機(jī)P2.7口接82c55CS非端,未接的默認(rèn)為1)
P0:1111 11A1A0? ? ? ? ? ? ? ? (本程序單片機(jī)P0.1口接82c55A1端,P0.0口接82c55A0端)
例:#define PAdata XBYTE[0x7f00]?? ??? ? ? ?//82c55芯片PA口地址(0111 1111 0000 0000)
?I/O口模式設(shè)置:contral = 0x8b;
模式1:工作方式選擇控制字及端口PC置位/復(fù)位控制字(控制I/O口輸入/輸出)
?文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-487362.html
本題PA設(shè)為輸出(LED顯示),PB為輸入(檢測(cè)按鍵),PC未接設(shè)備,所以本題設(shè)置為輸入(輸入輸出均可),且均選擇方式0(基本輸入/輸出),本題是將整個(gè)PAPB口全部選中,所以選擇模式1,則D7=1,按照本題I/O要求D6~D0分別為000?1011(0x8b)文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-487362.html
到了這里,關(guān)于51單片機(jī) 82C55擴(kuò)展控制8個(gè)LED,單片機(jī)擴(kuò)展一片82C55可編程并行I/O芯片,實(shí)現(xiàn)數(shù)字量的輸入/輸出:8個(gè)輸入開(kāi)關(guān)分別控制8個(gè)輸出LED。的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!