Vier Arbeitsstatusumschaltungen von 51 Mikrocontroller-IO-Ports

Vier Arbeitsstatusumschaltungen von 51 Mikrocontroller-IO-Ports

1. Übersicht

In diesem Artikel werden die vier Arbeitsmodi der E/A-Pins des Mikrocontrollers vorgestellt. Jeder Modus hat seine eigene Verwendung. Die verschiedenen Modi werden später beim Ansteuern von Peripheriehardware verwendet.

2. Einführung in die vier Arbeitsmodi des IO-Ports

PnM1 PnM0 I/O-Port-Arbeitsmodus
0 0 Quasi-bidirektionaler Port: Senkstrom bis zu 20 mA, Pull-up-Strom 150–270 uA
0 1 Push-Pull-Ausgang: starker Pull-Up-Ausgang bis 20 mA, externer Strombegrenzungswiderstand
1 0 Hochohmiger Eingang
1 1 Open Drain: Der interne Pull-up-Widerstand wird getrennt und ein externer Pull-up-Widerstand angeschlossen. Kann den externen Status sowohl lesen als auch extern ausgeben

Begriffserklärung
Senkstrom: der Stromeingang von VCC zu anderen IO-Pins
Pull-up-Strom: der Strom von anderen IO-Pins zu GND

2. Wechseln Sie die vier Arbeitsmodi des IO-Ports

Die folgende Beschreibung zum Umschalten des IO-Port-Arbeitsmodus basiert auf dem Mikrocontroller STC12C2052. Der Standard-IO-Modus dieses Mikrocontrollers ist quasi-bidirektional. So wechseln Sie in andere Modi.

2.1. Prinzip des Umschaltens des I/O-Port-Modus

Der Mikrocontroller wechselt zwischen verschiedenen Modi, indem er die Werte der beiden Register PnM1 und PnM0 ändert. Das Änderungsprinzip wird im Folgenden vorgestellt.

  1. Das n in PnM1 und PnM0 gibt an, welche Gruppe von E/A-Schnittstellen geändert werden soll. Ändern Sie beispielsweise die E/A-Ports der P1-Gruppe und setzen Sie sie auf P1M1 und P1M0; ändern Sie die E/A-Ports der P3-Gruppe und setzen Sie sie auf P3M1 und P3M0.
  2. Die Werte von PnM1 und PnM0 sind hexadezimal. Im Folgenden finden Sie ein Beispiel für die Berechnung ihrer Werte.
    Beispiel: Stellen Sie die beiden Pins P1.7 und P1.6 auf den Push-Pull-Ausgangsmodus ein
Pin-Gruppenname Nr. 8 Nr. 7 Nr. 6 Nr. 5 Nummer 4 Nr. 3 Nr. 2 Nr. 1
P1 (eine Gruppe belegt ein Byte mit 8 Bits) P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0
Binäres Bit 1 1 0 0 0 0 0 0

Teilen Sie die Binärzahl in der obigen Tabelle in hohe 4 Bits und niedrige 4 Bits auf. Konvertieren Sie 1100 in eine Dezimalzahl, die 12 ist, und der Hexadezimalwert ist 0xC0.

//设置P1.7 P1.6推挽输出 P1M0和P1M1值
P1M0 = 0X00 // 0000 0000
P1M1 = 0XC0 // 1100 0000

Teilen Sie die 8-Bit-Binärdatei einer Reihe von Schnittstellen in hohe 4 Bits und niedrige 4 Bits auf. Wenn Sie die beiden Pins P1.3 und P1.2 auf den Push-Pull-Ausgabemodus einstellen möchten, sind die niedrigen 4 Bits ebenfalls 1100 und in Dezimalzahl 12 konvertiert. Steht das nicht im Widerspruch zu dem oben Gesagten? Tatsächlich werden bei der Konvertierung von Dezimal in Hexadezimal auch die letzten beiden Ziffern von hexadezimal 0x getrennt: Die linke Ziffer entspricht dem hohen 4-stelligen Binärwert und die rechte Ziffer entspricht dem niedrigen 4-stelligen Binärwert.

//设置P1.3  P1.2推挽输出 P1M0和P1M1值
P1M0 = 0X00 // 0000 0000
P1M1 = 0X0C // 0000 1100

2.1. Wechseln Sie in den Push-Pull-Ausgabemodus

1. Programmcode

Das Folgende ist die Definition der P1.7-P1.6-Pins der P1-Gruppen-E/A-Schnittstelle als Push-Pull-Modus. Dieser Pin entspricht den oberen vier Bits des Binärsystems. In Hex umgewandelt ist 0XC0

/*************************************************************
* 程序名: 设置接口推挽模式
* 编写人: bruce
* 硬件支持:STC12C2052
* 日  期: 2023-11-23
* 修改日志: 
/*************************************************************/

#include<STC12C2052AD.H>

// 定义P1.7 和 P1.6接口
sbit LED1 = P1^7;
sbit LED2 = P1^6;


void main(void){
    
    
	//设置P1.7 和 P1.6接口为推挽模式
	P1M0 = 0X00;
	P1M1 = 0XC0;
	// 定义接口高低电平
	LED1 = 1;
	LED2 = 0;
}

Das Folgende ist die Definition des P1.3-P1.2-Pins der P1-Gruppen-E/A-Schnittstelle als Push-Pull-Modus. Dieser Pin entspricht den unteren vier Bits des Binärsystems. In Hexadezimal umgewandelt ist 0X0C

/*************************************************************
* 程序名: 设置接口推挽模式
* 编写人: bruce
* 硬件支持:STC12C2052
* 日  期: 2023-11-23
* 修改日志: 
/*************************************************************/

#include<STC12C2052AD.H>

// 定义P1.3 和 P1.2接口
sbit LED1 = P1^3;
sbit LED2 = P1^2;


void main(void){
    
    
	//设置P1.3 和 P1.2接口为推挽模式
	P1M0 = 0X00;
	P1M1 = 0X0C;
	// 定义接口高低电平
	LED1 = 1;
	LED2 = 0;

}
2.Hardware-Schaltung

Stellen Sie die Schnittstellen P1.7 und P1.6 auf den Push-Pull-Modus ein

Der Pluspol des LED-Lichts ist mit Pin Nr. 9 des Mikrocontrollers verbunden, und der Minuspol ist mit Pin Nr. 7 des Mikrocontrollers verbunden. Nachdem es in den Push-Pull-Modus versetzt wurde, gibt es 20 mA aus und leuchtet auf. Hervorhebung durch das LED-Licht.

Der kursive Stil setzt die Schnittstellen P1.3 und P1.2 in den Push-Pull-Modus

Der Pluspol des LED-Lichts ist mit Pin 5 des Mikrocontrollers verbunden, und der Minuspol ist mit Pin 4 des Mikrocontrollers verbunden. Nach der Einstellung in den Push-Pull-Modus leuchtet der Ausgang 20 mA auf und das LED-Licht wird hervorgehoben.

Fügen Sie hier eine Bildbeschreibung ein

おすすめ

転載: blog.csdn.net/m0_38039437/article/details/134576974