西电网信院微机原理实验(七)

实验七 基于8255的开关状态显示实验

1、编写程序,设定8255的PA口为开关量输入,PC口为开关量输出,要求能随时将PA口的开关状态通过PC口的发光二极管显示出来。

8255芯片:

图1 8255芯片引脚图

  CPU对8255的读/写操作,是对哪个端口的读/写操作,是通过CS,A1和A0三个引脚的状态来识别的,读写操作是通过WR和RD信号控制的。

表1 8255 的寻址

  8255有三种基本工作方式,A组可采用方式0到方式2,而B组只能采用方式0和方式1,这是由8255的方式控制寄存器控制。

题目分析:
  假设8255的端口地址为0200H(端口A),0202H(端口B),0204H(端口C),0206H(控制端口)。CPU地址线A2连接8255引脚A1,CPU地址线A1连接8255引脚A0。
  a) 设置8255引脚A1=1,A0=1,当D0—D7输入为1001 0000B,即为90H时,控制方式为A组工作方式为方式0,表示基本的输入/输出操作。A口表示输入,C口表示输出。
  b) 设置8255引脚A1=0,A0=0,选中端口A,接受输入,D0—D7为A端口输入值。
  c) 设置8255引脚A1=1,A0=0,选中端口C,D0—D7的值将在端口C输出。
  CPU不断改变输出的地址,以便达到将端口A读入数据输出到端口C的目的。
  由于发光二极管采用共阳极接法,故将端口A读入数据取反后输出到端口C。

汇编代码:

CODE SEGMENT
   ASSUME CS:CODE
START:        
   MOV AL,90H ;控制A输入C输出
   MOV DX,206H
   OUT DX,AL   
RUN:   
   MOV AL, 0H
   MOV DX, 200H
   IN AL, DX ;端口A读入
   NOT AL   
   MOV DX, 204H
   OUT DX, AL ;端口C输出
   JMP RUN
CODE ENDS
END START

电路连接图:

实验部分过程截图:

2、用8255A实现一电子秒表,计时范围0-99.99秒,应具有“START”,“STOP”,“CLEAR”三个按键,分别完成开始,停止,清零功能。

题目分析:

  假设8255的端口地址为0200H(端口A),0202H(端口B),0204H(端口C),0206H(控制端口)。CPU地址线A2连接8255引脚A1,CPU地址线A1连接8255引脚A0。
  初始化:设置8255引脚A1=1,A0=1,当D0—D7输入为1000 1001B,即为89H时,控制方式为A组工作方式为方式0,B组为方式0,表示基本的输入/输出操作。A口表示输出,B口表示输出,C口表示输入。
  设置端口地址为0202H,即选中端口B时,准备输出AL=40H,数字0。
  START:在端口地址0200H,依次输出AL=0001B、0010B、0100B、1000B选中1,2,3,4数码管。在端口地址0202H,依次输出0到9的数字。每一次四个数码管显示结束,都需要判断是否出现进位。
  判断按键状态:设置端口地址0204H,读入C端口的数据,从而判断此时按键的状态。
  STOP:通过判断C端口的数据,当输入为 0000 0110 时,表示暂停。此时显示当前计时即可。当检测到C端口输入为 0000 0101 时,表示继续计时。
  CLEAR:当C端口输入为0000 0011时,数码管上的数字全部清零,重新开始计时。

电路连接说明:

程序流程图:

汇编代码:

DATA SEGMENT
    NUMBER DB 40H,79H,24H,30H,19H,12H,02H,78H,00H,10H
    MIN1 DB 0
    MIN2 DB 0
    SEC1 DB 0
    SEC2 DB 0
    CIR DW 800
DATA ENDS

CODE SEGMENT
    ASSUME CS:CODE,DS:DATA
START:
    MOV AX, DATA
    MOV DS, AX
    MOV AL, 89H
    MOV DX, 206H  ;初始化
    OUT DX, AL    ;A,B输出,C输入
    MOV BX, 0H  
    LEA SI, NUMBER
    
OUTPUT: 
    MOV AL, 00000001B
    MOV DX, 200H    ;选中第4个数码管
    OUT DX, AL    
    MOV BL, SEC2    ;输出SEC2
    MOV AL, [SI+BX]
    MOV DX, 202H
    OUT DX, AL
    MOV CX, CIR
S4:
    LOOP S4
    
    MOV AL, 00000010B
    MOV DX, 200H    ;选中第3个数码管
    OUT DX, AL              
    MOV BL, SEC1
    MOV AL, [SI+BX]
    MOV DX, 202H
    OUT DX, AL
    MOV CX, CIR
S3:
    LOOP S3
    
    MOV AL, 00000100B
    MOV DX, 200H    ;选中第2个数码管
    OUT DX, AL              
    MOV BL, MIN2
    MOV AL, [SI+BX]
    MOV DX, 202H
    OUT DX, AL
    MOV CX, CIR
S2:
    LOOP S2
    
    MOV AL, 00001000B
    MOV DX, 200H    ;选中第3个数码管
    OUT DX, AL              
    MOV BL, MIN1
    MOV AL, [SI+BX]
    MOV DX, 202H
    OUT DX, AL
    MOV CX, CIR
S1:
    LOOP S1      
    ;四个数码管显示结束,判断C端口状态
    MOV DX, 204H
    IN AL, DX
    CMP AL, 06H
    JE STOP    ;STOP暂停计时
    CMP AL, 03H 
    JE TAIL1   ;CLEAR清零计时
   
    ;没有按按键或者按了STRAT,增加秒数并判断是否进位
    INC SEC2                            
    CMP SEC2, 10
    JNZ OUTPUT
    
    ;SEC2 = 10,进位
    MOV SEC2, 0H
    INC SEC1
    CMP SEC1, 10
    JNZ OUTPUT
    
    ;SEC1 = 10,进位
    MOV SEC1, 0H
    INC MIN2
    CMP MIN2, 10
    JNZ OUTPUT
    
    ;MIN2 = 10, 进位
    MOV MIN2, 0H
    INC MIN1
    CMP MIN1, 10
    JNZ OUTPUT
    
    ;MIN1 = 10,清零
    MOV MIN1, 0H
    JMP OUTPUT

STOP:
    MOV AL, 00000001B
    MOV DX, 200H    ;选中第4个数码管
    OUT DX, AL          
    MOV BL, SEC2
    MOV AL, [SI+BX]
    MOV DX, 202H
    OUT DX, AL
    MOV CX, CIR
S8:
    LOOP S8
    
    MOV AL, 00000010B
    MOV DX, 200H    ;选中第3个数码管
    OUT DX, AL          
    MOV BL, SEC1
    MOV AL, [SI+BX]
    MOV DX, 202H
    OUT DX, AL
    MOV CX, CIR
S7:
    LOOP S7
    
    MOV AL, 00000100B
    MOV DX, 200H    ;选中第2个数码管
    OUT DX, AL          
    MOV BL, MIN2
    MOV AL, [SI+BX]
    MOV DX, 202H
    OUT DX, AL
    MOV CX, CIR
S6:
    LOOP S6
    
    MOV AL, 00001000B
    MOV DX, 200H    ;选中第1个数码管
    OUT DX, AL          
    MOV BL, MIN1
    MOV AL, [SI+BX]
    MOV DX, 202H
    OUT DX, AL
    MOV CX, CIR
S5:
    LOOP S5 
    ; 判断是继续计时、暂停还是清零
    MOV DX, 204H
    IN AL, DX
    CMP AL, 05H ;START按键按下
    JE  OUTPUT
    CMP AL, 03H ;CLEAR按键按下
    JE TAIL2
    JMP STOP

TAIL1:
    CALL ZERO
    JMP OUTPUT     
TAIL2:
    CALL ZERO
    JMP STOP    
ZERO PROC
    MOV SEC2, 0H
    MOV SEC1, 0H
    MOV MIN1, 0H
    MOV MIN2, 0H
    RET
ZERO ENDP
CODE ENDS
END START

电路连接图:

实验部分过程截图:

参考文献:

《微型计算机原理及应用(第三版)》李伯成、侯伯亨等编著

  • 7
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
核心网信令流程(Core Network Signaling Procedure,CHM)是指在移动通信网络中,用于进行用户鉴权、位置注册、呼叫建立、通话控制及释放等各项信令交互的流程。 CHM的主要流程包括以下几个步骤: 1. 鉴权和位置注册:当移动终端首次接入核心网络时,需要进行鉴权和位置注册流程。移动终端向鉴权中心发送鉴权请求,鉴权中心验证其合法性后,将用户终端标识和位置信息注册到位置寄存器中。 2. 呼叫建立:当用户发起呼叫时,核心网需要进行呼叫建立流程。移动终端向核心网发送呼叫请求,核心网根据移动终端标识和位置信息路由呼叫。 3. 通话控制:通话建立后,核心网需要对通话进行控制。包括呼叫保持、呼叫转移、呼叫等待等功能。 4. 通话释放:当通话结束时,核心网需要进行通话释放流程。核心网收到终端发送的通话释放请求后,进行释放确认,并更新用户的位置信息。 CHM的流程旨在保证用户与移动终端之间的通信顺畅和安全,实现用户的鉴权、位置注册、呼叫建立、通话控制和释放等功能。同时,CHM的流程还能提供用户移动性支持,使得用户可以在不同网络之间进行切换,同时保持通信的连续性。 总之,核心网信令流程(CHM)在移动通信网络中扮演着重要的角色,能够确保用户在移动通信网络中的正常通信,并提供各种附加功能,提升用户体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值