140 likes | 286 Views
第八章 I/O 口的扩展 8.1 MCS-51 片上的 I/O 口和用途 片上共有四个口 P0 、 P1 、 P2 、 P3 ,可用作基本的 I/O 口使用,除 P1 口外这些口都是多功能的。 P0 口:用作数据总线和低 8 位地址总线。 P2 口:用作高 8 位地址总线。 P3 口:第二功能: P3.0 : RxD P3.4 : T0 P3.1 : TxD P3.5 : T1
E N D
第八章 I/O口的扩展 8.1 MCS-51片上的I/O口和用途 片上共有四个口P0、P1、P2、P3,可用作基本的I/O口使用,除 P1口外这些口都是多功能的。 P0口:用作数据总线和低8位地址总线。 P2口:用作高8位地址总线。 P3口:第二功能: P3.0: RxD P3.4: T0 P3.1: TxD P3.5: T1 P3.2: /INT0 P3.6: /WR P3.3: /INT1 P3.7: /RD
因此,在较复杂的系统中,I/O口就不够,必须进行扩展,Intel公司的许多外围电路都可作为51的扩展口,常见的有:因此,在较复杂的系统中,I/O口就不够,必须进行扩展,Intel公司的许多外围电路都可作为51的扩展口,常见的有: 8155:可编程的RAM/IO定时扩展口。 8255:可编程的并行扩展口。 8279:可编程的键盘/显示接口。 8214:可编程的中断管理接口。 8251:可编程的串行接口。 74LS373、74LS273等。
a=Y0+WD b=Y1+WD c=Y2+RD WD 8.1用74LS373作为扩展接口 1、电路 2、口地址的确定 3、输出控制红绿灯 4、输出显示数码管 MOVX @DPTR, A ALE , 地址 , 74LS138
2、口地址的确定 A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 P2.7 P2.6 P2.5 P2.4 P2.0P0.7 P0.0 0 0 0 0 0 0 0 0000H 1FFFH 0 0 0 1 1 1 1
3、输出控制红绿灯 口地址:0000H
4、输出显示数码管 0000H 2000H
h g f e d c b a 显示码 0 1 1 0 0 0 0 0 0 C0H 1 1 1 1 1 1 0 0 1 F9H 2 1 0 1 0 0 1 0 0 A8H 3 1 0 1 1 0 0 0 0 B0H 4 5 6 7 8 9 A B C D E F
5、开关量输入 MOV DPRT, #4000H LOOP:MOVX A, @DPTR CPL A JZ LOOP JB ACC.0, K0 SJMP LOOP K0: 某键按下时,相应的位为“0”,反之为“1” 端口地址为:4000H
MOV DPRT, #4000H LOOP:MOVX A, @DPTR CPL A JZ LOOP LCALL DELAY10 MOVX A, @DPTR CPL A JZ LOOP JB ACC.0, K0 JB ACC.1, K1 JB ACC.2, K2 JB ACC.3, K3 JB ACC.4, K4 JB ACC.5, K5 JB ACC.6, K6 JB ACC.7, K7 SJMP LOOP K0: K1: K2: K3: K4: K5: K6: K7:
6、综合应用 要求:按下K0:显示0; K1:显示1; K2:显示2; K3:显示3;
K0: MOV DPTR, #0000H MOV A, #0C0H MOVX @DPTR, A SJMP LOOP K1: MOV DPTR, #0000H MOV A, #0F9H MOVX @DPTR, A SJMP LOOP K2: MOV DPTR, #0000H MOV A, #0A8H MOVX @DPTR, A SJMP LOOP K3: MOV DPTR, #0000H MOV A, #0B0H MOVX @DPTR, A SJMP LOOP LOOP:MOV P1, #0FH MOV A, P1 CPL A ANL A, #0FH JZ LOOP LCALL DELAY10 MOV P1, #0FH MOV A, P1 CPL A ANL A, #0FH JZ LOOP JB ACC.0, K0 JB ACC.1, K1 JB ACC.2, K2 JB ACC.3, K3 SJMP LOOP
8.3 动态显示器接口 指一位一位地轮流点亮各位显示器(扫描), 对于每一位显示器来说,每隔一段时间点亮一次 1、电路 2、显示绶冲区 灯位控制口:4000H 字段控制口:0000H
3、程序设计 DISPLAY:MOV R0, #79H MOV R3, #20H MOV A, R3 DISP0: MOV DPTR, #4000H MOVX @DPTR, A MOV DPTR, #0000H MOV A, @R0 ADD A, #0EH MOVC A, @A+PC MOVX @DPTR, A ACALL DLY INC R0 MOV A, R3 JB ACC.0, DISP1 RR A MOV R3, A AJMP DISP0 DISP1: RET DSEG: DB C0H, 0F9H, 0A4H, 0B0H, 99H DSEG1: DB 14H, 04H, 0F8H, 80H, 90H DLY: MOV R7, #02H DLY1: MOV R6, #0FFH DLY2: DJNZ R6, DLY2 DJNZ R7, DLY1 RET