
prot1 equ 0d101h
pctrl equ 0d103h
data ends
code segment
assume cs:code
start:
mov ax,data
mov ds,ax
mov al,76h 控制字01,11,011,0 通道1,方式3,二进制
mov dx,pctrl
out dx,al
mov dx,prot1
out dx,al
mov al,ah
out dx,al
mov ah,4ch
int 21h
code ends
end start
#include<reg51.h>main()
{
unsigned char data *ptr
ptr=0x03
*ptr=0x10
ptr=0x00
*ptr=0x03
while(1)
}
data segmentioport 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
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)