當前位置:編程學習大全網 - 編程語言 - 用8253怎樣編程讓led燈壹秒閃壹次

用8253怎樣編程讓led燈壹秒閃壹次

data segment

ioport equ 0ff00h - 0280h

io8253a equ ioport + 280h ;counter 0 address

io8253b equ ioport + 281h ;counter 1 address

io8253c equ ioport + 282h ;counter 2 address

io8253d equ ioport + 283h ;8253控制端

ts db 'press 1,lamb on once,press 2,lamb on twice,press 3 ,lamb on third,press q quit',0dh,0ah,'$'

ts1 db 'over',0ah,0dh,'$'

data ends

code segment

assume cs: code,ds:data

start:

mov ax,data

mov ds,ax

lea dx,ts

mov ah,9

int 21h ;輸出提示1

zl: mov ah,01h

int 21h ;輸入取值

cmp al,31h

jz l ;如果為1,調到L

cmp al,32h

jz lec ;如果為2,跳到lec

cmp al,33h

jz ls ;如果為3,跳到ls

cmp al,71h

jz over ;如果為q,跳入jieshu

jmp zl

l: mov dx,io8253d

mov al,30h

out dx,al ;定義控制字段,使用計數器0,方式0

mov dx,io8253a

mov al,0aah

out dx,al

out dx,al ;計數器0送初值0aaaah

jmp zl

lec: mov dx,io8253d

mov al,70h

out dx,al ;定義控制字段,使用計數器0,方式0

mov dx,io8253b

mov al,0aah

out dx,al ;計數器1初值0aaaah

out dx,al

mov cx,0ffffh

wait3: mov bx,2000h

wait4: dec bx

jnz wait4

loop wait3 ;輸出延時循環,將閃爍兩次

mov dx, IO8253B

mov al, 0AAH

out dx, al

out dx, al ;再次給計數器1送入計數初值0AAAAH

jmp zl

LS: mov dx, IO8253D

mov al, 0B0H

out dx, al ;定義控制字,使用計數器2,方式0

mov dx, IO8253C

mov al, 0AAH

out dx, al

out dx, al ;給計數器2送入初值0AAAAH

mov cx, 0FFFFH

wait1: mov bx, 2000h

wait2: dec bx

jnz wait2

loop wait1 ;輸出延時循環,將閃爍兩次分時

mov al, 0AAH

mov dx, IO8253C

out dx, al

out dx, al ;再次給計數器2送入初值0AAAAH

mov cx, 0FFFFH

wait11:mov bx, 2000H

wait22:dec bx

jnz wait22

loop wait11 ;輸出延時循環,將閃爍兩次分時

mov dx, IO8253C

mov al, 0AAH

out dx, al

out dx, al ;再次給計數器2送入初值0AAAAH

jmp zl

over: lea dx, ts1

mov ah, 9

int 21H

mov ah, 4CH

int 21H

code ends

end start

  • 上一篇:河南餐企成為“香餑餑”:有頭有臉的風投全都來了
  • 下一篇:《邊城》的故事發生在哪裏?
  • copyright 2024編程學習大全網