微機實驗系列 可程式設計定時 計數器與中斷控制

2021-08-01 18:55:21 字數 4446 閱讀 7750

照例先借下關鍵字們:pku 微機實驗 實驗報告 8253

下面是正文啦~這一課主要講了時鐘和中斷。講時鐘的話非常可以理解,乙個系統要正常工作必須要有乙個統一的時鐘,所以說時鐘在系統中應該是必須的。講了晶元8253,這塊神奇的晶元要有輸入波形,可以計數或者分頻,反正還是挺酷炫的2333輸入的in是在實驗箱上有的乙個1mhz的輸入,然後經過一些處理之後去做一些事情。可以拿來做計數器,數到若干個波形之後out端發乙個訊號出來之類的。然後把out連到8255上,去查8255的埠來判斷8253的out資訊。有沒有超神奇?我第一次弄的時候快被繞暈了qaq

中斷也是挺神奇的,有提到中斷程式這種,我寫的時候就把自己繞暈了qaq後面還會用到中斷控制程式這種神奇的東西,並且它和ics裡面的中斷控制程式差不多難吧qaq想要報警。不過單看這一課的話會好一些吧,大體上還是能弄出來的。所以加油~

講講實驗內容吧。5.3.1書上有了,基本就是預熱熟悉下8253的用法。5.3.2分頻,有點級聯時鐘來分頻的意思,蠻好玩的。要注意下線的連法~ 

code segment

assume cs:code

start:

mov al,00110110b

mov dx,0e483h

out dx,al

mov al,01110110b

mov dx,0e483h

out dx,al

mov dx,0e480h

mov ax,400h

out dx,al

mov al,ah

out dx,al

mov dx,0e481h

mov ax,800h

out dx,al

mov al,ah

out dx,al

nnn: in al,dx

mov ah,1

int 16h

jz nnn

mov ah,4ch

int 21h

code ends

end start

下乙個5.3.3也有了,差不多就是熟悉下中斷。幸運的是老師們已經寫了中斷的樣例程式了,於是我們只要抄抄抄就可以啦~5.3.4在沒寫的時候是**的不知道幹什麼,寫了就感覺是前面的疊加,想清楚了應該就好了~

data segment

hour db 0

minute db 0

second db 0

oldoff dw ?

oldseg dw ?

intflag db ?

data ends

code segment

assume cs:code,ds:data

start: mov ax,data

mov ds,ax

mov al,00110110b

mov dx,0e483h

out dx,al

mov al,01110110b

mov dx,0e483h

out dx,al

mov dx,0e480h

mov ax,1000

out dx,al

mov al,ah

out dx,al

mov dx,0e481h

mov ax,2000

out dx,al

mov al,ah

out dx,al

mov ax,350eh

int 21h

mov oldseg,es

mov oldoff,bx

mov ax,code

mov ds,ax

mov dx,offset irq

mov ax,250eh

int 21h

climov dx,0ec4ch

mov al,43h

out dx,al

inc dx

mov al,1dh

out dx,al

in al,21h

and al,10111111b

out 21h,al

mov ax,data

mov ds,ax

stinext: mov intflag,1

ll: cmp intflag,0

jne ll

loop1: in al,dx

mov ah,1

int 16h

jnz end0

mov al,hour

call disp

mov ah,2

mov dl,20h

int 21h

mov al,minute

call disp

mov ah,2

mov dl,20h

int 21h

mov al,second

call disp

mov ah,2

mov dl,0dh

int 21h

cmp second,0

jnz con

mov bl,200

call beep

con: mov al,second

inc al

daamov second,al

cmp second,60h

jnz next

mov second,0

mov al,minute

inc al

daamov minute,al

;mov bl,200

;call beep

cmp minute,60h

jnz next

mov minute,0

mov al,hour

inc al

daamov hour,al

jmp next

end0: cli

in al,21h

or al,40h

out 21h,al

mov dx,0ec4ch

mov al,42h

out dx,al

mov dx,oldoff

mov ds,oldseg

mov ax,250eh

int 21h

stimov ah,4ch

int 21h

disp proc near

push bx

push cx

mov bl,al

mov cx,2

lloop1: mov al,bl

call disp2

push cx

mov cl,4

shl bx,cl

pop cx

loop lloop1

pop cx

pop bx

ret

disp endp

disp2 proc near

push dx

push cx

and al,0f0h

mov cl,4

shr al,cl

mov dl,al

cmp dl,9

jle num

add dl,7

num: add dl,30h

mov ah,02h

int 21h

pop cx

pop dx

retdisp2 endp

beep proc near

push cx

mov al,10110110b

out 43h,al

mov ax,1190

out 42h,al

mov al,ah

out 42h,al

in al,61h

mov ah,al

or al,03h

out 61h,al

mov cx,0

l0: loop l0

dec bl

jnz l0

mov al,ah

out 61h,al

pop cx

retbeep endp

irq proc far

push ax

push dx

push ds

mov ax,data

mov ds,ax

mov intflag,0

mov al,20h

out 20h,al

mov dx,0ec4dh

mov al,1dh

out dx,al

pop ds

pop dx

pop ax

iret

irq endp

code ends

end start

噫~小姑娘要繼續加油啦~

【順路求看過我部落格的人能說點什麼證明我寫的東西還是有人看的麼謝謝~不然再單機下去我可能會把這裡當成樹洞了qaq

可程式設計定時 計數器應用實驗

了解定時器 計數器 8253 的原理,掌握編制定時器 計數器程式設計方法。設計連線和程式,以1mhz的訊號為時鐘訊號,利用 8253 產生1s的定時控制發光二極體變化。使用者時鐘的1mhz輸出接 8253 的clk1。8253 的gate1接 5v 在實驗箱的左上角和右上角 8253out1接 82...

微機介面 可程式設計定時 計數器8253

資料匯流排d0 d7 rd 和wd 分別是讀寫控制引腳 cs 是片選訊號 a1,a0是片內位址選擇引腳。8253的三個計數通道在結構上和功能上完全一樣,每個通道均有兩個輸入引腳clk和gate,乙個輸出訊號引腳out 計數初值暫存器用來寄存計數初值 計數工作單元為16位減1計數器,它的初值是計數初值...

微機介面 可程式設計定時 計數器8253

資料匯流排d0 d7 rd 和wd 分別是讀寫控制引腳 cs 是片選訊號 a1,a0是片內位址選擇引腳。8253的三個計數通道在結構上和功能上完全一樣,每個通道均有兩個輸入引腳clk和gate,乙個輸出訊號引腳out 計數初值暫存器用來寄存計數初值 計數工作單元為16位減1計數器,它的初值是計數初值...