⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 8253.txt

📁 用8253作为秒定时器
💻 TXT
字号:
FOR  EAT598
;ORG  8100:0


INT00 EQU 200h
INT01 EQU 201h
Z8279    EQU       239H
D8279    EQU       238H
TIM_CTL  EQU       22bH
TIMER0   EQU       228H
MODE03   EQU       00110111B

LEDMODE EQU 00H
SCANFRQ EQU 38H

 
stack segment
sta dw 50 dup(?)
top equ length sta
stack ends
CODE SEGMENT
ASSUME CS:CODE,SS:stack,ds:CODE
START:
;-------------------------------------------------
;8253计数器
;-------------------------------------------------
   
     
     XOR CX,CX
     PUSH DS
     MOV AX,0
     PUSH AX
    
     CLI
     MOV DX,TIM_CTL   ;8253控制字端口
     MOV AL,MODE03    ;计数器0,工作方式3,BCD码
     OUT DX,AL
     MOV DX,TIMER0    ;8253计数器0的端口
     MOV AL,40H       ;初值240
     OUT DX,AL
     MOV AL,02H
     OUT DX,AL
  ;*********8259中断*********
        MOV AX,00
        MOV ES,AX
        MOV BX,8*4
        MOV AX,OFFSET ZD
        MOV ES:WORD PTR[BX],AX
        PUSH CS
        POP AX
        MOV ES:WORD PTR[BX+2],AX
        CLI                       ;关中断
        MOV AL,13H                ;ICW1:边沿触发,单片,要ICW4
        MOV DX,INT00
        OUT DX,AL
        NOP
        NOP
        MOV AL,8                  ;中断号从8开始
        MOV DX,INT01
        OUT DX,AL
        NOP
        NOP
        MOV AL,3                 ;全嵌套方式,86/88系统	9
        MOV DX,INT01
        OUT DX,AL
        
        MOV DX,INT01
        MOV AL,00H               ;八个中断全部开放
        OUT DX,AL
        MOV DX,INT00
        MOV AL,20H              ;非特殊EOI结束中断
        OUT DX,AL
        
        MOV DX,Z8279             ;8279左边输入,八位显示,外部译码
        MOV AL,LEDMODE
        OUT DX,AL
        MOV AL,SCANFRQ           ;设置扫描频率
        OUT DX,AL
  
  
;---------------------------------------------------
;8279
;----------------------------------------------------
     
        MOV AL,90H              ;写显示缓冲区RAM命令字
        OUT DX,AL
        MOV DX,D8279
        MOV AL,3FH             ;显示中断前字样"00:00"
        OUT DX,AL
        MOV AL,3FH
        OUT DX,AL
        MOV AL,09H
        OUT DX,AL
        MOV AL,3FH
        OUT DX,AL
        MOV AL,3FH 
        OUT DX,AL
        MOV AL,09H
        OUT DX,AL
        MOV AL,3FH
        OUT DX,AL
        MOV AL,3FH 
        OUT DX,AL
        
        PUSH CS
        POP DS
        mov NUM,10
        MOV SEC,50
        MOV MIN,58
        MOV HOU,0
ST1:   STI                   ;开中断
                  
      hlt                    ;等待硬件中断                   
     jmp st1
ZD:  
     DEC NUM            ;自减10次
   ;  CMP NUM,0
     jz SEC1
     IRET
     
SEC1:
    CLI
    INC SEC
    MOV AH,0
    MOV BL,10
    MOV Al,SEC
    DIV BL             ;除法,商在AL中,余数在AH中

    MOV CL,AL
    MOV DX,Z8279
    MOV AL,80H
    OUT DX,AL          
  
    MOV AL,AH
    LEA BX,LED
    XLAT
    MOV DX,D8279
    OUT DX,AL           ;个位显示

    
    MOV DX,Z8279        
    MOV AL,81H
    OUT DX,AL

    MOV AL,CL
    LEA BX,LED
    XLAT
    MOV DX,D8279
    OUT DX,AL          ;十位显示
    CMP SEC,60
    JZ MIN1
    JMP L1
MIN1:
    MOV SEC,0
    MOV AL,3FH             ;显示中断前字样"00:00"
    OUT DX,AL
    MOV AL,3FH
    OUT DX,AL
        
    
    INC MIN
    
    MOV AL,MIN
    MOV BL,10
    DIV BL               ;除法,商在AL中,余数在AH中
    MOV CL,AL
   
   
    MOV DX,Z8279
    MOV AL,83H
    OUT DX,AL
   
    MOV AL,AH
    LEA BX,LED
    XLAT
    MOV DX,D8279
    OUT DX,AL            ;显示个位
    
    MOV DX,Z8279        
    MOV AL,84H
    OUT DX,AL

    MOV AL,CL
    LEA BX,LED
    XLAT
    MOV DX,D8279
    OUT DX,AL          ;十位显示
    
    cmp min,60
    JZ  HOU1
    JMP L1   
 
 HOU1:
    MOV MIN,0
    MOV AL,3FH             ;显示中断前字样"00:00"
    OUT DX,AL
    MOV AL,3FH
    OUT DX,AL
        
    
    INC HOU
    
    MOV AL,HOU
    MOV BL,10
    DIV BL               ;除法,商在AL中,余数在AH中
    MOV CL,AL
   
   
    MOV DX,Z8279
    MOV AL,86H
    OUT DX,AL
   
    MOV AL,AH
    LEA BX,LED
    XLAT
    MOV DX,D8279
    OUT DX,AL            ;显示个位
    
    MOV DX,Z8279        
    MOV AL,87H
    OUT DX,AL

    MOV AL,CL
    LEA BX,LED
    XLAT
    MOV DX,D8279
    OUT DX,AL          ;十位显示
    
    cmp HOU,24
    JZ  L2
    JMP L1   
 L2:MOV HOU,0
    MOV AL,3FH             ;显示中断前字样"00:00"
    OUT DX,AL
    MOV AL,3FH
    OUT DX,AL
    
 L1:   MOV NUM,10
 
 exit:   iRET
 
   LED DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH  
  NUM DB ?
  SEC DB ?
  MIN DB ?
  HOU DB ?

code ends
end start

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -