7-1
选用方式0,时钟频率2MHz,脉冲周期要求为1ms,所以
计数值 n=2×106/1×103=2000=07D0H
初始化程序如下:
MOVDX, PORTC ;控制端口
MOVAL, ;计数器0,方式2,二进制计数,送16位计数值
OUTDX
MOVDX, PORT0 ;计数器0
MOVAL, 0D0H ;计数值的低8位
OUTDX
MOVAL, 07H ;计数值的高8位
OUTDX
若要求8253的地址为80~83H,则
A15 A14 A
0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0
G1 Y0
G1 Y0
G2A
G2B
C
B
A
74LS138
+
+
+
+
7-5
选择通道0产生10ms的定时信号(方式2),通道1产生方波(方式3),方波的频率的改变通过在中断服务程序中修改计数值实现。
时钟频率2MHz,所以通道0计数初值 n=2×106/1×102 =20000=4E20H。
通道1的计数值分别为4, 10, 20, 40, 100, 200, 400, 1000, 2000.
放在一个字表中 TABLE: DW 4, 10, …
8253初始化程序:
MOV DX, 2C3H
MOV AL, ;通道0,方式2
OUTDX
MOVDX, 2C0H
MOVAL, 20H
OUTDX
MOVAL, 4EH
OUTDX
MOVDX, 2C3H
MOVAL, ;通道1,方式3
OUTDX
MOVDX, 2C1H
MOVBX,0
MOVAX, TABLE[BX] ;取计数值(表中第一个值)
OUTDX
MOVAL, AH
OUTDX
中断服务子程序(执行部分):
INCBX
CMP BX, 8 ;已到计数值的最后一个,下次又从第一个开始
JNZNEXT1
MOVBX, 0
NEXT1:MOVAX, TABLE[BX]
MOVDX, 2C1H
OUTDX
MOVAL, AH
OUTDX
7-9
8255的C口的上半部分用于输入(PC7接微型导线),下半部分用于输出(PC0接喇叭)。
初始化:
MOVDX, 8255CTL
MOVAL, 1×××1××0B ;仅对C口的输入输出设置
OUTDX
当微型导线被碰断后,进入中断,中断服务程序(执行部分)如下:
MOVDX, 8255C
MOVCX, 20
NEXT:MOVAL, 0×××0000B ;对PC0复位
OUTDX
CALLDELAY
MOVAL, 0×××0001B ;对PC0置位
OUTDX
LOOPNEXT
7-11
8255的A口输出,B口输入,均工作在方式0。
初始化程序如下:
MOVDX, 8255CTL
MOVAL, 1000×01×B
OUTDX
MOVDX, 8255A
MOVAL, 0FFH ;A口输出1,则无电流
OUTDX
检测控制程序如下:
MOVDX, 8255B
INAL, DX
NOTAL ;开关闭合,B口线为1,A口相应线应送0
MOVDX, 8255A
OUTDX
7-17
硬件连接图同P329图7-78(a),实现对8个模拟通道进行一次采集,结果存放在数组BUF中。
MOV BX,OFFSET BUF
MOV CX,08H
MOV AH,00H
LP1: MOV AL,AH ;AH中的低三位表示通道号
MOV DX,200H
OUT DX,AL ;选择通道并启动转换
MOV DX, 202H
WAIT:IN AL,DX ;查询等待转换结束
TEST AL,01H
JZ WAIT
MOV DX,201H ;读取转换结果
IN AL,DX
MOV [BX],AL ;存入内存
INC BX
INC AH
微型计算机原理及应用吴宁课后答案 微机原理及应用(吴宁) 习题答案chapter7(4页)-原创力文档...