$include(reg96.asm)<br />outbit equ 0e101h<br />clk164 equ 0e102h<br />dat164 equ 0e102h<br />in equ 0e103h<br />ad equ 0a000h<br />ledbuf equ 60h<br />time equ 40h:byte<br />shift equ 42h:byte<br />val equ 43h:byte<br /> cseg at 2080h<br /> di<br /> ld sp,#00c0h<br /> ld ax,#0e100h<br /> ldb 50h,#3<br /> stb 50h,[ax]<br /> ld bx,#ledbuf ;设置显示缓冲区<br /> ldb 50h,#0h<br /> stb 50h,[bx]+<br /> ldb 50h, #8<br /> stb 50h,[bl]+<br /> ldb 50h,#0<br /> stb 50h,[bl]+<br /> ldb 50h,#9<br /> stb 50h,[bl]+<br /> ldb 50h,#10h<br /> stb 50h,[bx]+<br /> stb 50h,[bx]+ ;显示"0809 "<br />mloop: lcall displed ;显示<br /> lcall delay<br /> lcall delay<br /> lcall ad_con ;调用A/D<br /> ldb al,val<br /> andb al,#0f0h ;拆字<br /> shrb al,#4<br /> ldb 64h,al<br /> ldb al,val<br /> andb al,#0fh<br /> ldb 65h,al<br /> ljmp mloop<br /><br />ad_con: ld dx,#0a000h ;启动ADC0809<br /> ldb 50h,#0h<br /> stb 50h,[dx]<br /> ldb 50h,#0ffh<br /> djnz 50h,$<br /> ldb val,[dx] ;读AD结果<br /> ret<br />delay: ld time,#8000h<br /> djnz time,$<br /> ret<br />tt: ld time,#100<br /> djnz time,$<br /> ret<br />displed:ld ax,#ledbuf<br /> ldb cl,#6h<br /> ldb shift,#20h<br />loop0: ld dx,#outbit<br /> ldb 50h,#0h<br /> stb 50h,[dx]<br /> ldb bl,[ax]+<br /> ldbze dx,bl<br /> ldb bl,disptab[dx]<br /> ldb ch,#8h<br />dpl: shlb bl,#1<br /> jnc ad1<br /> ldb val,#0fdh<br /> ljmp ad2<br />ad1: ldb val,#0fch<br />ad2: ld dx,#dat164<br /> stb val,[dx]<br /> ld dx,#clk164<br /> orb val,#2<br /> stb val,[dx]<br /> nop<br /> nop<br /> andb val,#0fdh<br /> stb val,[dx]<br /> nop<br /> nop<br /> djnz ch,dpl<br /> ld dx,#outbit<br /> stb shift,[dx]<br /> shrb shift,#1<br /> lcall tt<br /> ldb 50h,#0h<br /> stb 50h,[dx]<br /> djnz cl,loop0<br /> ret<br />disptab:dcb 3fh,06h,5bh,4fh,66h,6dh,7dh,07h<br /> dcb 7fh,6fh,77h,7ch,39h,5eh,79h,71h,0<br /> end<br /><br /><br /><br /><br /><br /><br /><br /><br /> |
|