第二章 mcs-51 单片机的硬件结构和工作原理

49
第第第 MCS-51 第第第第第第第第第第第第 2.1 MCS-51 单单单单单单单单单单 2.2 MCS-51 单单单单单单单 2.3 MCS-51 单单单单单单单单 2.4 MCS-51 单单单单单单单单单 2.5 单单单单 , 单单单单单 CPU 单单 2.6 单单 I/O 单

Upload: priscilla-mays

Post on 31-Dec-2015

39 views

Category:

Documents


6 download

DESCRIPTION

第二章 MCS-51 单片机的硬件结构和工作原理. 2.1 MCS-51 单片机的主要性能特点 2.2 MCS-51 单片机内部结构 2.3 MCS-51 单片机的引脚功能 2.4 MCS-51 单片机的存储器配制 2.5 时钟电路 , 复位电路和 CPU 时序 2.6 并行 I/O 口. 1. 教学内容 : MCS-51 单片机的内部结构及其特性 ( 片内结构、引脚功能及片外总线结构、存储器组织及扩展、 I/O 结构、中断、时钟和复位电路。 2. 教学重难点 MCS-51 单片机的引脚功能、存储器组织及扩展、 I/O 结构、中断 3. 课时 8 4. 作业 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 第二章  MCS-51 单片机的硬件结构和工作原理

第二章 MCS-51 单片机的硬件结构和工作原理

2.1 MCS-51 单片机的主要性能特点2.2 MCS-51 单片机内部结构 2.3 MCS-51 单片机的引脚功能 2.4 MCS-51 单片机的存储器配制 2.5 时钟电路 , 复位电路和 CPU 时序 2.6 并行 I/O 口

Page 2: 第二章  MCS-51 单片机的硬件结构和工作原理

1. 教学内容 : MCS-51 单片机的内部结构及其特性 ( 片内结构、引脚功能及片外

总线结构、存储器组织及扩展、 I/O 结构、中断、时钟和复位电路。

2. 教学重难点 MCS-51 单片机的引脚功能、存储器组织及扩展、 I/O 结构、中断 3. 课时 8 4. 作业 习题 2 ,3 ,4,7

Page 3: 第二章  MCS-51 单片机的硬件结构和工作原理

2.1 MCS-51 单片机主要性能特点 MCS-51 为 8 位高档单片机系列 , 采用 HMOS 工艺 , 提高芯

片集成度 , 性能有很好 改善。 特点: 1 )扩大了 ROM 和 RAM 的容量 2 )具有布尔代数运算能力 3 )具有 32 个双向可被独立寻址的 I/O 口 4 )具有 5-6 个中断源,可分为两个中断优先级 5 )具有丰富的指令系统 6 )具有全双工传输信号 UART 的能力 7 )片内具有时钟振荡电路 8 )可采用一次性烧写的内含 ROM 或可重复烧写

的 EPROM

Page 4: 第二章  MCS-51 单片机的硬件结构和工作原理

2.2 MCS-51 单片机内部结构

表 1.1

Page 5: 第二章  MCS-51 单片机的硬件结构和工作原理

2.2.1 MCS-51 单片机的内部结构

0INT

时钟电路

CPU

SFR 和 RAM

并行端口

ROM

串行端口

定时器 / 计数器

中断系统

系统总线

时钟源

P0 P1P2 P3 TXD RXD 1INT

T0 T1

8051 内部结构图

计数脉冲输入

Page 6: 第二章  MCS-51 单片机的硬件结构和工作原理

2.2.2 MCS-51 单片机的内部结构介绍

1.CPU( 中央处理器 ) 完成单片机的运算和控制能力

运算器

控制器

ALU 、布尔处理器、 ACC 、寄存器 B 、暂存器 TMP1 , TMP2 、 PSW 寄存器、十进制调整电路

定时控制逻辑、指令寄存器、译码器、信息传输控制部件

Page 7: 第二章  MCS-51 单片机的硬件结构和工作原理

2.2.2 MCS-51 单片机的内部结构介绍

2. 内部存储器

程序存储器 ROM

数据存储器 RAM

存放程序指令 , 常数和数据表格 ( 只读 )

存放数据 , 分为内部和外部数据存储器 ( 随机 )

单片机内有 256 个 RAM 单元 , 作为寄存器被用户使用的只有前 128 个单元 , 后 128 个被专用寄存器占用内部 RAM 指的是前 128 单元

Page 8: 第二章  MCS-51 单片机的硬件结构和工作原理

2.2.2 MCS-51 单片机的内部结构介绍

3. 定时与中断系统 MCS-51 单片机内有两个 16 位的定时器 / 计数

器:实现定时和计数,并将其结果作为查询和中断的控制凭据;

MCS-51 单片机内有 5 个中断源 (2 个中断优先级 )

2 个外部中断源 2 个定时器 / 计数器中断源 1 个串行口中断源

Page 9: 第二章  MCS-51 单片机的硬件结构和工作原理

2.2.2 MCS-51 单片机的内部结构介绍 4. 并行 I/O 口 4 个 8 位的并行 I/O 口 (P0 P1 P2 P

3 ) 实现数据并行输入输出

5. 串行 I/O 口 一个全双工的串行口 实现与外部的串行数据

传送 6. 时钟电路 为单片机产生时钟脉冲序列 , 协调和控制单片机

的工作 . MCS-51 单片机内部有时钟电路 ( 但是需外接石英晶体振荡器和微调电容 )

最高时钟频率为 12MHZ

Page 10: 第二章  MCS-51 单片机的硬件结构和工作原理

2.3 MCS-51 单片机的引脚定义及功能1. 单片机的引脚图

Page 11: 第二章  MCS-51 单片机的硬件结构和工作原理

2.3 MCS-51 单片机的引脚定义及功能2. 引脚说明:(1) P0 口 (32 脚 --39 脚 ) 有三种使用方法 1) 作为与外部传送数据的 8 位数据总线 (D0—D

7)

2) 作为扩展外部存储器时的低 8 位地址总线 (A0---A7)

3) 作为一般 I/O 口 , 需外接上拉电阻

Page 12: 第二章  MCS-51 单片机的硬件结构和工作原理

2.3 MCS-51 单片机的引脚定义及功能

(2) P1 口 (1 脚 --8 脚 ) 有两种使用方法 P1 口是用户专用 8 位准双向 I/O 口 , 具有通

用输入 / 输出功能 , 每一位都能独立地设定为输入或输出。 80C52 的 P1.0 和 P1.1 有特殊功能

1 引脚 P1.0/T2 定时器 / 计数器 T2 计数端输入 2 引脚 P1.1/T2 T2 的捕捉 / 重新加载的触发输

Page 13: 第二章  MCS-51 单片机的硬件结构和工作原理

2.3 MCS-51 单片机的引脚定义及功能

(3) P2 口 (21 脚 --28 脚 ) 有两种使用方法 1) 作为一般 I/O 口 , 不需外接上拉电阻 2) 作为扩展外部存储器时的高 8 位地址总线 (A8---A15) (4) P3 口 (10 脚 --17 脚 ) 有两种使用方法 1) 作为一般 I/O 口 , 不需外接上拉电阻 2) 具有特殊功能 见表 1-1

Page 14: 第二章  MCS-51 单片机的硬件结构和工作原理

2.3 MCS-51 单片机的引脚定义及功能

表 1.2

Page 15: 第二章  MCS-51 单片机的硬件结构和工作原理

2.3 MCS-51 单片机的引脚定义及功能

(5) Vcc ( 40 脚) 接 +5V 电源 (6) Vss 接地 (7) XTAL1(19 脚 ) XTAL2(18 脚 ) 接外部石

英晶振的引 脚 , 也可引入外部时钟 HMOS 型 XTAL1 接地 XTAL2 接外

部时钟输入 端 CHMOS 型 XTAL1 接时钟输入端 XTAL2 悬

空 机器周期 =12/ 石英晶振频率 (8) RST/VPD (9 脚 ) 复位信号引脚 该引脚出现 2 个机器周期的高电平才可靠

Page 16: 第二章  MCS-51 单片机的硬件结构和工作原理

2.3 MCS-51 单片机的引脚定义及功能 (9) ALE/PROG ( 30 脚) 地址锁存允许信号 1 )外接存储器时, ALE 的输出用于锁存地址的低

8 位,一般接锁存器的 EN 端 2 )没有外接存储器时, ALE 端可输出脉冲信号,

频率为石英振荡频率的 1/6 ,可为外部芯片提供输出的时钟,或用于定时

3 )烧写 EPROM 时,作烧写时钟的输入端

( 10 ) ( 29 脚) 外部程序存储器的读选通信号

读外部 ROM 时,低电平有效,每个机器周期动作两次,与外部 ROM 的 OE 脚相连

读外部 RAM 时,无输出

PSEN

Page 17: 第二章  MCS-51 单片机的硬件结构和工作原理

2.3 MCS-51 单片机的引脚定义及功能 ( 11 )

EA

V PP

EA (31 脚) 访问程序存储器的控制信号

接低电平时,对 ROM 的读操作限定在外部程序存储器

EA 接高电平时,对 ROM 的读操作从内部开始

8751 单片机烧写内部 EPROM 时,该脚输入 21V 的烧写电压

Page 18: 第二章  MCS-51 单片机的硬件结构和工作原理

2.4 存储器配置

MCS-51 单片机把程序存储器和数据存储器分开,具有各自的寻址系统和控制信号。

1. 内部程序存储器 (ROM) 存放程序和表格常数 8051 为 4KB 8052 为 8KB

2. 内部数据存储器 (RAM) 存放运算过程中的数据 8051/8031 为 128B 8052/8032 为 256B

3. 外部程序存储器 (ROM) 存放程序 最大可扩展为 64KB (包括内部 ROM)

4. 外部数据存储器 (RAM) 存放大量数据 最大可扩展为 64KB ( 不包括内部 RAM)

Page 19: 第二章  MCS-51 单片机的硬件结构和工作原理

2.4.1 内部数据存储器及专用寄存器

1. 内部数据存储器 片内 RAM 为 256 字节 , 地址范围为 00H~FFH, 分为

两大部分 : 低 128 字节( 00H~7FH )为真正的 RAM区 ; 高 128 字节( 80H~FFH )为特殊功能寄存器区 SFR 。

间接寻址

可直接寻址(SFR)

00H

80H7FH

FFH

80H

FFH

可直接 ( 间接 ) 寻址内部数据存储器空间分配

Page 20: 第二章  MCS-51 单片机的硬件结构和工作原理

2.4.1 内部数据存储器及专用寄存器在低 128 字节 RAM 中 , 00H~1FH共 32 单元是 4 个通用工作寄存器区。每

一区有 8 个通用寄存器 R0~R7 。

用户 RAM 区

00H

07H

20H1FH

2FH30H

7FH

R7

R6

R5

R4

R3

R2

R1

R0

寄存器 0 组

寄存器 0,1,2,3 组

位寻址区

内部数据存储器的结构

Page 21: 第二章  MCS-51 单片机的硬件结构和工作原理

2.4.1 内部数据存储器及专用寄存器

(1) 用户 RAM区 内部数据存储器的 30H-7FH

可在编程时暂存数据 , 不作规定 .(堆栈区也设在该区 )

例 : MOV 30H , A ; 将累加器 A 中的内容送入 30H

(2) 位寻址区 内部数据存储器的 20H-2FH

16 个单元 ,128 位 , 每位都有相应位地址 , 位地址为 00H-7FH

不作位寻址时 , 可作为一般 RAM 单元字节寻址位地址和字节地址都为 00H-7FH 注意区分位与字节地址

Page 22: 第二章  MCS-51 单片机的硬件结构和工作原理

2.4.1 内部数据存储器及专用寄存器

表 1.4

Page 23: 第二章  MCS-51 单片机的硬件结构和工作原理

2.4.1 内部数据存储器及专用寄存器

(3) 寄存器组 内部数据存储器的 00H-1FH(32 单元 ) 4 个通用工作寄存器组 , 每组有 8 个寄存器 R0—R7 存放操作数和中间结果 (由 PSW 中的 RS1 和 RS2 位来控制使用哪一组 )

RS1 RS0 当前寄存器组 R0-R7 的地址0 0 0 00H-07H

0 1 1 08H-0FH

1 0 2 10H-17H

1 1 3 18H-1FH

表 1.5

Page 24: 第二章  MCS-51 单片机的硬件结构和工作原理

2.4.1 内部数据存储器及专用寄存器

寄存器与 RAM 地址对照表

Page 25: 第二章  MCS-51 单片机的硬件结构和工作原理

2.4.1 内部数据存储器及专用寄存器

2. 专用寄存器 ( 特殊功能寄存器 )80H-FFH

用来设置片内电路的运行方式 ,记录电路的运行状态 , 并 表明有关标志

51 系列有 21 个 52 系列有 26 个 , 只占了空间的一小部分但是其他空间还是不能进行读 , 写操作 .

其中有 11 个不仅可进行字节寻址 ,还能进行位寻址 (字节地址末位为 0 或 8)

Page 26: 第二章  MCS-51 单片机的硬件结构和工作原理

表 1.7

Page 27: 第二章  MCS-51 单片机的硬件结构和工作原理

寄存器符号 字节地址

B F0H

位地址

F0F1F2F3F4F5F6F7

B7 B6 B5 B4 B3 B2 B1 B0

A E0H E7 E6 E5 E4 E3 E2 E1 E0

A7 A6 A5 A4 A3 A2 A1 A0

PSW D7 D6 D5 D4 D3 D2 D1 D0

CY AC F0 RS1 RS0 OV P

D0H

Page 28: 第二章  MCS-51 单片机的硬件结构和工作原理

2.4.1 内部数据存储器及专用寄存器

Page 29: 第二章  MCS-51 单片机的硬件结构和工作原理

2.4.1 内部数据存储器及专用寄存器

Page 30: 第二章  MCS-51 单片机的硬件结构和工作原理

2.4.1 内部数据存储器及专用寄存器

Page 31: 第二章  MCS-51 单片机的硬件结构和工作原理

2.4.1 内部数据存储器及专用寄存器

(1)B 寄存器 , 常用于乘除法运算 乘法时 : B 是乘数 , 结果高 8 位存在 B 中 除法时 : B 放除数 , 结果的余数放在 B 中 (2)累加器 ACC, 可以按位寻址 , 可存放运算结果和操作数 (3) 程序状态字 PSW

存放程序运行的状态信息 , 可按位寻址 , 其中 PSW.1 为保留位

位 7 6 5 4 3 2 1 0

PSW CY AC F0 RS1 RS0 OV P

Page 32: 第二章  MCS-51 单片机的硬件结构和工作原理

2.4.1 内部数据存储器及专用寄存器

(4) 定时器 2 寄存器 (5)IP 寄存器 (6)IE 寄存器 (7)SCON 寄存器 (8)SBUF 寄存器 (9) 定时器 0 和定时器 1 寄存器 (10)P0-P3 端口寄存器 (11)堆栈指针寄存器 (12) 数据指针 (DPTR) 寄存器

Page 33: 第二章  MCS-51 单片机的硬件结构和工作原理

2.4.1 内部数据存储器及专用寄存器 3. 程序计数器 (PC)

PC 中存储的是将要执行的指令地址 , 是一个 16 位计数器 ,可寻址范围是 0000H~0FFFFH共 64KB

PC 没有地址 , 是不能寻址的 , 程序中的每条指令存放在ROM区的某一单元 , 并都有自己的存放地址。 CPU 要执行哪条指令时 , 就把该条指令所在的单元的地址送上地址总线。 在顺序执行程序中 , 当 PC 的内容被送到地址总线后 , 会自动加 1, 即 (PC)← (PC)+1, 又指向 CPU 下一条要执行的指令地址在转移 , 调用和返回的指令中 ,PC的值会改变

PC 是一个特殊的寄存器 , 不占内部 RAM 单元 ,在物理上是独立的 .

Page 34: 第二章  MCS-51 单片机的硬件结构和工作原理

2.4.1 外部数据存储器 外部数据存储器一般由静态 RAM 构成,其容量大小由用户根据需

要而定 , 最大可扩展到 64 KB RAM , 地址是 0000H~0FFFFH 。外

部 RAM 和扩展的 I/O 接口是统一编址的 , 所有的外扩 I/O 口都要

占用 64 KB 中的地址单元。

1) CPU 通过MOVX 指令访问外部数据存储器 , 用间接寻址方式 , R0 、

R1 和 DPTR 都可作间接寄存器 ,当用 RO 或 R1 作寄存器间接寻址

时,由 P2 端口提供高 8 位地址, R0 或 R1 提供低 8 位地址。

2) 单片机扩展外部数据存储器时 ,利用 P0 口加锁存器作为 低 8 位地址线 ,P2 口作为高 8 位地址线 (0---64KB)( 见图 )

Page 35: 第二章  MCS-51 单片机的硬件结构和工作原理

2.4 .1 外部数据存储器

例 1: MOVX A,@DPTR ; 读外部 RAM 中的数据

例 2 : MOV P2 , #20H ;立即数 20H

MOV R0 , #30H ;立即数 30H

P2

R0

MOVX @R0, A ; A 外部数据 RAM 中 2030H 单元

Page 36: 第二章  MCS-51 单片机的硬件结构和工作原理
Page 37: 第二章  MCS-51 单片机的硬件结构和工作原理

2.4.2 程序存储器 对于 8051来说 , 程序存储器( ROM )的内部地址为 0000H~0

FFFH, 共 4 KB; 外部地址为 1000H~FFFFH, 共 60 KB 。 当程序计数器由内部 0FFFH执行到外部 1000H 时 , 会自动跳转。

对于 8751 来说 , 内部有 4 KB 的 EPROM, 将它作为内部程序存储器

8031 内部无程序存储器 , 必须外接程序存储器

EA=1 时 , 单片机读内部 ROM,若超出范围 ,CPU自动读外部 ROM

EA=0 时 ,CPU 完全读取外部 ROM

当读取外部 ROM 时 ,PSEN 变为低电平

当读取内部 ROM 时 ,PSEN 保持为高电平

Page 38: 第二章  MCS-51 单片机的硬件结构和工作原理

2.5 单片机的复位电路与时钟电路 2.5.1 单片机的复位电路 单片机工作时 , 上电前要复位 , 发生故障后要复位 复位必须要准确可靠1. 复位条件 时钟电路开始工作后 ,必须在单片机的 RESET 端 (9 脚 )至少维持两个机器周期以上的高电平 (PC=0000H, 程序从0000H开始执行 )

若RESET 端持续为高电平 , 单片机处于循环复位状态例 :若时钟周期为 12MHZ, 机器周期为 12/12MHZ=1

s单片机的 RESET 端需维持 2 s 以上的时间的高电平就能

进入复位状态

Page 39: 第二章  MCS-51 单片机的硬件结构和工作原理

2.5 单片机的复位电路与时钟电路

2. 复位后的状态 复位使单片机进入初始化状态 , 片内低 128

B 的内容不变 ,SFR 的值被初始化 . 见表 1.3 注意 :1) 复位期间 ,ALE

PSEN和 为高电平 ( 不取址 )

2)SP 的值在初始化中 , 要重新设定 , 一般置为用户 RAM区的地址3) P0-P3 的值为 0FFH, 将这些端口作为输入端口做准备4) 其余各寄存器在使用时要先赋值

Page 40: 第二章  MCS-51 单片机的硬件结构和工作原理

2.5 单片机的复位电路与时钟电路

3. 复位电路 有两种 : 上电复位电路和手动复位电路上电复位电路 : 通过接通电源的一瞬间所产生的一个脉冲来

提 供复位所需的高电平手动复位电路:按 RESET键时,电路接通,复位端产生一

个高电平

Page 41: 第二章  MCS-51 单片机的硬件结构和工作原理

寄存器 寄存器复位后内容

ACC 00000000

B 00000000

SP 00000111

PSW 00000000

IP × × ×00000

IE 0 × ×00000

TMOD 00000000

TCON 00000000

P0/P1/P2/P3 11111111

Page 42: 第二章  MCS-51 单片机的硬件结构和工作原理

2.5.2 单片机的时钟电路 单片机的各项工作都是在时钟信号的控制下协调进行的 时钟电路为单片机提供一个时钟信号 , 有内部时钟方式

和外部时钟方式 1) 工作于内部时钟方式时 ,XTAL1 和 XTAL2之间跨接晶

振和两个微调电容 , 与内部振荡电路构成稳定的自激振荡器 ,XTAL2 引脚上输出一个 3V左右的正弦波

2) 工作于外部时钟方式时 ,注意引脚的接法

振荡信号进入内部时钟电路后 , 要对其进行二分频 , 并向 CPU 提供两个时钟信号 P1 和 P2

Page 43: 第二章  MCS-51 单片机的硬件结构和工作原理

2.5.3 单片机的 CPU 时序所谓时序就是 CPU 总线信号在时间上的顺序关系。 CPU 控制器实际上是复杂的同步时序电路,所有的工作都是在时钟信号的控制下进行的。每执行一条指令, CPU 控制器都要发出一系列特定的控制信号,这些控制信号在时间上的相互关系就是 CPU 的时序。

一个单片机系统要想正常工作,除了要做到电平匹配、功率匹配外,还要做到时序匹配 .

Page 44: 第二章  MCS-51 单片机的硬件结构和工作原理

2.5.3 单片机的 CPU 时序 1. 振荡周期 : 也称节拍 P, 是指为单片机提供时钟脉冲信

号的振荡源的周期。 2. 时钟周期 :也称状态周期 S, 每个状态周期为振荡周期

的 2 倍 , 是振荡周期经二分频后得到的。前半个周期为P1, 用于完成算术和逻辑运算 ; 后半个周期为 P2, 完成传送指令

3. 机器周期 : 一个机器周期包含 6 个状态周期 S1~S6, 也就是 12 个振荡周期。 在一个机器周期内 , CPU 可以完成一个独立的操作。

4. 指令周期 : 它是指 CPU 完成一条操作所需的全部时间。

每条指令执行时间都是有一个或几个机器周期组成。 MCS - 51 系统中 , 有单周期指令、双周期指令和四周期指令 ,如下图

Page 45: 第二章  MCS-51 单片机的硬件结构和工作原理
Page 46: 第二章  MCS-51 单片机的硬件结构和工作原理

2.6 并行 I/O 口 MCS-51 共有 32条并行双向 I/O 口线,分成 4 个 I/O 端口: P0 P1 P2 P3

每个端口都由数据输入缓冲器、数据输出驱动和锁存器组成1. P0 口

Page 47: 第二章  MCS-51 单片机的硬件结构和工作原理

2.6 并行 I/O 口 P0 口的特点 :1) 可进行位寻址 , 地址为 80H2) 既可作为地址 / 数据总线使用 ,又能作通用 I/O 口 作为地址 / 数据总线时,不需外接上拉电阻,地址和数据

信号可准确从引脚输出,是真正的双向口3) 为双向 I/O 口 , 输出漏极开路 , 需接上拉电阻(与门 被封锁, VT2漏极开路, P0.x 输出始终为高电平,需加电阻对 Vcc 分压)

可驱动 8 个 TTL 电路4 )作输入口时,应区分读引脚和读存储器 读引脚时,先向锁存器写 1 凡属于读—修改—写方式的指令从锁存器读入,其它指

令从引脚读

Page 48: 第二章  MCS-51 单片机的硬件结构和工作原理

2.6 并行 I/O 口 2. P1 、 P2 和 P3 口 P1 、 P2 和 P3 口为准双向口 , 在内部差别不大 , 但使

用功能有所不同。 P1 口是用户专用 8 位准双向 I/O 口 , 具有通用输入 /

输出功能 , 每一位都能独立地设定为输入或输出。作输出口时,不需接上拉电阻,当由输出方式变为输入方式时 , 该位的锁存器必须写入“ 1”, 然后才能进入输入操作。

P2 口是 8 位准双向 I/O 口。外接 I/O 设备时 , 可作为扩展系统的地址总线 , 输出高 8 位地址 , 与 P0 口一起组成 16 位地址总线。作输出口时,不需接上拉电阻,当由输出方式变为输入方式时 , 该位的锁存器必须写入“ 1”, 然后才能进入输入操作。

对于 8031 而言 , P2 口一般只作为地址总线使用 , 而不作为 I/O 线直接与外部设备相连。

Page 49: 第二章  MCS-51 单片机的硬件结构和工作原理

2.6 并行 I/O 口

说明: 1. 各个端口引脚在作输入口之前,都要先向对应的口寄

存器中写“ 1” ,不然不能作输入口用。 2. P0 口内部没有上拉电阻(其他都有),所以作通用 IO

口用时为“开漏”输出,必须外加上拉电阻。在作总线使用时不需要加上拉。其他的口可加可不加。 (上拉电阻的阻值确定, 5.1K 或者 4.7K 都可以)。

3. P3 口作第二功能使用时,相应的口锁存器必须为 “1” 状态。 4. 如果使用了外部存储器,不要再写 P0 口。