微机接口习题
① 使计数器1工作在方式0,仅用8位二进制计 数,计数初值为128。
② 使计数器0工作在方式1,按BCD码计数,计 数值为3000。
③ 使计数器2工作在方式2,计数值为02F0H。
习题8.6解答(1)
mov al,50h ;01010000b mov dx,207h out dx,al mov al,128 ;=80h mov dx,205h out dx,al
jz done status:in al,80h ; 查询
test al,80h jnz status mov al,[bx] out 80h,al; 输出一个字节 inc bx jmp again ; 循环
习题8.6
➢试按如下要求分别编写8253的初始化程序, 已知8253的计数器0~2和控制字I/O地址依次 为204H~207H。
next21: out dx,al ; 某个LED点亮 call delay; 延时200ms shr al,1 ; ror al,1 loop next21 jmp again
习题7.8
➢现有一个输入设备,其数据端口地址为 FFE0H,状态端口地址为FFE2H。当状态标 志D0=1时,表明一个字节的输入数据就 绪。请编写利用查询方式进行数据传送的 程序段,要求从该设备读取100个字节保 存到BUFFER缓冲区。
➢解答 修改电路:PA0~PA7改为PB0~PB7;PC6改 用PC2,PC7改用PC1,PC3改用PC0。
习题8.11解答(1)
修改程序: mov dx,0fffeh mov al,84h out dx,al mov al,04h ; 使INTEB(PC2)为0,禁止中断 out dx,al …… mov cx,counter ; 打印字节数送CX mov bx,offset buffer ; 取字符串首地址
习题7.7解答(2)
next1: mov cx,8
mov al,1 ; 从K0开始
next11: out dx,al ; 某个LED点亮
call delay ; 延时200ms
shl al,1
; rol al,1
loop next11
jmp again
习题7.7解答(3)
next2: mov cx,8 mov al,80h; 从K7开始
习题7.9
➢某个字符输出设备,其数据端口和状态端口 的地址均为80H。在读取状态时,当标志位 D7=0时,表明该设备闲,可以接收一个字 符。请编写利用查询方式进行数据传送的程 序段,要求将存放于缓冲区ADDR处的一串字 符(以0为结束标志)输出给该设备。
习题7.9解答
mov bx,offset addr again: cmp byte ptr [bx],0
微机接口技术习题
习题7.7
➢参看图7-5,编程实现以下功能:当K0键单 独按下时,发光二极管L0~L7将依次点亮( L0,L1,L2,……L7),每个维持200ms; 当K1键单独按下时,发光二极管L0~L7将反 向依次点亮(L7,L6,L5,……L0),每个 也维持200ms;在其他情况下各发光二极管 均不点亮。假定有延时200ms的子程序DELAY 可直接调用。
习题7.8解答
mov bx, offset buffer mov cx,100 again: mov dx,0ffe2h status:in al,dx ; 查询一次 test al,01h jz status
mov dx,0ffe0h in al,dx ; 输入一个字节 mov [bx],al inc bx loop again ; 循环,输入100个字节
+5V
8255
2K4Hale Waihona Puke K0PC0K1
PC1
K2
PC2
K3
PC3
+5V
PC4
L0
4300Ω
call prints ; 调用打印子程序
习题8.11解答(2)
prints proc push ax ;保护寄存器 push dx
print1:mov al,[bx] ;取一个数据 mov dx,0fffah out dx,al ;从端口B输出 mov dx,0fffch
print2:in al,dx test al,02h ;检测(PC1)为1否? jz print2 inc bx loop print1 pop dx pop ax ret
习题8.10
➢用8255端口A方式0与打印机接口示例中,如 果改用端口B,其他不变,说明应该如何修 改接口电路和程序。
➢解答: 修改电路:将端口B的PB0~PB7接打印机的数
据位DATA0~DATA7即可。
修改程序:将输出数据端口改为FFFAH即可。
习题8.11
➢用8255端口A方式1与打印机接口,如果改用 端口B,其他不变,说明如何修改接口电路 和程序。
prints endp
习题8.12
➢ 有一工业控制系统,有四个控制点,分别由四个对应的输 入端控制,现用8255的端口C实现该系统的控制,如本题 图形。开关K0~K3打开则对应发光二极管L0~L3亮,表示 系统该控制点运行正常;开关闭合则对应发光二极管不亮 ,说明该控制点出现故障。编写8255的初始化程序和这段 控制程序。
习题8.6解答(2)
mov al,33h ;00110011b mov dx,207h out dx,al mov ax,3000h ;不是3000 mov dx,204h out dx,al mov al,ah out dx,al
习题8.6解答(3)
mov al,0b4h ;10110100b mov dx,207h out dx,al mov al,02f0h mov dx,206h out dx,al mov al,ah out dx,al
习题7.7解答(1)
again: mov dx,8000h in al,dx cmp al,0feh ; D7~D0=11111110B ? jz next1 ; 单独按下K0,转移到next1 cmp al,0fdh ; D7~D0=11111101B ? jz next2 ; 单独按下K1,转移到next2 jmp again ; 其它情况不点亮