发声频率 发声时间
sog_f sog_t
dw 330, 330, 330, 392, 330, 330, 294, 262, 220, 262, 294, 330, 0 dw 20, 20, 20, 20, 40, 20, 20, 20, 20, 20, 20, 80, 0
ቤተ መጻሕፍቲ ባይዱ
Stack
Stack Data Sog_f Sog_t Data Code
① 用BIOS功能调用 INT 1AH;(由于8253计数器0 55ms申请一次中断,所以 此方法实现不了任意时间的延时)。
② 改变 8253 计数器0 的计数初值,使其可以以任意时间申请中断;(太复杂)。
③ 延时子程序 ;
综上所述,我们得到了使喇叭发声的频率和时间,因此,就可以控制喇叭发声了。
下面我们看一个喇叭发声过程子程序。 声音频率在 di 寄存器中;发声时间在bx中(几个10ms)。 Sound proc far push ax push dx push di push bx push cx mov al, 0b6h
A1 0 0 1 1 A0 0 1 0 1 CS 0 0 0 0 端口 端口A 端口B 端口C 控制字寄存器
3. 8255A的端口的工作过程
(1) 方式 0
方式 0 是一种基本的输入或输出方式。
• 三个端口的每一个都可由程序选定作为输出或输入; • 没有固定的用于应答的联络信号。
故方式 0 : • 可用于无条件传送的接口电路;
segment
db 100 dup(?) ends segment dw 330, 330, 330, 392, 330, 330, 294, 262, 220, 262, 294, 330, 0 dw 20, 20, 20, 20, 40, 20, 20, 20, 20, 20, 20, 80, 0 ends segment assume cs:code, ds: data, ss: stack