- 40
- 0
- 约1.18万字
- 约 75页
- 2018-08-06 发布于湖北
- 举报
7.1.1 I/O口扩展的原因 1.I/O信息的组成 (1)数据信息 CPU与外设交换的基本信息就是数据信息,数据的传送可采用并行传送(n位同时传送)和串行传送(一位一位地传送)两种形式。(2)状态信息 状态信息是指在CPU与外设之间交换数据时的联络信息。CPU通过对外设状态信息的读取,可知其工作状态。了解状态信息是CPU与I/O设备正确进行数据交换的重要条件。(3)控制信息 控制信息指CPU发给外设命令信息,CPU通过发送控制信息控制外设的工作。 (3)中断方式:当外设和计算机进行数据交换时,外设向单片机发出中断请求。单片机接到中断请求后,就作出响应,暂停正在执行的程序,而转去为设备的数据输入/输出服务。当服务完成后,程序返回,单片机再继续执行被中断的程序。 (4)DMA方式:DMA(Direct Memory Access,直接内存存取) 中断方式虽提高了CPU的效率,但仍然是通过CPU执行程序来实现数据传送。其缺点是大量的数据在磁盘与内存间交换需大量的时间,高速I/O设备时或成组数据交换时,显得速度太慢。DMA方式就是在外设与内存间直接传送数据,DMA的速度取决于内存的工作速度。 输入程序段: (1)汇编语言 MOV DPTR,#0FEFFH ;I/O地址→DPTR MOVX A,@DPTR;RD*为低,74LS244口,数据读入内部RAM (2)C语言 #define PORT XBYTE[0xFEFF]; A=PORT; 【例题7-1】编写程序把按钮开关状态通过图7-2中的发光二极管显示出来。 (1)汇编语言 DDIS: MOV DPTR,#0FEFFH ;输入口地址→DPTR LP: MOVX A,@DPTR ;按钮开关状态读入A中 MOVX @DPTR,A ;A中数据送输出口 SJMP LP ;反复连续执行 (2)C语言 #define PORT XBYTE[0xFEFF]; while(1) { A=PORT; PORT=A; } 表7-1 8255A端口工作状态选择 【例题7-2】 如下图是在PROTEUS软件中绘制的用8051扩展1片8255的电路,8255的PA口接输出设备(八个发光二极管)、PB口接输入设备(八个开关)PC口不用,均采用方式0,将8255 B口输入的开关置的数据从A口输出,要求开关合上的对应LED亮,编出相关汇编语言和C语言程序段。 分析:由图7-8可知,P2.7=0才选中该片8255,A1 A0(P2.1 P2.0)为00 01对应PA口和PB口、为11时对应控制口。其余地址写1,A口、B口、控制口地址分别为7CFFH、 7DFFH、7FFFH。设定PA口方式0输出, B口方式0输入,控制=82H,编程如下: (1)汇编语言 MOV DPTR, #7FFFH ;DPTR指向控制口 MOV A, #82H MOVX @DPTR, A ; 控制字写入控制口 MOV DPTR, #7DFFH ;DPTR指向PB口 MOVX A, @DPTR ;从PB口输入数据 CPL A ;开关合上的对应LED亮 DEC DPL ;DPTR指向PA口 MOVX @DPTR, A ;从PA口输出 SJMP $ (2)C语言 #includeabsacc.h #includereg51.h #define COM8255 XBYTE[0x7FFF] #define PA8255 XBYTE[0x7CFF] #define PB8255 XBYTE[0x7DFF] #define PC8255 XBYTE[0x7EFF] #define uchar unsigned char main( ) { char a; COM8255=0x82; /* 写方式控制*/ a=PB8255; /*B口输入*/ PA8255=~a; /*A口输出*/ } 【例题7-3】 在8255的PC7引脚接一个LED,用置位/复位控制字使其闪烁。 8255和单片机的连接同例7-2。 由图可知,8255的控制口地为7FFFH (1)汇编语言 MOV DPTR,#7FFFH ;指向控制口 MOV A,#80H ;先写方式控制字 MOVX @DPTR,A MOV A,#7FH ;使PC7位置位 PNOT:MOVX @DPTR,A ACALL DAY XRL
原创力文档

文档评论(0)