📄 ex8-9.asm
字号:
ORG 0000H
START: LJMP MAIN
ORG 0003H
LJMP PINT1
ORG 0030H
;********************* 主程序*************************
MAIN: MOV P0,#0FFH
MOV SP,#70H
MOV 20H,#00H ;内存单元清0H
MOV 21H,#00H
MOV 22H,#00H
MOV TCON,#01H ;设置外部中断边沿触发方式
MOV IE,#81H ;开中断
WDIN: JBC PSW.5,TRAN ;查询等待ICL7135完成一次A/D转换的结果标志
AJMP WDIN
TRAN: MOV A,20H ;将A/D转换结果BCD数据通过8051I/O端口进行显示
JNB ACC.6,UN
MOV P1,#0FFH
MOV P2,#0FFH
ORL P3,#0F0H
SJMP WDIN
UN: JNB ACC.5,RT
MOV P1,#00H
MOV P2,#00H
ANL P3,#0FH
SJMP WDIN
RT: JB ACC.7,PG
NG: SETB P3.3
SJMP DP
PG: CLR P3.3
DP: SWAP A
ANL A,#0F0H
ANL P3,#0FH
ORL P3,A
MOV A,21H
MOV P1,A
MOV A,22H
MOV P2,A
SJMP WDIN
;************************* ICL7135中断服务程序 ***********************************
PINT1: MOV IE,#00 ;关中断
MOV A,P0 ;读取8051的P0口,获得A/D转换结果的万位数据
MOV R2,A ;
ANL A,#0F0H
JNZ PRI ;D5=0,返回
MOV R1,#20H
MOV A,R2
ANL A,#01H
XCHD A,@R1
MOV A,R2
ANL A,#0EH
SWAP A
XCHD A,@R1
MOV @R1,A
INC R1
WD4: MOV A,P0 ;读取8051的P0口,获得A/D转换结果的千位数据
JNB ACC.7,WD4
SWAP A
MOV @R1,A ;千位数据送(21H).4-7
WD3: MOV A,P0 ;读取8051的P0口,获得A/D转换结果的百位数据
JNB ACC.6,WD3
XCHD A,@R1 ;千位数据送(21H).0-3
INC R1
WD2: MOV A,P0 ;读取8051的P0口,获得A/D转换结果的十位数据
JNB ACC.5,WD2
SWAP A
MOV @R1,A ;十位数据送(22H).4-7
WD1: MOV A,P0 ;读取8051的P0口,获得A/D转换结果的个位数据
JNB ACC.4,WD1
XCHD A,@R1 ;个位数据送(22H).0-3
SETB PSW.5 ;设置一次A/D转换结果读出标志
PRI: MOV IE,#81H ;开中断
RETI ;中断返回
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -