GPIO的配置及使用(MC9S08AW60) - 新聞資(zī)訊 - 雲南小程序開發|雲南軟件開發|雲南網站(zhàn)建設-西山區知普網絡科技工作室

159-8711-8523

雲南網建設/小程序開發/軟件開發

知識

不管是網站(zhàn),軟件還是小程序,都要直接或間接能為您産生價值,我們在追求其視覺表現的同時,更側重于功能的便捷,營銷的便利,運營的高效,讓網站(zhàn)成為營銷工具,讓軟件能切實提升企業(yè)内部管理水平和(hé)效率。優秀的程序為後期升級提供便捷的支持!

您當前位置>首頁 » 新聞資(zī)訊 » 技術(shù)分享 >

GPIO的配置及使用(MC9S08AW60)

發表時間:2020-10-19

發布人:葵宇科技

浏覽次數:97

基礎必備知識
AW60有7個(gè)GPIO接口,分别是A、B、C、D、E、F、G。每個(gè)接口最多對應8個(gè)GPIO引腳,但對每個(gè)GPIO接口編程時,寄存器(qì)設置都要是8位,隻是沒有引腳的位無效。用8位二進制數表示寄存器(qì)的值,8位二進制數從右向左依次表示為GPIO 0~7個(gè) 引腳。以0b開頭的數是二進制,0x開頭的數是十六進制(0b00001111=0x0f,0b11110000=0xf0,就是把二進制傳化為十六進制)。用單片機實現什麼功能其實就是對寄存器(qì)進行操作。

每個(gè)I/O(GPIO)管腳(引腳)的功能受5個(gè)寄存器(qì)的控制:

一、數據寄存器(qì)
(1)命名規則:PT+該端口(接口)的名稱+D
如(rú):PTAD、PTBD、PTCD等
(2)設置每個(gè)引腳的輸出電平:1為高電平,0為低電平
如(rú):PTAD=0b11111111 等價于 PTAD=0xff
(3)單獨對每一個(gè)引腳配置數據寄存器(qì):PTxDn(x:接口;n:引腳)
如(rú):PTAD0=1(設置A接口的0号引腳為高電平);PTBD3=0(設置B接口的3号引腳為低電平)
二、方向寄存器(qì)
(1)命名規則:PT+該端口(接口)的名稱+DD
如(rú):PTADD、PTBDD、PTCDD等
(2)設置每個(gè)引腳是輸入還是輸出:1為輸出,0為輸入
如(rú):PTADD=0b11111111 等價于 PTADD=0xff :設置A接口的8個(gè)引腳都是輸出;PTBDD=0b00001111(0x0f):設置B接口的0 ~ 3個(gè)引腳為輸出,4 ~ 7個(gè)引腳為輸入。
(3)單獨對每一個(gè)引腳配置方向寄存器(qì):PTxDDn(x:接口;n:引腳)
如(rú):PTADD0=1(設置A接口的0号引腳為輸出);PTBDD3=0(設置B接口的3号引腳為輸入)
三、輸出驅動(dòng)能力(電流的高低)寄存器(qì)
(1)命名規則:PT+該端口(接口)的名稱+DS
如(rú):PTADS、PTBDS、PTCDS等
(2)設置每個(gè)引腳的驅動(dòng)能力:1為高驅動(dòng)(接LED),0為低驅動(dòng)(接IC)
如(rú):PTADS=0b11111111 等價于 PTADS=0xff:設置A接口的8個(gè)引腳都是高驅動(dòng) ;PTBDS=0b00001111(0x0f):設置B接口的0 ~ 3個(gè)引腳為高驅動(dòng),4 ~ 7個(gè)引腳為低驅動(dòng)。
(3)單獨對每一個(gè)引腳配置輸出驅動(dòng)能力寄存器(qì):PTxDSn(x:接口;n:引腳)
如(rú):PTADS0=1(設置A接口的0号引腳為高驅動(dòng));PTBDS3=0(設置B接口的3号引腳為低驅動(dòng))
四、設置單片機内部輸入上拉寄存器(qì)
(1)命名規則:PT+該端口(接口)的名稱+PE
如(rú):PTAPE、PTBPE、PTCPE等
(2)設置每個(gè)引腳為上拉輸入:1為允許内部輸入上拉,0為禁止内部輸入上拉(該引腳不設置為上拉輸入)
如(rú):PTAPE=0b11111111 等價于 PTAPE=0xff:設置A接口的8個(gè)引腳都是上拉輸入 ;PTBPE=0b00001111(0x0f):設置B接口的0 ~ 3個(gè)引腳為上拉輸入,4 ~ 7個(gè)引腳不設置為上拉輸入。
(3)單獨對每一個(gè)引腳配置内部輸入上拉寄存器(qì):PTxPEn(x:接口;n:引腳)
如(rú):PTAPE0=1(設置A接口的0号引腳為上拉輸入);PTBPE3=0(不設置B接口的3号引腳為上拉輸入)
五、輸出擺率控制寄存器(qì)
(1)命名規則:PT+該端口(接口)的名稱+SE
如(rú):PTASE、PTBSE、PTCSE等
(2)設置每個(gè)引腳為輸出擺率控制:1為允許輸出擺率控制,0為禁止輸出擺率控制(該引腳不設置為輸出擺率控制)
如(rú):PTASE=0b11111111 等價于 PTASE=0xff:設置A接口的8個(gè)引腳為輸出擺率控制 ;PTBSE=0b00001111(0x0f):設置B接口的0 ~ 3個(gè)引腳為輸出擺率控制,4 ~ 7個(gè)引腳不設置為輸出擺率控制。
(3)單獨對每一個(gè)引腳配置輸出擺率控制寄存器(qì):PTxSEn(x:接口;n:引腳)
如(rú):PTASE0=1(設置A接口的0号引腳為輸出擺率控制);PTBSE3=0(不設置B接口的3号引腳為輸出擺率控制)

控制LED時隻需要配置:數據寄存器(qì)、方向寄存器(qì)、輸出驅動(dòng)能力(電流的高低)寄存器(qì)
用開關(guān)時隻需要配置:方向寄存器(qì)、内部輸入上拉寄存器(qì)(外部有接上拉電阻時這個(gè)寄存器(qì)也不用配置);讀取開關(guān)狀态時用數據寄存器(qì)讀取

key = PTBD3   //讀取B接口3号引腳的值(1或0)

PS:用AW60點亮(liàng)一個(gè)LED(LED其中(zhōng)一端接低電平,用B接口的5号引腳控制)
代碼如(rú)下(xià)

#include <hidef.h>          //調用頭文(wén)件
#include "derivative.h"

void GPIO_init(void);  //子(zǐ)函數聲明

void main(void)    //主函數
{
	DisableInterrupts; //關(guān)閉中(zhōng)斷,本程序未用到中(zhōng)斷
	SOPT_COPE=0;       //關(guān)閉看門狗複位功能,避免程序複位
	GPIO_init();       //引腳初始化
	for(;;)            //主程序主循環
	{
		PTBD=0x20;     //其中(zhōng)PTB5号引腳輸出高電平,燈亮(liàng)
	}
}
void GPIO_init(void)    //子(zǐ)函數定義
{
	PTBDD=0xff;     //PTD設置為輸出
	PTBDS=0x20;     //初始化PTB5号引腳為高驅動(dòng)
	PTBD=0x00;       //初始狀态PTB輸出低電平,燈滅
}

練習題:用一個(gè)開關(guān)控制一個(gè)LED的亮(liàng)滅
1、開關(guān)按下(xià)LED亮(liàng)
2、開關(guān)用上拉輸入接在C接口的6号引腳
3、LED其中(zhōng)一端接低電平,用A接口的4号引腳輸出高低電平控制LED

如(rú)果對你(nǐ)有用的話,可(kě)不可(kě)以點個(gè)贊呢(ne)

相關(guān)案例查看更多