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
;返回中断
以上第一次出现的指令都给你注释了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)