【微机原理大作业】从0开始设计RTC电子钟系统(二)(初步构图和代码子模块)

【微机原理作业】从0开始设计RTC系统(一)
上一篇确定了使用的仿真元件,以及元件的工作方式。
接下来编写汇编程序,程序编写在 emu8086 上进行。

软件设计

流程图:
流程图

中断向量和8253、8255初始化

START:
    ; 数据段设置
    MOV AX, DATA
    MOV DS, AX
    MOV ES, AX
    
    ; NMI中断向量初始化
    PUSH ES
    XOR AX, AX 
    MOV ES, AX
    MOV AL, 02H      
    XOR AH, AH
    SHL AX, 1   
    SHL AX, 1   
    MOV SI, AX
    MOV AX, OFFSET NMI_SERVICE 
    MOV ES: [SI], AX
    INC SI
    INC SI
    MOV BX, CS
    MOV ES: [SI], BX
    POP ES   
    
    ; 初始化8253
    MOV AL, 00110101B ; T0 读写16位 方式2 BCD计数
    MOV DX, TIME_CTR   
    OUT DX, AL
    MOV DX, TIME0        
    MOV AX, CNTVAL    ; 1000分频
    OUT DX, AL
    
    MOV AL, AH        
    OUT DX, AL
    
    MOV AL, 01110111B ; T1 读写16位 方式3 BCD计数
    MOV DX, TIME_CTR   
    OUT DX, AL
    MOV DX, TIME1   
    MOV AX, CNTVAL    ; 1000分频
    OUT DX, AL
    
    MOV AL, AH        
    OUT DX, AL   
    
    ; 初始化8255
    MOV AL, 81H       ; A、B输出,C上部输出,下部输入
    OUT PORT_CTR, AL

中断服务

NMI_SERVICE: 
    ; 中断服务
    PUSH AX
    MOV AL, SEC
    ADD AL, 1
    DAA           ; 校正BCD数加法    
    
    MOV SEC, AL
    CMP SEC, 60H 
    JB  EXIT      ; 若秒数大于60则转移
    MOV SEC, 0
    MOV AL,  MIN
    ADD AL,  1
    DAA
    
    MOV MIN, AL
    CMP MIN, 60H
    JB  EXIT
    MOV MIN, 0
    MOV AL,  HOU
    ADD AL,  1
    DAA
    
    MOV HOU, AL
    CMP HOU, 24H
    JB  EXIT
    MOV HOU, 0
    DAA

显示

DISP PROC 
     ; 数码管显示子程序 
     ; 秒个位 
     MOV AL, 0FFH    ; 为防止重叠,每次显示之前要清零
     MOV DX, PORTB
     OUT DX, AL      ; 位选信号接到8255A的PB口
 
     MOV AL, 0FEH    ; 位选码
     MOV DX, PORTB          
     OUT DX, AL      
     
     MOV BL, SEC    
     AND BX, 000FH  
     MOV SI, BX 
     MOV AL, LED[SI]  ; 段选码
     MOV DX, PORTA  
     OUT DX, AL       ; 段选信号接到8255A的PA口
     CALL DELAY            
     
     ; 秒十位
     MOV AL, 0FFH   
     MOV DX, PORTB
     OUT DX, AL       
     
     MOV AL, 0FDH     ; 位选码
     MOV DX, PORTB          
     OUT DX, AL
       
     MOV BL, SEC
     AND BX, 00F0H
     MOV CL, 4
     SHR BX, CL      
     MOV SI, BX        
     MOV AL, LED[SI]  ; 段选码
     MOV DX, PORTA
     OUT DX, AL
     CALL DELAY     
     
     ; "-"
     MOV AL, 0FFH     
     MOV DX, PORTB
     OUT DX, AL              
     
     MOV AL, 0FBH     ; 位选码
     MOV DX, PORTB
     OUT DX, AL
            
     MOV AL, 40H      ; 段选码  
     MOV DX, PORTA
     OUT DX, AL
     CALL DELAY   
     
     ; 分个位
     MOV AL, 0FFH   
     MOV DX, PORTB
     OUT DX, AL    
                 
     MOV AL, 0F7H     ; 位选码
     MOV DX, PORTB
     OUT DX, AL  
               
     MOV BL, MIN
     AND BX, 000FH
     MOV SI, BX
     MOV AL, LED[SI]  ; 段选码
     MOV DX, PORTA
     OUT DX, AL
     CALL DELAY  
     
     ; 分十位                 
     MOV AL, 0FFH     
     MOV DX, PORTB
     OUT DX, AL  
     
     MOV AL, 0EFH     ; 位选码
     MOV DX, PORTB          
     OUT DX, AL
          
     MOV BL, MIN
     AND BX, 00F0H
     MOV CL, 4
     SHR BX, CL       
     MOV SI, BX
     MOV AL, LED[SI]  ; 段选码 
     MOV DX, PORTA
     OUT DX, AL 
     CALL DELAY  
      
     ; "-" 
     MOV AL, 0FFH   
     MOV DX, PORTB
     OUT DX, AL   
     
     MOV AL, 0DFH     ; 位选码
     MOV DX, PORTB
     OUT DX, AL
          
     MOV AL, 40H      ; 段选码  
     AND DX, PORTA
     OUT DX, AL     
     CALL DELAY 
     
     ; 时个位
     MOV AL, 0FFH   
     MOV DX, PORTB
     OUT DX, AL    
     
     MOV AL, 0BFH     ; 位选码
     MOV DX, PORTB
     OUT DX, AL
     
     MOV BL, HOU
     AND BX, 000FH
     MOV SI, BX
     MOV AL, LED[SI]  ; 段选码
     MOV DX, PORTA
     OUT DX, AL   
     CALL DELAY               
     
     ; 时十位
     MOV AL, 0FFH     
     MOV DX, PORTB
     OUT DX, AL  
     
     MOV AL, 07FH     ; 位选码
     MOV DX, PORTB
     OUT DX, AL
     
     MOV BL, HOU
     AND BX, 00F0H
     MOV CL, 4
     SHR BX, CL       
     MOV SI, BX
     MOV AL, LED[SI]  ; 段选码 
     MOV DX, PORTA
     OUT DX, AL      
     CALL DELAY
          
     RET              
DISP ENDP

延时

DELAY PROC
      ; 延时子程序 
      PUSH BX
      PUSH CX
      MOV BX, 1
LP1:  MOV CX, 1200
LP2:  LOOP LP2
      DEC BX
      JNZ LP1
      POP CX
      POP BX   
      RET    
DELAY ENDP

效果

效果
参考:《微机原理与接口技术实验-基于proteus仿真》

下一步:【微机原理大作业】从0开始设计RTC电子钟系统(三)(含完整源码和仿真图及下载地址)

  • 7
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不雨_亦潇潇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值