微機實驗-帶數碼管倒計時的交通指示燈設計
阿新 • • 發佈:2019-01-06
一、實驗原理
使用8253對1MHz時鐘進行1M分頻,從而實現1s精確定時。
使用8255A口控制指示燈,8255B口控制數碼管倒計時,8255C口0-1控制數碼管片選,7口對1s時鐘進行讀取。
二、連線
8253的CLK0接1MHz時鐘源,OUT0接CLK1,OUT1接8255的PC7,GATE0、GATE1接電源+5V。
8255的PA0、PA1、PA2分別接路口1的綠、黃、紅燈,PA5、PA6、PA7分別接路口2的綠、黃、紅燈,
PB0-PB6接七段數碼管的a-g口,PC0、PC1分別接數碼管高、低位片選。
8253片選接280h,8255片選接288h。
三、彙編程式
1.精確延時子函式
在呼叫該delay子函式時,傳入引數cx為需要延時的時間,單位秒。在延時過程中,使用數碼管顯示距離延時結束剩餘的時間。該函式應該放在code段裡,以下為函式程式碼:
delay proc near push ax push bx push dx cont: mov ax,cx push cx mov bx,10 div bl mov bl,al mov dx,io8255c mov al,1 out dx,al mov al,[bx] mov dx,io8255b out dx,al mov cx,0ffffh d1: loop d1 mov cx,0ffffh d2: loop d2 mov bl,ah mov dx,io8255c mov al,2 out dx,al mov al,[bx] mov dx,io8255b out dx,al mov cx,0ffffh d3: loop d3 mov cx,0ffffh d4: loop d4 pop cx mov dx,io8255c in al,dx and al,80h mov ah,temp mov temp,al cmp ah,al jz cont cmp ah,80h jnz cont loop cont pop dx pop bx pop ax ret delay endp
2.主函式
綠燈時間60s,黃燈時間3s,紅燈時間63s。
data segment ioport equ 0ff00h-0280h io8253a equ ioport+280h io8253b equ ioport+281h io8253c equ ioport+282h io8253d equ ioport+283h io8255a equ ioport+288h io8255b equ ioport+289h io8255c equ ioport+28ah io8255d equ ioport+28bh ta db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh temp db 0 data ends code segment assume ds:data,cs:code start: mov ax,data mov ds,ax mov dx,io8253d mov al,36h out dx,al mov dx,io8253a mov al,50h out dx,al mov al,0c3h out dx,al mov dx,io8253d mov al,56h out dx,al mov dx,io8253b mov al,20 out dx,al mov dx,io8255d mov al,88h out dx,al mov dx,io8255a lo: mov al,24h out dx,al mov cx,60 call delay mov al,44h out dx,al mov cx,3 call delay mov al,81h out dx,al mov cx,60 call delay mov al,82h out dx,al mov cx,3 call delay jmp lo code ends end start