📄 my.asm
字号:
;************************;
;八路模拟数据采集显示电路;
; ;
;************************;
;
;70H-77H存放采样值,78H-7BH存放显示数据,依次为个位、十位、百位、通道标志
;
;*************************************
;* *
;* 主程序和中断程序入口 *
;* *
;*************************************
xa bit p2.0
xb bit p2.1
xc bit p2.2
ale bit p2.3
st bit p2.4
oe bit p2.5
eoc bit p3.7
lamp bit p3.5
speak bit p3.6
org 00h
ljmp main
main: mov a,#00h
mov p2,a
mov a,#0ffh
mov p1,a
mov p3,a
mov p0,a
mov 70h,#00h
mov 78h,#00h
mov 79h,#00h
mov 7ah,#00h
mov 7bh,#00h
start:;clr xc
;setb xb
;setb xa
MOV P2,#00h ;清P2口
;call bcd
;call display
wait: call testst ;启动A/D
wait1:jb eoc,movd1 ;=1转换结束
;call bcd
;call display
jmp wait1
movd1:call movd
call bcd
;call gogo
mov r3,#20
dis: call display
call display
djnz r3, dis
jmp wait
testst:
setb ale
nop
nop
;clr xc
;setb xb
;setb xa
clr ale
;clr st
;nop
;nop
setb st
nop
nop
clr st
nop
nop
nop
ret
movd: setb oe
mov 70h,p0
clr oe
RET
bcd:
mov a,70h
mov b,#100
div ab
mov 7ah,a
mov a,#10
xch a,b
div ab
mov 79h,a
mov 78h,b
mov 7bh,#03h
ret
DISPLAY: MOV R1,#78H ;赋显示数据单元首址
MOV R5,#0FEH ;扫描字
PLAY: MOV P1,#0FFH ;关显示
MOV A,R5 ;取扫描字
ANL P3,A ;开显示
MOV A,@R1 ;取显示数据
MOV DPTR,#TAB ;取段码表首址
MOVC A,@A+DPTR ;查显示数据对应段码
MOV P1,A ;段码放入P1口
LCALL delay0 ;显示1MS
INC R1 ;指向下一地址
MOV A,P3 ;取P3口扫描字
JNB ACC.3,ENDOUT ;四位显示完转ENDOUT结束
RL A ;扫描字循环左移
MOV R5,A ;扫描字放入R5暂存
MOV P3,#0FFH ;显示暂停
AJMP PLAY ;转PLAY循环
ENDOUT: mov p3,#0ffh
;mov a,p3
;mov r0,#0fh
;xchd a,@r0
;mov p3,a
MOV P1,#0FFH ;
RET ;子程序返回
;LED数码显示管用共阳段码表,分别对应0-9,最后一个是"熄灭符"
TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH
; 1MS延时子程序,LED显示用
DL1MS: MOV R4,#14H ;
DL1: MOV R3,#19H
DL2: DJNZ R3,DL2
DJNZ R4,DL1
RET
delay0:mov r6,#20 ;1ms
x1:mov r7,#18
x2:djnz r7,x2
djnz r6,x1
ret
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -