基于8086四位密码锁仿真控制系统设计-微机原理1206

​密码锁在初始化之后在代码中设置了一个初始密码。当输入密码时,系统会自动判断密码的位数,当密码达到4位的时候自动与初始密码相比对。一旦密码输入正确,则执行开锁程序,即点亮绿色LED灯。如果密码输入错误,则执行闭锁程序,即点亮红色LED灯。

IOY0         EQU   0200H           ;8255片选端口始地址
MY8255_A     EQU   IOY0+00H*2      ;8255的A口地址
MY8255_B     EQU   IOY0+01H*2      ;8255的B口地址
MY8255_C     EQU   IOY0+02H*2      ;8255的C口地址
MY8255_MODE  EQU   IOY0+03H*2      ;8255的控制寄存器地址  
IOY1           EQU   0400H         ;8253片选端口始地址
MY8253_COUNT0  EQU   IOY1+00H*2    ;8253计数器0端口地址
MY8253_COUNT1  EQU   IOY1+01H*2    ;8253计数器1端口地址
MY8253_COUNT2  EQU   IOY1+02H*2    ;8253计数器2端口地址
MY8253_MODE    EQU   IOY1+03H*2    ;8253控制寄存器端口地址

DATA   SEGMENT 
DTABLE DB   3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,3FH,39H,5EH,79H,71H,00H,40H   
;键值表,0~F对应的7段数码管的段位值 
;DTABLE[11]=3FH对应键值11,显示"0"
;DTABLE[16]=00H,数码管熄灭
;DATABLE[17]=04H,显示数码管"-"
STRING DB   01H,02H,03H,04H    ;初始密码,密码内存空间
DATA   ENDS  

STACK1 SEGMENT STACK
        DW 256 DUP(?)
STACK1 ENDS   
省略

 

1204基于8086双机串行口通信仿真设计-微机原理

​双8086CPU和8251A系统实现双机串行通信。

;功能:双机通信,接收数据+1后发送
 
;============================================================================
;---模式设置-----------------------------------------------------------------
.model small
.8086
include bsp.inc
include i8251_drv.inc ; !!!! 包含串口宏和函数 ****

;---堆栈段-----------------------------------------------------------------
.stack
;---数据段-----------------------------------------------------------------
.data
    test_msg      db "test test test !!!"
    test_var      db 'C'
    rx_buf        db 32 dup(0)
    
;---代码段-----------------------------------------------------------------
.code
.startup
    call main
    .exit
    
;----主程序-------------------------------------------------------------------    
main proc far  
    ; 初始化
    RESET_8251 ; 复位8251a
    INIT_8251  ; 初始化    
    
    ; 测试4---- 循环接收一个字符,显示一个字符
    .WHILE 1
        .IF 0 ; test1
            READ_BYTE ; ah = 1/0 = 接收正确/接收错误; al = 接收的数据
            .IF ah ==1
                inc al
                WRITE_BYTE al ;  
            .ELSE
                ; 接收有错误
                WRITE_BUF LENGTHOF rx_error_msg, rx_error_msg
            .ENDIF
        .ENDIF
        .IF 1 ; test2
省略

​1205基于8086双机通信数据互发仿真设计-微机原理​

实验成果如实验电路所示,有两个按钮,一个用来通过触发CPU B的中断,初始化CPU B所接8253所控制的四色LED灯,从而按照CPU B数据段所存计数值进行工作,由于以方式三初始化,故LED灯将按一定频率闪烁;另一个按钮触发CPU B的另一个中断,使CPU B向CPU A所接8255的PB0端口发出一个低电平,CPU A检测到后向8255发出一个存于数据段的数据给8255的PA端口使其准备输出,并将数据指针指向下一个待发数据。由于8255的PA口初始化为方式1输出,故会发出一个OBF的低电平信号,这个信号会触发CPU B的一个中断从而使CPU B打开74LS245总线收发器接收8255的PA端口数据,此数据将替换CPU B数据段中初始化计数器用的计数值,并向8255发出一个ACK信号告知它数据已接收,从而让8255撤销OBF信号。这时,再次按下初始化8253的按钮,由于8253的计数值改变,LED灯的闪烁频率也将改变。每次LED灯闪烁频率的改变,说明计数值更新成功,也就是数据成功传输了。

	CC EQU 9006H;计数器控制字地址
	C0 EQU 9000H;计数器0地址
	CS8259A EQU 8000H;8259 偶地址
	CS8259B EQU 8002H;8259 奇地址
	ICW1 EQU 00010011B;单片8259,上升沿触发,要写ICW4
	ICW2 EQU 00010000B;中断号为10H
	ICW4 EQU 00000011B;一般嵌套,非缓冲方式,自动EOI
	OCW1 EQU 00000000B

CODE    SEGMENT PUBLIC 'CODE'
        ASSUME CS:CODE,DS:DATAS,SS:STACK
	ORG 800H;为中断向量表留出空间
START:
        ; Write your code here
	MOV AX, DATAS
	MOV DS, AX
	MOV AX, STACK
	MOV SS, AX
	MOV AX, TOP
	MOV SP, AX;以上初始化过程很重要!否则数据段的内容无法读取,堆栈无法使用(堆栈栈顶可不必写)
	
	;;;;;;;下面开始写中断向量表;;;;;;;;;;;;;;;;;;;;;
	;使用DOS功能调用来写中断向量表的方法
	;PUSH DS
	;MOV DX,OFFSET IR0I
	;MOV AX,CODE
	;MOV DS,AX
省略

1213基于8086洗衣机仿真系统设计-微机原理

​8086洗衣机系统,可以通过按键实现洗衣机的注水、排水、洗衣、甩干等操作,数码管显示模式状态和洗衣时间。

采用汇编语言和protues仿真

1、汇编语言 

;上一片8255的地址
PA		EQU		08H	
PB		EQU		0AH
PC		EQU		0CH
CONW		EQU		0EH
;下一片8255的地址
PA1		EQU		20H	
PB1		EQU		22H
PC1		EQU		24H
CONW1		EQU		26H
;8253
AD82530		EQU		10H
AD82531		EQU		12H
AD82532		EQU		14H
AD8253CONW	EQU		16H
;
AD82590		EQU		20H
AD82591		EQU		22H
;============================
STACK	SEGMENT	STACK      
	DB	200	DUP(0) 
省略

1201基于8086数码管计算器设计

8086数码管计算器,通过矩阵键盘实现计算器数字和符号输入,数码管实时显示。 

        DATA  SEGMENT
           X  DB        ?,?,?,?     ;存放数据的每一位
          X1  DW        ?           ;存放第一个数据值
          X2  DW        ?           ;存放第二个数据值
           Y  DW        ?           ;存放运算结果
           S  DB        ?           ;存放运算符号值
           E  DB        ?           ;按下等号键标记
          CC  DB        ?           ;存放运算数据位数
           H  DB        0           ;存放按键行号
           L  DB        0           ;存放按键列号
     DISCODE  DB        3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H         ;段码表
        DATA  ENDS

        CODE  SEGMENT
              ASSUME    CS:CODE,DS:DATA

      START:  MOV       AX,DATA
              MOV       DS,AX

              MOV       AL,90H      ;设置为A口输入,B口输出,C口输出
              OUT       46H,AL
              MOV       DI,OFFSET X+3           ;DI指向X的高位
        KKK:  CALL      KEY         ;扫描按键
              JMP       KKK

;以下为按键扫描子程序,程序返回后,在变量H和L中存放当前按键的行列号
         KEY  PROC
省略

 

1203基于8086数字钟计时器秒表24小时仿真-设计资料


;上一片8255的地址
PA		EQU		08H	
PB		EQU		0AH
PC		EQU		0CH
CONW		EQU		0EH
;下一片8255的地址
	;PA1		EQU		20H	
	;PB1		EQU		22H
	;PC1		EQU		24H
	;CONW1		EQU		26H
;8253
AD82530		EQU		10H
AD82531		EQU		12H
AD82532		EQU		14H
AD8253CONW	EQU		16H
;
AD82590		EQU		20H
AD82591		EQU		22H
;============================
STACK	SEGMENT	STACK      
	DB	200	DUP(0) 
STACK ENDS 
;============================

DATA	SEGMENT


​文章转自电设屋,资料百度网盘下载地址 https://www.aiesst.cn/share.html​

  

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐