照例先借下關鍵字們: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計數器,它的初值是計數初值...