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

📄 ΢

📁 微机原理实验源程序,总共有八个实验内容的源程序。实验一 简单输入、输出实验 实验五 8253定时器实验 实验二 软件延时实验 实验六 LED显示实验 实验三 软件延时模拟路口交通灯控制 实验七 定时器
💻
📖 第 1 页 / 共 2 页
字号:
       mov ah,0
       out dx,ax
       inc di
       loop dlo
       ret

black: mov dx,con8279
       mov ax,0d1h
       out dx,ax
       mov cx,80h
clsb:  nop
       nop
       loop clsb
       ret

code   ends
       end start

!设计实验:用3个开关输入作为编码0-7,根据输入LED显示相应的0-7。
                                        返回目录
----------------------------------------------------------------
               实验七 定时器计时显示实验
 硬件连线: 8253OUT0接74LS244的SI0,

          地址译码输出CS0与8253的片选CS相连;
          地址译码输出CS2与74LS244的片选CS相连

 实验效果: LED显示定时器的计时数。
----------------------------------------------------------------
汇编程序:

;=========================================================================
;
; This program use 8253 and LED show time in mm-ss-nn,n:1/100 second
;
;=========================================================================
con8279 equ 0492h ; LED CONTROL PORT
dat8279 equ 0490h ; LED DATA PORT
       assume cs:code
code   segment public
       org 100h
start: jmp start1
table1 db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh
disbuf db 6 dup(0)
;------------------------------------start initial
start1:mov di,offset disbuf
       mov cx,6
ini0:  mov byte ptr es:[di],3fh
       inc di
       loop ini0      ; show 00:00:00 first
;-------------------------------------------
       mov dx,04a6h   ; initial ctc8253
       mov al,36h     ; ctc0 16bits mode3 cycle
       out dx,al
       mov dx,04a0h
       mov al,24h
       out dx,al
       mov al,0fh
       out dx,al      ; SET CTC0 16 bits DATA
;------------------------------------------
       mov ax,0
       mov bx,0
       mov cx,0
       push ax
       push bx
       push cx        ; time in ax,bx,cx
       mov ax,sp
       mov bp,ax
;------------------------------------show number
kplay2:call disply
       call dislay

       mov dx,04c0h ; check ctc
in11:  in al,dx
       test al,1
       jz in11
in12:  in al,dx
       test al,1
       jnz in12
       mov cx,[bp]
       inc cl
       cmp cl,10
       jne nextcm
       mov cl,0
       inc ch
       cmp ch,10
       jne nextcm
       mov ch,0
       mov bx,[bp+2]
       inc bl
       cmp bl,10
       jne nextbx
       mov bl,0
       inc bh
       cmp bh,6
       jne nextbx
       mov bh,0
       mov ax,[bp+4]
       inc al
       cmp al,10
       jne nextax
       mov al,0
       inc ah
       cmp ah,6
       jne nextax
       mov ah,0
       jmp nextax
nextcm:jmp nextcx
nextax:mov [bp+4],ax
showah:push cx
       push bx
       mov bl,ah
       mov bh,0
       mov si,bx
       mov bx,offset table1
       mov cl,es:[bx+si]
       mov di,offset disbuf
       mov es:[di],cl
showal:mov ah,0
       mov si,ax
       mov bx,offset table1
       mov al,es:[bx+si]
       mov di,offset disbuf
       mov es:[di+1],al
       pop bx
       pop cx
nextbx:mov [bp+2],bx
showbh:push cx
       mov ax,bx
       mov bl,ah
       mov bh,0
       mov si,bx
       mov bx,offset table1
       mov cl,es:[bx+si]
       mov di,offset disbuf
       mov es:[di+2],cl
showbl:mov ah,0
       mov si,ax
       mov bx,offset table1
       mov al,es:[bx+si]
       mov di,offset disbuf
       mov es:[di+3],al
       pop cx
nextcx:mov [bp],cx
showch:mov bl,ch
       mov bh,0
       mov si,bx
       mov bx,offset table1
       mov al,es:[bx+si]
       mov di,offset disbuf
       mov es:[di+4],al
showcl:mov ch,0
       mov si,cx
       mov bx,offset table1
       mov al,es:[bx+si]
       mov di,offset disbuf
mov es:[di+5],al
;-----------------------------------
       jmp kplay2
;-----------------------------------
dislay:mov bx,2eeh
disla2:dec bx
       jnz disla2
       mov ax,0c2h
       mov dx,con8279
       out dx,ax
       ret
;-----------------------------------
disply:call black
       mov ax,90h
       mov dx,con8279
       out dx,ax
       mov dx,dat8279
       mov cx,8
       mov di,offset disbuf
dlo:   mov al,es:[di]
       mov ah,0
       out dx,ax
       inc di
       loop dlo
       ret
;----------------------------------
black: mov dx,con8279
       mov ax,0d1h
       out dx,ax
       mov cx,80h
clsb:  nop
       ; nop
       loop clsb
       ret

code   ends
       end start
!设计实验:给实验六加上暂停功能,即开关控制计时可暂停、继续。

                                        返回目录
----------------------------------------------------------------
               实验八    模拟交通灯显示综合实验
 硬件连线: 8253OUT0接74LS244的SI0,地址译码输出CS0与8253的片选CS相连;

          8个发光二极管与74LS273的SO相连,地址译码输出CS1与74LS273的片选CS相连
          地址译码输出CS2与74LS244的片选CS相连

 实验效果: 类似路口交通灯显示,LED显示时间。
----------------------------------------------------------------

汇编程序:
;==================================================================
;
; This program use 8253 show time and control light
;
;==================================================================
con8279 equ 0492h
dat8279 equ 0490h
assume cs:code
code segment public
org 100h
start: jmp start1

table1 db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh
disbuf db 6 dup(0)
second db 9
;------------------------------------start initial
start1: mov di,offset disbuf
mov cx,6
ini0: mov byte ptr es:[di],0h
inc di
loop ini0 ; show 00:00:00 first

mov dx,04a6h ; initial ctc8253
mov al,36h ; ctc0 16bits mode3 cycle
out dx,al
mov dx,04a0h
mov al,24h
out dx,al
mov al,0fh
out dx,al ; out ctc data 16 bits
;------------------------------------show number
kplay2: mov cl,9
mov second,cl
mov ch,0
mov si,cx
mov bx,offset table1
mov al,es:[bx+si]
mov di,offset disbuf
mov es:[di+3],al
call disply
call dislay
;---------------------------------cycle 1
mov dx,04b0h
mov al,21h
out dx,al ; show 1
mov bx,4
push bx
c11: mov cx,100
c12: call c100s
loop c12 ; 1 second
mov cl,second
dec cl
mov ch,0
mov si,cx
mov bx,offset table1
mov al,es:[bx+si]
mov di,offset disbuf
mov es:[di+3],al
mov second,cl
call disply
call dislay
pop bx
dec bx
push bx
jnz c11
pop bx
mov bx,5
push bx
c13: mov dx,04b0h
mov al,1h
out dx,al ; flash
mov cx,30
c14: call c100s
loop c14 ; 0.3 second
mov dx,04b0h
mov al,21h
out dx,al ; show 1
mov cx,70
c15: call c100s
loop c15 ; 0.7 second
mov cl,second
dec cl
mov ch,0
mov si,cx
mov bx,offset table1
mov al,es:[bx+si]
mov di,offset disbuf
mov es:[di+3],al
mov second,cl
call disply
call dislay
pop bx
dec bx
push bx
jnz c13
;---------------------------------cycle 2
mov cl,8
mov second,cl
mov dx,04b0h
mov al,12h
out dx,al ; show 2
mov ch,0
mov si,cx
mov bx,offset table1
mov al,es:[bx+si]
mov di,offset disbuf
mov es:[di+3],al
call disply
call dislay
pop bx
mov bx,3
push bx
c21: mov cx,100
c22: call c100s
loop c22 ; 1 second
mov cl,second
dec cl
mov ch,0
mov si,cx
mov bx,offset table1
mov al,es:[bx+si]
mov di,offset disbuf
mov es:[di+3],al
mov second,cl
call disply
call dislay
pop bx
dec bx
push bx
jnz c21
pop bx
mov bx,5
push bx
c23: mov dx,04b0h
mov al,2h
out dx,al ; flash
mov cx,30
c24: call c100s
loop c24 ; 0.3 second
mov dx,04b0h
mov al,12h
out dx,al ; show 2
mov cx,70
c25: call c100s
loop c25 ; 0.7 second
mov cl,second
dec cl
mov ch,0
mov si,cx
mov bx,offset table1
mov al,es:[bx+si]
mov di,offset disbuf
mov es:[di+3],al
mov second,cl
call disply
call dislay
pop bx
dec bx
push bx
jnz c23
pop bx
jmp kplay2

c100s: mov dx,04c0h ; ctc 1/100 s
in11: in al,dx
test al,1
jz in11
in12: in al,dx
test al,1
jnz in12
ret

dislay: mov bx,2eeh
disla2: dec bx
jnz disla2
mov ax,0c2h
mov dx,con8279
out dx,ax
ret

disply: call black
mov ax,90h
mov dx,con8279
out dx,ax
mov dx,dat8279
mov cx,8
mov di,offset disbuf
dlo: mov al,es:[di]
mov ah,0
out dx,ax
inc di
loop dlo
ret

black: mov dx,con8279
mov ax,0d1h
out dx,ax
mov cx,80h
clsb: nop
; nop
loop clsb
ret

code ends
end start

⌨️ 快捷键说明

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