EEPROM外部程序存储器实验
一、实验目的
1.掌握89C51单片机扩展外ROM的方法
2.了解EEPROM的使用方法
二、实验说明
MCS-51型单片机芯片中,8031片内无ROM,必须扩展外ROM;80C51片内虽有4KB掩膜ROM,但写入程序时需由生产商一次性输入,使用起来很不方便;89C51芯片内有4KB EEPROM,若片内ROM不够用,也需扩展片外ROM。
一、实验目的
1、了解8155芯片结构及接口方式
2、掌握8155输入、输出的编程方法
二、实验说明
1、本实验利用8155可编程并行口芯片,实现数据的输入、输出。实验中8155的PA口、PB口作为输出口。与8255比,8155具有更强的功能,因为它除能提供并行接口外还包括有256字节RAM存储器和14位定时器/计数器。8155具有三个可编程I/O口,其中PA、PB为八位口,PC口为6位口。PA口、PB口为通用的输入输出口,主要用于数据的I/O传送,他们都是数据口,因此只有输入输出两种工作方式。
2、了解实验用到的芯片引脚及功能:
8155是一种可编程多功能接口芯片,功能丰富,使用方便,特别适合于扩展少量RAM和定时器/计数器的场合。其部
分引脚功能如下:
(1) AD0~AD7——地址/数据总线,双向三态。
1)8155有256字节静态RAM,每一字节均有相应地址,
输入输出数据均通过AD0~AD7口传送。
2)8155内部有6个寄存器:A口,B口,C口,命令状
态寄存器,定时/计数器低8位,定时/计数器高6位加2位
输出信号形式,6个寄存器有各自相应的地址。地址及写入或
读出的数据均通过AD0~AD7传送。
3)AD0~AD7传送数据的方向由RD,WR信号控制。
(2) CE——片选信号,输入,低电平有效。
(3) WR——写信号,输入,低电平有效。
(4) RD——读信号,输入,低电平有效。
(5) PA0~PA7——A口8位通用I/O线。
(6) PB0~PB7——B口8位通用I/O线。
(7) PC0~PC5——C口6位I/O线既可作通用I/O口,又可作A口和B口工作于选通方式下的控制信号。
(8) IO/M——I/O与RAM选择信号。8155内部I/O口与RAM是分开编址的,因此要使用控制信号进行区分。IO/M=0,对RAM进行读写;IO/M=1,对I/O进行和计数器进行读写。
3、本实验8155的端口地址由单片机的P0口和P2.7以及P2.0决定。控制口的地址为7F00H;PA口的地址为7F01H;PB口的地址为7F02H。
三、实验内容及步骤
本实验分两种情况来进行:(一) PA口作为输出口。 (二) PA口作为输出口,PB口作为输入口。
(一)PA口作为输出口,接八位逻辑电平显示,程序功能使发光二极管单只从右到左轮流循环点亮。
1、单片机最小应用系统的 P0口接8155的D0~D7口,8155的PA0~PA7接八位逻辑电平显示JD10,单片机最小应用系统的P2.0、P2.7、RD、WR、ALE分别接8155的IO/M、CE、RD、WR、ALE,RESET接上最小系统的复位电路的RESET。
2、用串行数据通信线连接计算机与仿真器,把仿真器插到模块的锁紧插座中,请注意仿真器的方向:缺口朝上。
3、打开Keil uVision2仿真软件,首先建立本实验的项目文件,接着添加 8155_A.ASM源程序,进行编译,直到编译无误。
4、进行软件设置,选择硬件仿真,选择串行口,设置波特率为38400。
5、也可以把源程序编译成可执行文件,把可执行文件用ISP烧录器烧录到89S52/89S51芯片中运行。(ISP烧录器的使用查看附录二)
(二)PA口作为输出口,PB口作为输入口,PA口读入键信号送八位逻辑电平显示模块显示。
1、单片机最小应用系统的 P0口接8155的D0~D7口,8155的PA0~PA7接八位逻辑电平显示,PB0~PB7口接查询式键盘模块,单片机最小应用系统的P2.0、P2.7、RD、WR、ALE分别接8155的IO/M、CE、RD、WR、ALE,RESET接上复位电路的RESET。
2、打开8155_B.ASM源程序,编译无误后,全速运行程序。按查询式键盘各键,观察发光二极管的亮灭情况,发光二极管与按键相对应,按下为点亮,松开为熄灭。
5、也可以把源程序编译成可执行文件,把可执行文件用ISP烧录器烧录到89S52/89S51芯片中运行。(ISP烧录器的使用查看附录二)
四、流程图及源程序
置8155工作方式 |
读8155PB口 |
写8155PA口 |
开 始 |
延 时 |
置8155工作方式 |
置8155PA口 |
数据左移 |
开 始 |
延 时 |
源程序如下:
(一)PA口输出:org 0hporta equ 7F01h ;A口Portb equ 7F02h ;B口caddr equ 7F00h ;控制字地址mov a,#03h ;方式0,PA、PB输出mov dptr, #caddrmovx @dptr, aLoop:mov a, #0FEhmov r2, #8Output:mov dptr, #portamovx @dptr, acall Delayrl adjnz r2, Outputljmp LoopDelay:mov r6, #0mov r7, #0DelayLoop:djnz r6, DelayLoopdjnz r7, DelayLoopretend(二)PA口输出,PB口输入ORG 0mode equ 01h ;方式0,PA输出,PB输入PortA equ 7F01h ;A口PortB equ 7F02h ;B口CAddr equ 7F00h ;控制字地址SJMP STARTorg 30h mov a, #modemov dptr, #caddrmovx @dptr, aSTART:mov dptr, #PortBmovx a, @dptr ;读入B口mov dptr, #PortAmovx @dptr, a ;输出到A口call delaySjmp STARTend
- 嵌入式软件代码保护系统设计(05-08)
- 高密度SPI EEPROM——SA25C020的DSP引导(10-22)
- 提高MSP430G系列单片机的Flash 擦写寿命的方法(11-05)
- 实战经验吐血推荐:怎样在Linux环境下轻松实现基于I2C总线的EEPROM驱动程序(07-25)
- STM8S EEPROM 读写字节操作(12-03)
- 8051模拟IIC操作EEPROM(12-03)