设计思路
利用视觉暂留循环显示,四位数码管分秒计数,并检测有无按键按下。对应按下不同按键,秒计数加1,分计数加1。循环达到1s,秒计数加1,秒计数到的60,秒计数减60,分计数加1,分计数到的60,分计数减60。设计思路如下所示:
主要元件介绍及使用
8086CPU介绍
Intel 8086拥有四个16位的通用寄存器,也能够当作八个8位寄存器来存取,以及四个16位索引寄存器(包含了堆栈指标)。资料寄存器通常由指令隐含地使用,针对暂存值需要复杂的寄存器配置。它提供64K 8位元的输出输入(或32K 16位元),以及固定的向量中断。大部分的指令只能够存取一个内存位址,所以其中一个操作数必须是一个寄存器。运算结果会储存在操作数中的一个寄存器。
Intel 8086有四个 内存区段(segment)寄存器,可以从索引寄存器来设定。区段寄存器可以让 CPU 利用特殊的方式存取1 MB内存。8086 把段地址左移 4 位然后把它加上偏移地址。大部分的人都认为这是一个很不好的设计,因为这样的结果是会让各分段有重叠。尽管这样对组合语言而言大部分被接受(也甚至有用),可以完全地控制分段,使在编程中使用指针(如C编程语言) 变得困难。它导致指针的高效率表示变得困难,且有可能产生两个指向同一个地方的指针拥有不同的地址。更坏的是,这种方式产生要让内存扩充到大于 1 MB 的困难。而 8086 的寻址方式改变让内存扩充较有效率。
8086处理器的时钟频率介于4.77MHz(在原先的IBM PC频率)和10 MHz之间。8086 没有包含浮点指令部分(FPU),但是可以通过外接数学辅助处理器来增强浮点计算能力。Intel 8087 是标准版本。
74LS373锁存器介绍与使用
74LS373是三态输出的八D锁存器,共有54S373和74LS373两种线路。373 的输出端 Q0~Q7 可直接与总线相连。当锁存允许端LE为高电平时,Q 随数据D而变。当LE为低电平时,D 被锁存在已建立的数据电平。
74LS373真值表如下:
X表示任意。
8086CPU与锁存器连接电路图:
8255可编程并行接口介绍与使用
8255芯片是Intel公司生产的可编程并行I/O接口芯片,有3个8位并行I/O口。具有3个通道3种工作方式的可编程并行接口芯片(40引脚)。 其各口功能可由软件选择,使用灵活,通用性强。
X表示任意。
整体设计与仿真实现
86CPU为主体的分秒电子钟设计,如图:
Proteus仿真结果如图:
汇编程序设计:
DATAS SEGMENT
smgduan DB 3fH,06H,5bH,4fH,66H,6dH,7dH,07H,7fH,6fH;段选
smgwei DB 0FEH,0FDH,0FBH,0F7H;位选
PA EQU 0;
PB EQU 4;
PC EQU 8;
min DW 0;
sec DW 0;
fori1 DW 6500;
DATAS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
while1:
for1:
MOV AX,min
MOV BL,10
DIV BL
MOV CX,AX
MOV AL,smgwei+0
mov AH,PB
OUT 00,AX
LEA BX,smgduan
MOV AH,0
MOV AL,CL
ADD BX,AX
MOV AL,[BX]
mov AH,PA
OUT 00,AX
MOV AL,00
mov AH,PA
OUT 00,AX
MOV AL,smgwei+1
mov AH,PB
OUT 00,AX
LEA BX,smgduan
MOV AH,0
MOV AL,CH
ADD BX,AX
MOV AL,[BX]
mov AH,PA
OUT 00,AX
MOV AL,00
mov AH,PA
OUT 00,AX
MOV AX,sec
MOV BL,10
DIV BL
MOV CX,AX
MOV AL,smgwei+2
mov AH,PB
OUT 00,AX
LEA BX,smgduan
MOV AH,0
MOV AL,CL
ADD BX,AX
MOV AL,[BX]
mov AH,PA
OUT 00,AX
MOV AL,00
mov AH,PA
OUT 00,AX
MOV AL,smgwei+3
mov AH,PB
OUT 00,AX
LEA BX,smgduan
MOV AH,0
MOV AL,CH
ADD BX,AX
MOV AL,[BX]
mov AH,PA
OUT 00,AX
MOV AL,00
mov AH,PA
OUT 00,AX
MOV CX,fori1;
DEC CX;
JNZ NEXT2
MOV fori1,6500
MOV AX,sec
INC AX
CMP AX,60
JGE NEXT3
mov sec,AX
JMP while1
NEXT2: ;循环
MOV fori1,CX
JMP for1
NEXT3: ;秒满60
SUB AX,60
MOV sec,AX
MOV AX,min
INC AX
CMP AX,60
JGE NEXT4
MOV min,AX
JMP while1
NEXT4: ;分满60
SUB AX,60
MOV min,AX
JMP while1
CODES ENDS
END START
操作说明
首先上电,8086CPU即运行程序,开始计数,每秒加1。按下,上侧按键则,秒计数加一,按下,下侧按键则,分计数加一。
完整Protues电路设计和汇编程序https://download.csdn.net/download/weixin_43786907/16526403
上一篇:MC9S12XEP100 SCI(UART)驱动程序2 - 基于uCOS-II
下一篇:MC9S12XEP100 SPI模块 驱动程序
设计资源 培训 开发板 精华推荐
- LT8570IDD 1MHz 升压转换器的典型应用从 5 至 12V 输入产生 24V
- LTC2946IMS-1 电源、电荷和能量监视器在 -48V 恶劣环境中的典型应用,使用 INTVCC 并联稳压器来承受 200V 瞬态
- NCV7694GEVB:FLASH IR LED DRV 评估板
- ADA4505-4ACBZ-R7 血糖仪中使用的四极黄油滤波器的典型应用电路
- 使用 NXP Semiconductors 的 MC33730EK 的参考设计
- 《无线电与电视》杂志创刊50周年纪念版耳机放大器
- EVAL-ADuC845QSZ,用于 ADuC845 微转换器 MCU 的 ADuC8xx 评估套件
- 使用 ON Semiconductor 的 KA7500B 的参考设计
- 使用 NXP Semiconductors 的 ISP1562 的参考设计
- 使用 Infineon Technologies AG 的 OM7626NM 的参考设计