例2无条件输出:编程控制系统板上扬声器发声。76.532扬声器控制电路图61H端口0放大器与扬声器8253控制其它外设门发声原理:向扬声器发送一串脉冲信号,推动扬声器内纸盆振动,发出声音脉冲的频率,控制音高;个数脉冲的个数,控制音长?
例2 无条件输出 : 编程控制系统板上扬声器发声。 7 6 5 4 3 2 1 0 61H 端口 8253 与 门 放 大 器 扬 声 器 0 1 控制其它外设 扬声器控制电路图: T 个数 发声原理: 向扬声器发送一串脉冲信号, 推动扬声器内纸盆振动,发出声音 脉冲的频率,控制音高; 脉冲的个数,控制音长
扬声器控制电路图:61H端口0放大器与门扬声器8253控制其它外设编程方法:1.使61H端口的0位输出0,控制8253输出1。2.使61H端口的1位按所需频率交替输出0和1产生所需的声音
1. 使61H端口的0位输出0,控制8253输出1。 2. 使61H端口的1位按所需频率交替输出0和1, 产生所需的声音。 编程方法: 7 6 5 4 3 2 1 0 61H 端口 8253 与 门 放 大 器 扬 声 器 0 1 控制其它外设 扬声器控制电路图:
61H端口发声程序:0放大器8253与扬声器控制其它外设codeSEGMENT门ASSUMECS:codeMOVBX. 3000Hstart:控制脉冲个数MOVDX. 6000H:控制脉冲周期INAL. 61H:读入61H端口数据ANDAL, 1111 1110b;D0为0,8253输出1XORAL,sound:00000010bOUT61H, AL;61H端口的D1交替为0和1MOVCX, DX;延时delay:LOOPdelayDECBX;控制脉冲数JNZsoundMOVAH,4CH21HINTENDScodeL个数-ENDstart
code SEGMENT ASSUME CS:code start: MOV BX, 3000H ;控制脉冲个数 MOV DX, 6000H ;控制脉冲周期 IN AL, 61H ;读入61H端口数据 AND AL, 1111 1110b ;D0为0,8253输出1 sound: XOR AL, 0000 0010b OUT 61H, AL ; 61H端口的D1交替为0和1 MOV CX, DX delay: LOOP delay ;延时 DEC BX ;控制脉冲数 JNZ sound MOV AH, 4CH INT 21H code ENDS END start 发声程序: 61H 端口 8253 与 门 放 大 器 扬 声 器 0 1 控制其它外设 T 个数
思考:将发声程序改编为一子程:入口参数控制音长BXDX控制音高
将发声程序改编为一子程: 入口参数 BX 控制音长 DX 控制音高 思考:
二、条件传送方式(查询传送方式)实现方法:在与外设进行传送数据前,CPU先查询外设状态,当外设准备好后,才执行I/O指令,实现数据传送特点:1.CPU通过不断查询外设状态,实现与外设的速度匹配2.CPU的工作效率低
二、条件传送方式(查询传送方式) 实现方法: 在与外设进行传送数据前,CPU先查询外设状态, 当外设准备好后,才执行I/O指令,实现数据传送 特点: 1. CPU通过不断查询外设状态,实现与外设的速度匹配 2. CPU的工作效率低