250 likes | 393 Views
第三讲 并行接口的扩展. 并行口的简单扩展. PA 口, 8 位. PB 口, 8 位. PC 口, 6 位. 一、 可编程并行接口芯片 8155 的扩展. ( 1 ) 8155 的结构及引脚. 8155 的结构. 256 字节 RAM. 8155. 三个 可编程 并行口. 14 位二进制 减法计数器. 8155 芯片的内部结构. IO/ M. 口 A. 256B 静态 RAM. A. 接外设. PA0~PA7. AD0~AD7. 接单片机. 接外设. CE ALE RD WR RESET. B. 口 B. PB0~PB7.
E N D
第三讲 并行接口的扩展 模块四:单片机接口技术——并行口技术
并行口的简单扩展 模块四:单片机接口技术——并行口技术
PA口,8位 PB口,8位 PC口,6位 一、 可编程并行接口芯片8155的扩展 (1)8155的结构及引脚 8155的结构 256字节RAM 8155 三个可编程并行口 14位二进制减法计数器 模块四:单片机接口技术——并行口技术
8155芯片的内部结构 IO/ M 口A 256B 静态 RAM A 接外设 PA0~PA7 AD0~AD7 接单片机 接外设 CE ALE RD WR RESET B 口B PB0~PB7 口C 接外设 C 定时器 定时器输入 PC0~PC5 定时器输出 模块四:单片机接口技术——并行口技术
PB0-PB7 PA0-PA7 AD0-AD7 PC0-PC5 C口端口线 B口端口线 A口端口线 三态地址/数据线 IO/ M 端口/存储器选择 RD CE WR TIMER OUT TIMER IN 读 ALE 定时器输出 定时器输入 写 地址锁存允许 选片 8155 8155引脚功能 PC3 PC4 PC5 IO/ M CE RD WR ALE AD0 AD1 AD2 AD3 AD4 AD5 AD6 AD7 Vss Vcc PC2 PC1 PC0 PB7 PB6 PB5 PB4 PB3 PB2 PB1 PB0 PA7 PA6 PA5 PA4 PA3 PA2 PA1 PA0 TIMER IN RESET TIMER OUT 模块四:单片机接口技术——并行口技术
PA0-PA7 端口A的I/O线(8位,接外设) PB0-PB7 端口B的I/O线(8位,接外设) PC0-PC5 端口C的I/O线(6位,接外设) AD0-AD7 三态地址/数据复用线(8位,一般接单片机P0口,CPU与8155之间的地址、数据、命令、状态等信号都通过它来传送) 端口/存储器 选择控制 “0”选择片内RAM “1”选择片内I/O口 TIMER IN 8155片内定时器/计数器的计数脉冲输入引脚 TIMER OUT 8155片内定时器/计数器的计满回零输出引脚 分别是对8155片内的RAM或I/O口的的读、写控制信号 ALE CE 地址锁存引脚 选片 RESET 复位引脚 IO/ M RD、WR 模块四:单片机接口技术——并行口技术 CE CE
二、8155的工作原理 (1)8155的RAM和I/O口地址 RAM地址----当IO/ M 为低电平时 此时AD0-AD7上得到的地址值是指8155的某一RAM单元的地址,地址范围是 0000 0000--1111 1111 分别指向8155 RAM 的256个存储单元。 I/O口地址----当IO/ M 为高电平时 此时AD0-AD7 (仅用到低三位AD2、AD1、AD0)上得到的地址值是指8155的某一I/O口的地址,具体端口地址分配是:(见下表) 模块四:单片机接口技术——并行口技术 CE
AD7 AD6 AD5 AD4 AD3 AD2 AD1 AD0 I/O端口 ╳ ╳ ╳ ╳ ╳ 0 0 0 命令/状态口 ╳ ╳ ╳ ╳ ╳ 0 0 1 A口 ╳ ╳ ╳ ╳ ╳ 0 1 0 B口 ╳ ╳ ╳ ╳ ╳ 0 1 1 C口 ╳ ╳ ╳ ╳ ╳ 1 0 0 计数器低8位 ╳ ╳ ╳ ╳ ╳ 1 0 1 计数器高6位 8155的RAM和I/O口地址分配 模块四:单片机接口技术——并行口技术
(2)8155的使用(分二种情况:片内RAM的使用 各端口的使用) 8155内RAM的使用: 与一般外部数据存储器的使用基本一样,唯一区别是事先要使IO/ M 为低电平。 8155各端口(包括定时器)的使用: A、B、C各端口可工作于不同的工作方式,使用前要进行初始化(写命令字到命令口)。 模块四:单片机接口技术——并行口技术
0—输入 PB、PA—A口、B口数据传送方向 1—输出 0—禁止 IEA、IEB—A、B口中断允许控制 1—允许 8155命令字含义 TM2 TM1 IEB IEA PC2 PC1 PB PA PC2、PC1—C口数据传送方向及AB口工作方式 00—C口输入,A、B口基本I/O方式 11—C口输出,A、B口基本I/O方式 01—PC3-PC5输出,A口选通方式,B口基本I/O方式 10—A、B口选通方式 TM1、TM2—定时器/计数器控制 10 记满回零停止计数 11 启动 00 空操作 01 停止定时器 模块四:单片机接口技术——并行口技术
TIMER INTEB BFB INTRB INTEA BFA INTRA • INTRX:中断请求标志。INTRX =1,表示A或B口有中断请求;INTRX=0,表示A或B口无中断请求。 • BFX:口缓冲器空/满标志。BFX=1,表示口缓冲器已装满数据,可由外设或单片机取走;BFX=0,表示口缓冲器为空,可以接受外设或单片机发送数据。 • INTEX:口中断允许/禁止标志。INTEX=1,表示允许口中断;INTEX=0,表示禁止口中断。 • TIMER:计数器计满标志。 TIMER=1, 表示计数器的原计数初值已计满回零; TIMER=0, 表示计数器尚未计满。 8155状态字格式 模块四:单片机接口技术——并行口技术
8155定时器/计数器 8155内部有一个14位减法计数器,计数脉冲来自其引脚“TIMER IN”,使用定时器前要先装入“时间常数”----14位二进制数。其格式为: 高6位计数值 低8位计数值 定时器方式 • 00 单方波 • 01 连续方波 • 单脉冲 • 连续脉冲 M2 M1 模块四:单片机接口技术——并行口技术
3.扩展电路的连接举例----接口电路非常简单,基本上是相同信号对接。3.扩展电路的连接举例----接口电路非常简单,基本上是相同信号对接。 8031 8155 RESET RD WR ALE P2.0 P2.7 RESET RD WR ALE IO/M 口A PA0~PA7 CE 口B P0.0 P0.1 P0.2 P.03 P0.4 P0.5 P0.6 P0.7 AD0 AD1 AD2 AD3 AD4 AD5 AD6 AD7 PB0~PB7 口C PC0~PC5 模块四:单片机接口技术——并行口技术
三.8051单片机与8155的接口及应用 模块四:单片机接口技术——并行口技术
程序: ORG 0000H AJMP MAIN ORG 0030H MAIN:MOV DPTR,#7F00H ;指向命令字端口 MOV A,#02H ;A口为输入,B口、C口为输出 MOVX @DPTR,A ;送命令字 MOV DPTR,#7F01H ;指向A口地址 MOVX A,@DPTR ;读入A口的数据 INC DPTR ;指向B口 MOVX @DPTR,A ;数据送入B口 AJMP MAIN END 模块四:单片机接口技术——并行口技术
【例1】A、 B口基本输入方式,计数器方波发生器,对80C31输入脉冲进行24分频(但需要注意8155的计数最高频率约为4MHZ),初始化程序: START:MOV DPTR,#7F04H ;计数寄存器低8位 MOV A,#18H ;计数器初值#18H(24D) MOVX @DPTR,A ;计数器寄存器低8位赋值 INC DPTR ;指向计数器寄存器高6位及方式位 MOV A,#40H ;计数器为连续方波方式 MOVX @DPTR,A ;计数寄存器高6位赋值 MOV DPTR,#7F00H ;命令寄存器 MOV A,#0C2H ;设命令字 MOVX @DPTR,A ;送命令字 模块四:单片机接口技术——并行口技术
PA7 PA6 . . . . . PA0 PC0 PC1 PC2 PC3 CE P2.7 IO/M P2.0 WR WR RD RD +5V ALE ALE 5.1KΩ╳4 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 P0 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 8031 8155 【例2】程序控制扫描方式—以8155扩展I/O口组成的行列式键盘为例 8155 PA口地址7F01H PC口地址7F03H 8155扩展I/O口组成的行列式键盘 模块四:单片机接口技术——并行口技术
8155:PA口输出列扫描信号 PC口输入行状态信号 (1)判断有无键按下 PA口输出00H PC口输入行状态信号,若PC3~PC0≠1111,有键按下 (2)去抖动 延时5~10ms后再判断有无键按下 (3)再确认哪个键被按下及其键号 8155的PA口依次输出下列扫描字: PA7 PA6 PA5 PA4 PA3 PA2 PA1 PA0 1 1 1 1 1 1 1 0 FEH 1 1 1 1 1 1 0 1 FDH …… 0 1 1 1 1 1 1 1 7FH 模块四:单片机接口技术——并行口技术
8155的PC口输入行状态,可能为下列之一: PC5 PC4 PC3 PC2 PC1 PC0 ╳╳ 1 1 1 0 ╳EH ╳╳ 1 1 0 1 ╳DH ╳╳ 1 0 1 1 ╳BH ╳╳ 0 1 1 1 ╳7H 则每个键的键值(列行组合) FE ╳ E 、FD ╳ E 、 FB╳ E 、 F7╳ E 、EF ╳ E、DE ╳ E、BF ╳ E、 7F╳ E FE ╳ D 、FD ╳ D 、 FB╳ D 、 F7╳ D 、EF ╳ D、DE ╳ D、BF ╳ D、 7F╳ D FE ╳ B 、FD ╳ B 、 FB╳ B 、 F7╳ B 、EF ╳ B、DE ╳ B、BF ╳ B、 7F╳ B FE ╳ 7 、 FD ╳ 7 、 FB╳ 7 、 F7╳ 7、 EF ╳ 7、 DE ╳ 7、 BF ╳ 7、 7F╳ 7 每个键的键号(自己安排) N=行首键号+列号 模块四:单片机接口技术——并行口技术
(4)判断按键是否抬起(以防止重复进行键处理)(4)判断按键是否抬起(以防止重复进行键处理) 等待键释放后再进行进一步处理。 键扫描程序框图 模块四:单片机接口技术——并行口技术
ORG 1000H KEY1:ACALL KS1 ;调用判断有无键按下子程序 JNZ LK1 ;有键按下,转去抖动 AJMP KEY1 ;无键按下,返回 LK1:ACALL TM12S ;延时12ms ACALL KS1 ;再查有无键按下 JNZ LK2 ;确实有键按下,逐行扫描,确定具体键 AJMP KEY1 ;无键按下,返回 LK2:MOV R2,#0FEH ;首列扫描字送R2 MOV R4,#00H ;首列号R4 LK4:MOV DPTR,#7F01H ;首列扫描字送8155的PA口 MOV A,R2 ;第一列扫描 MOVX @DPTR,A ;使第i 列为0(R2中Di位为0) 模块四:单片机接口技术——并行口技术
INC DPTR INC DPTR ;指向8155的PC口 MOVX A,@DPTR ;读入行状态 JB ACC.0, LONE ;0行无键按下,转查1行 MOV A,#00H ;0行有键按下,行首键号#00H送A AJMP LKP ;求键号 LONE:JB ACC.1, LTWO ;1行无键按下,转查2行 MOV A,#08H ;1行有键按下,行首键号#08H送A AJMP LKP ;求键号 LTWO:JB ACC.2, LTHR ;2行无键按下,转查3行 MOV A,#10H ;2行有键按下,行首键号#10H送A AJMP LKP ;求键号 LTHR:JB ACC.3, NEXT ;3行无键按下,转查下一列 MOV A,#18H ;3行有键按下,行首键号#18H送A LKP: ADD A,R4 ;求键号=行首键号+列号 PUSH ACC ;键号入栈 模块四:单片机接口技术——并行口技术
LK3:ACALL KS1 ;等待键释放 JNZ LK3 ;未释放,继续等待 POP ACC ;已释放,键号送A RET NEXT:INC R4 ;指向下一列,列号加1 MOV A, R2 ;判断8列扫描完没有 JNB ACC.7,KND ;8列扫描完,返回 RL A ;没扫描完,置下一列扫描字 MOV R2, A ;扫描字送A AJMP LK4 ;继续下列扫描 KND:AJMP KEY1 ;8列扫描完,返回 模块四:单片机接口技术——并行口技术
KS1:MOV DPTR, #7F01H ;查有无键按下子程序 MOV A,#00H MOVX @DPTR,A ;8155 PA口输出全扫描字#00H INC DPTR INC DPTR ;指向8155的PC口 MOVX A,@DPTR ;读入行状态,若有键按下,则A≠0FFH CPL A ;改成正逻辑,若有键按下,则A≠00H ANL A ,#0FH ;屏蔽高四位 RET ;子程序返回,当有键按下时,AA≠00H T12sm:MOV R7, #18H ;12sm延时子程序 TM:MOV R6,#0FFH TM6:DJNZ R6, TM6 ;td=[1+(1+255*2+2)*24+2]*MC DJNZ R7,TM RET 模块四:单片机接口技术——并行口技术
【例3】综合例题—多芯片扩展(使用多个芯片来进行综合功能扩展。)【例3】综合例题—多芯片扩展(使用多个芯片来进行综合功能扩展。) P2.2--P2.0 8031 PSEN A0~A7 A8~A10 A0~A7 A8~A10 373 G 2716 OE 6116(2) 6116(1) WE WE P0 CS OE OE ALE D7~D0 D7~D0 CE D7~D0 CE WR RD ALE 8155 PA A B C G2A G2B G1 AD0~AD7 P2.3 P2.4 P2.5 P2.6 P2.7 Y2 RD PB WE Y1 CE PC Y0 +5V P1.0 IO/ M 模块四:单片机接口技术——并行口技术