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

fix asm

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