51单片机外扩存储器62256,前面有个锁存器,存储P0口输出的数据,程序应该怎么写?好的会追分

51单片机外扩存储器62256,前面有个锁存器,存储P0口输出的数据,程序应该怎么写?好的会追分,第1张

由于不知道你的硬件线路,假设P2.7控制62256的CS脚,并且低有效,51的WR和RD连接62256的WR和RD,51的ALE连373的ALE,那么你就可以直接 *** 作这些外存了。

C语言:

某个变量是放在62256里的

char xdata i _at_ 0x0000//表示这个变量是存放在62256的首地址的

i = 1//接下来程序里就把i当普通变量使用了,编译器会自动控制端口的 *** 作的。

汇编:

mov dptr,#0000h

mov a,#1

movx @dptr,a movx命令自动会控制端口的,此处的命令就是向62256的0地址写1

使用62256构成64K的静态数据存储器

输入输出系统微机系统中占有重要的地位,它是人机交互的唯一渠道,在一个小型的DVCC8086十六位微型单板机系统中,输入输出系统无法采用传统的键盘和CRT显示器,只能采用一些简单的输入输出设备,如开关量和数码管显示器,虽然设备简单,但要使它在DVCC8086十六位微型机系统中正常工作,涉及的技术却非常多,首先,DVCC8086十六位微型机本身的资源是够用的,即CPU、内存、总线这些构成微型机的整体框架的硬件要有。第二,内存的容量,存储器地址的范围,端口的地址范围,中断资源等必须满足输入输出的基本要求。第三,相应的输入输出设备的接口必须具有,选择了那些接口,就有相应的功能。第四,输入输出设备的驱动程序要有,即如何对接口进行符合要求的编程,最后,有一个具体的应用来验证设计的整个输入输出系统能否正常使用。本文主要介绍DVCC8086十六位微型机的硬件组成,讨论了十六位微机实验系统的输入输出的有关内容。描述DVCC8086十六位微型机本身的所有资源,同时也对本设计中使用的输入输出设备开关量、数码管显示器、与输入输出相关的接口芯片及其驱动程序进行了详细的讲解。最后给出了一个具体的输入输出的应用,以此来了解一个完整的输入输出系统的设计。

1 DVCC8086十六位微型机的硬件组成

DVCC8086 十六位微型机输入输出系统是为了适应微机原理、微机接口技术等课程的实验而设计的。它为大中专院校学生学习微机原理、微机接口技术提供了理想的实验环境,它可有效地帮助学生深入理解微机原理等课程中的基本概念,理解微机的工作过程接口芯片的工作原理,从而达到学好微机原理和接口技术等课程的目的。

1.1系统的部分硬件组成

(1)系统采用主频为4.77HZ的8088CPU为主CPU,并以最小工作方式构成系统。

(2)采用静态RAM形成监控程序的数据区和用户实验的程序存储区,系统以二片62256静态RAM构成系统的64K基本内存,地址范围为00000H~0FFFFH。其中00000H~004FFH为系统数据区,00500-00FFFH为用户数据区,01000H~0FFFFH为用户程序区。用EPROM形成系统监控程序区,主要是一片32KEPROM存放系统程序和实验程序,地址范围为F8000H-FFFFFH。

(3) 系统中采用74LS373、74LS245总线驱动器使CPU的AB/DB分时复用,形成AB、DB分离的总线方式

(4) 由可编程键盘显示接口8279A对24键的小键盘和8位的七段LED显示进行管理。自带键盘显示器,采用进口键座、彩色字符键帽,能单机独立运行,为实验程序的调试带来方便。

以上就构成了最基本的微机工作系统。同时将AB、DB和CB三总线均引出供实验使用,为了减少和防止外接电路对CPU的影响,各信号均加入了驱动、隔离电路。

(5)通用外围电路,包括逻辑电平开关电路、发光二极管显示电路、时钟电路、单脉冲发生电路、继电器及驱动电路、直流电机及驱动电路、步进电机及驱动电路、电子音响及驱动电路、模拟电压产生电路。

(6) 提供各种微机常用I/O接口芯片:包括定时/计数器接口芯片(8253A),并行接口芯片(8255A),A/D转换芯片(0809),D/A转换芯片(0832),中断控制器接口芯片(8259A),键盘显示接口芯片(8279A),串行通信接口芯片(8251A)等。

(7) 备有系统总线扩展插座,便于其他硬件接口器件的扩展(如DAM控制器8237A的扩充、串级中断源8259A的扩充、串行口8250A扩充、A/D的扩充等)。

(8) 可以配接温度测量、压力测量实验板。

(9)备有通用IC插座,和其他外围电路配合作数字实验仪用。

(10)实验电路连接采用自锁紧插座及导线,消除接触不良现象。

(11)提供标准RS-232异步通信接口,以联接IBMPC及其兼容机

BZ1:

EQU

20HBZ1\BZ2\BZ3常量定义

BZ2:

EQU

21H

BZ3:

EQU

22H

MOV

20H,

#00H

地址20H赋值

MOV

21H,

#00H

同上

MOV

22H,

#00H

同上

SETB

EA

允许单片机总中断

SETB

1T

这个没见过,不知道你是不是打错了=

=、

SETB

EX0

允许外部中断0

MAIN:

MOV

R1,

#80H标志MAIN,R1赋值80H

MAIN0:

MOV

A,

20HA赋值20H

CJNE

A,

#01H,

MAIN1比较A和01H的值,非零则跳转MAIN1

JMP

CC无条件跳转至CC

MAN1:

MOV

A,

21HMAN1标志,这里你是不少打字母I了。。A赋值21H

CJNE

A,

#01H,

MAIN2同上

JMP

FF无条件跳转

MAIN2:

MOV

DPTR,

#0EFFFH赋值

MOVX

A,

@DPTRDPTR指向地址的内容赋值给A

MOV

DPTR,

#0DFFFH

MOVX

@DPTR,

A同上

MOV

DPTR,

#0BFFFH

MOV

A,

R1R1内容赋值给A

DEC

AA自减1

MOV

R1,

A

CJNE

A,

#00H,

MAIN0同上

JMP

MAIN跳转

CC:

MOV

21H,

#00H

MOV

R2,

#0FFH

MOV

R3,

#0FFH

CC0:

MOV

A,

22H

MOV

R1,

#80H

CJNE

A,#00H,

CC1

MOV

22H,

#00H

JMP

MAIN

CC1:

MOV

DPTR,

#0FFF7H

MOVX

A,

@DPTR

MOV

DL,

R2

MOV

DH,

R3

MOVX

@DPTR,

A

DEC

R2

CJNE

R2,

#00H,

CC2

MOV

R2,

R3

CC2:

MOV

DPTR,

#0FFFBH

MOVX

@DPTR,

A

MOV

DPTR,

#0FFFEH

MOV

A,

R1

MOVX

@DPTR,

A

DEC

A

MOV

R1,

A

CJNE

A,

#00H,

CC1

JMP

CC0

FF:

MOV

20H,

#00H

MOV

R2,

#FFH

MOV

R3,

#0FFH

FF0:

MOV

A,

22H

MOV

R2,

#80H

CJNE

A,

#00H,

FF1

FF1:

CJNE

R2,

#00H,

FF2

JMP

MAIN

FF2:

MOV

DL,

R2

MOV

DH,

R3

MOVX

A,

@DPTR

MOV

DPTR,

#0FFBH

MOVX

@DPTR,

A

DEC

R2

CJNE

R2,

#00H,FF3

MOV

R2,

R3

FF3:

MOV

DPTR,

#0FFFEH

MOV

A,

R1

MOVX

@DPTR,

A

DEC

A

MOV

R1,

A

CJNE

A,#00H,

FF1

JMP

FF0

中断程序如下:

键盘中断:

2D:

JNB

P10

K1

JNB

P11

K2

JNB

P12

K3

JNB

P13

K4

JNB

P14

K5

JNB

P15

K6

JMP

2D

K1:

ACALL

DELAY

JNB

P10

K11

JMP

P10

2D

K2:

ACALL

DELAY

JNB

P11

K21

JMP

2D

K3:

ACALL

DELAY

JNB

P12

K31

JMP

2D

K4:

ACALL

DELAY

JNB

P13

K41

JMP

2D

K5:

ACALL

DELAY

JNB

P14

K51

JMP

2D

K6:

ACALL

DELAY

JNB

P15

K61

JMP

2D

K11:

MOV

R0,

#10H

;置0.2ms/div

RET

;返回中断

K21:

MOV

R0,

#20H

;置2ms/div

RET

;返回中断

K31:

MOV

R0,

#40H

;置20ms/div

RET

;返回中断

K41:

MOV

20H,

#01H

;置0.2ms/div

RET

;返回中断

K51:

MOV

21H,

#01H

;置0.2ms/div

RET

;返回中断

K61:

MOV

22H,

#01H

;置0.2ms/div

RET

;返回中断

以上第一次出现的指令都给你注释了。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/11546712.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存