提交 8fe2467a 创建 作者: 赵鹏翀's avatar 赵鹏翀

fix asm

上级 ba27f1e5
;8路模拟量的循环数据采集程序
.text
START:
mov al, 0x98 ; 设8255的A,B,C口均为方式0,A口入,B口出,C口高四位入
out 0x83, al
mov dl, 0xb0 ; 8路数据存储空间
mov bl, 0 ; 通道号,初始指向第8路通道
mov cl, 8 ; 共采集8路,每路采集一次
AGAIN:
mov al, bl
out 0x81, al ; 送通道地址到B口
or al, 8 ; 使PB3=1
out 0x81, al ; 送ALE信号(上升沿),锁存通道号
and al, 0xf7 ; 使PB3=0,形成负脉冲START启动信号
out 0x81, al ; 输出START启动信号(下降沿)
nop ; 空操作等待转换
WAITING:
in al, 0x82 ; 读C口的PC7(即EOC)状态
and al, 0x80 ; 保留EOC的状态值
jZ WAITING ; 若EOC=0则等待
mov al, bl ; 若EOC=1,则转换结束,选择通道输出到B口
or al, 0x10 ; 使PB4=1
out 0x81, al ; 当检测到EOC=1时则输出读允许信号OE(=1)
in al, 0x80 ; 由A口读入转换数据
mov [dl], al ; 将转换后的数字量保存到存储区
Inc dl ; 修改存储指针
inc bl ; 修改通道号
mov cl, bl
sub cl, 8
jnz AGAIN ;采集下一路模拟输入量
end:
jmp end ; 8路采集完毕,进入死循环
;8路模拟量的循环数据采集程序
.text
mov al, 0x98 ; 设8255的A,B,C口均为方式0,A口入,B口出,C口高四位入
out 0x83, al
mov dl, 0xb0 ; 8路数据存储空间
mov bl, 0 ; 通道号,初始指向第0路通道IN0
AGAIN:
mov al, bl
out 0x81, al ; 送通道地址到B口
or al, 8 ; 使PB3=1
out 0x81, al ; 送ALE信号(上升沿),锁存通道号
and al, 0xf7 ; 使PB3=0,形成负脉冲START启动信号
out 0x81, al ; 输出START启动信号(下降沿)
nop ; 空操作等待转换
WAITING:
in al, 0x82 ; 读C口的PC7(即EOC)状态
and al, 0x80 ; 保留EOC的状态值
jZ WAITING ; 若EOC=0则等待
mov al, bl ; 若EOC=1,则转换结束,选择通道输出到B口
or al, 0x10 ; 使PB4=1
out 0x81, al ; 当检测到EOC=1时则输出读允许信号OE(=1)
in al, 0x80 ; 由A口读入转换数据
mov [dl], al ; 将转换后的数字量保存到存储区
Inc dl ; 修改存储指针
inc bl ; 修改通道号
mov cl, bl
sub cl, 8
jnz AGAIN ; 采集下一路模拟输入量
end:
jmp end ; 8路采集完毕,进入死循环
没有这种文件类型的预览
0001 ;8路模拟量的循环数据采集程序
0002 .text
0003
0004 START:
0005 10 01 00 98 mov al, 0x98 ; 设8255的A,B,C口均为方式0,A口入,B口出,C口高四位入
0006 13 4E 00 83 out 0x83, al
0007 16 01 03 B0 mov dl, 0xb0 ; 8路数据存储空间
0008 19 01 01 00 mov bl, 0 ; 通道号,初始指向第8路通道
0009 1C 01 02 08 mov cl, 8 ; 共采集8路,每路采集一次
0010
0011 AGAIN:
0012 1F 02 10 mov al, bl
0013 21 4E 00 81 out 0x81, al ; 送通道地址到B口
0014
0015 24 38 00 08 or al, 8 ; 使PB3=1
0016 27 4E 00 81 out 0x81, al ; 送ALE信号(上升沿),锁存通道号
0017
0018 2A 30 00 F7 and al, 0xf7 ; 使PB3=0,形成负脉冲START启动信号
0019 2D 4E 00 81 out 0x81, al ; 输出START启动信号(下降沿)
0020 30 6F nop ; 空操作等待转换
0021
0022 WAITING:
0023 31 4B 00 82 in al, 0x82 ; 读C口的PC7(即EOC)状态
0024 34 30 00 80 and al, 0x80 ; 保留EOC的状态值
0025 37 54 31 jZ WAITING ; 若EOC=0则等待
0026
0027 39 02 10 mov al, bl ; 若EOC=1,则转换结束,选择通道输出到B口
0028 3B 38 00 10 or al, 0x10 ; 使PB4=1
0029 3E 4E 00 81 out 0x81, al ; 当检测到EOC=1时则输出读允许信号OE(=1)
0030
0031 41 4B 00 80 in al, 0x80 ; 由A口读入转换数据
0032 44 05 03 mov [dl], al ; 将转换后的数字量保存到存储区
0033 46 78 03 Inc dl ; 修改存储指针
0034 48 78 01 inc bl ; 修改通道号
0035
0036 4A 02 12 mov cl, bl
0037 4C 1E 02 08 sub cl, 8
0038 4F 55 1F jnz AGAIN ;采集下一路模拟输入量
0039
0040 end:
0041 51 57 51 jmp end ; 8路采集完毕,进入死循环
0042
0043
0001 ;8路模拟量的循环数据采集程序
0002 .text
0003
0004 10 01 00 98 mov al, 0x98 ; 设8255的A,B,C口均为方式0,A口入,B口出,C口高四位入
0005 13 4E 00 83 out 0x83, al
0006 16 01 03 B0 mov dl, 0xb0 ; 8路数据存储空间
0007 19 01 01 00 mov bl, 0 ; 通道号,初始指向第0路通道IN0
0008
0009 AGAIN:
0010 1C 02 10 mov al, bl
0011 1E 4E 00 81 out 0x81, al ; 送通道地址到B口
0012
0013 21 38 00 08 or al, 8 ; 使PB3=1
0014 24 4E 00 81 out 0x81, al ; 送ALE信号(上升沿),锁存通道号
0015
0016 27 30 00 F7 and al, 0xf7 ; 使PB3=0,形成负脉冲START启动信号
0017 2A 4E 00 81 out 0x81, al ; 输出START启动信号(下降沿)
0018 2D 6F nop ; 空操作等待转换
0019
0020 WAITING:
0021 2E 4B 00 82 in al, 0x82 ; 读C口的PC7(即EOC)状态
0022 31 30 00 80 and al, 0x80 ; 保留EOC的状态值
0023 34 54 2E jZ WAITING ; 若EOC=0则等待
0024
0025 36 02 10 mov al, bl ; 若EOC=1,则转换结束,选择通道输出到B口
0026 38 38 00 10 or al, 0x10 ; 使PB4=1
0027 3B 4E 00 81 out 0x81, al ; 当检测到EOC=1时则输出读允许信号OE(=1)
0028
0029 3E 4B 00 80 in al, 0x80 ; 由A口读入转换数据
0030 41 05 03 mov [dl], al ; 将转换后的数字量保存到存储区
0031 43 78 03 Inc dl ; 修改存储指针
0032 45 78 01 inc bl ; 修改通道号
0033
0034 47 02 12 mov cl, bl
0035 49 1E 02 08 sub cl, 8
0036 4C 55 1C jnz AGAIN ; 采集下一路模拟输入量
0037
0038 end:
0039 4E 57 4E jmp end ; 8路采集完毕,进入死循环
0040
0041
没有这种文件类型的预览
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论