液体点滴速度监控装置的设计 联系客服

发布时间 : 星期一 文章液体点滴速度监控装置的设计更新完毕开始阅读

个人收集整理 仅做学习参考

图11 图12

3、源程序:

时间基准缓冲区:秒55h 0.01秒56h 键盘设置缓冲区:秒57h 0.01秒58h

传感测量缓冲区:前次—秒51h 0.01秒52h 当前—秒53h 0.01秒54h 差值—秒4fh 0.01秒50h

文档收集自网络,仅用于个人学习 最终显示缓冲区:选择值:54h测定值5ah 5bh 5ch 设置值 5dh 5eh 5fh R4用于步进电机地步进记忆

org 0000h mov 5eh,#00h ajmp main mov 5fh,#00h org 0003h mov r7,#00h ajmp jpint ;int0 setb f0 org 000bh clr p2.1 ajmp times ;t0 mov tmod,#01h ;T0为工作方式0 org 0013h mov tl0,#0f0h ;计数器初值 ajmp cgint ;int1 mov th0,#0d8h org 0040h mov ie,#87h ;中断设置,除T1,ES外main:mov sp,#60h ;设置堆栈 全开中断 mov 41h,#00h mov ip,#02h ;中断优先级 mov 42h,#00h setb it0 mov 43h,#00h setb it1 ;脉冲触发方式 mov 44h,#00h setb tr0 ;启动定时 mov 45h,#00h setb p1.4 mov 46h,#00h disp:acall disp0 ;调用显示子程序 mov 47h,#00h ajmp disp mov 48h,#00h mov 4fh,#00h disp0: mov 50h,#00h push acc mov 51h,#00h mov dptr,#table mov 52h,#00h mov 53h,#00h jnb f0,disp1 mov 54h,#00h ;初值设置 mov a,54h ;选择值显示 mov 55h,#00h cjne a,#01h,zzz1

movc a,@a+dptr mov 56h,#00h ;以上为时间初值

mov 54h,#00h mov sbuf,a

jnb ti,$ mov 57h,#00h ;初值显示为00

mov 58h,#00h clr ti mov 59h,#00h mov a,#0ffh mov 5ah,#00h mov sbuf,a mov 5bh,#00h jnb ti,$ mov 5ch,#00h clr ti mov 5dh,#00h acall dealy

9 / 18

个人收集整理 仅做学习参考

ajmp disp1

zzz1:cjne a,#02h,zzz2 movc a,@a+dptr mov sbuf,a jnb ti,$ clr ti

mov a,#0ffh mov sbuf,a jnb ti,$ clr ti

acall dealy ajmp disp1

zzz2:cjne a,#03h,zzz3 movc a,@a+dptr mov sbuf,a jnb ti,$ clr ti

mov a,#0ffh mov sbuf,a jnb ti,$ clr ti

acall dealy ajmp disp1

zzz3:mov 54h,#00h

disp1:mov a,5ah cjne a,#00h,disp2 ajmp disp3

disp2:cjne a,#01h,disp4disp3:movc a,@a+dptr mov sbuf,a jnb ti,$ clr ti

mov a,#0feh mov sbuf,a jnb ti,$ clr ti

acall dealy

disp4:mov a,5bh movc a,@a+dptr mov sbuf,a jnb ti,$ clr ti

mov a,#0fdh mov sbuf,a jnb ti,$ clr ti

acall dealy

mov a,5ch

movc a,@a+dptr mov sbuf,a jnb ti,$ clr ti

mov a,#0fbh mov sbuf,a jnb ti,$ clr ti acall dealy

mov a,5dh movc a,@a+dptr mov sbuf,a jnb ti,$ clr ti

mov a,#0dfh mov sbuf,a ;测定值显示 jnb ti,$ clr ti acall dealy

mov a,5eh

movc a,@a+dptr mov sbuf,a jnb ti,$ clr ti

mov a,#0bfh mov sbuf,a jnb ti,$ clr ti acall dealy

mov a,5fh

movc a,@a+dptr mov sbuf,a jnb ti,$ 10 / 18

;设置值显示 个人收集整理 仅做学习参考

clr ti

mov a,#7fh mov sbuf,a jnb ti,$ clr ti

acall dealy pop acc ret

dealy:

mov r0,#0fah lll: nop nop

djnz r0,lll ret

table:db 03h db 9fh db 25h db 0dh db 99h db 49h db 41h db 1fh db 01h db 09h

jpint: push acc push 07h mov r2,#0ah zzz:acall dealy djnz r2,zzz

jb p1.0,x2 inc 54h clr ex1 setb f0 mov a,54h cjne a,#04h,x1 mov 54h,#01h x1:ajmp ret0

x2:jb p1.1,x3 mov a,54h cjne a,#00h,lll1;键盘控制子程序 ;选择键子程序 ;加1键子程序ajmp ret0

lll1:cjne a,#01h,lll2 inc 5fh mov a,5fh

cjne a,#0ah,zhongju mov 5fh,#00h ajmp ret0

lll2:cjne a,#02h,lll3 inc 5eh mov a,5eh cjne a,#0ah,ret0 mov 5eh,#00h ajmp ret0 lll3:inc 5dh mov a,5dh cjne a,#0ah,ret0 mov 5dh,#00h ajmp ret0

x3:jb p1.2,x4 ;减1键子程序mov a,54h cjne a,#00h,llll1 ajmp ret0

llll1:cjne a,#01h,llll2 dec 5fh mov a,5fh

cjne a,#0ffh,ret0 mov 5fh,#09h ajmp ret0

zhongju:ajmp ret0 llll2:cjne a,#02h,llll3 dec 5eh mov a,5eh

cjne a,#0ffh,ret0 mov 5eh,#09h ajmp ret0 llll3:dec 5dh mov a,5dh

cjne a,#0ffh,ret0 mov 5dh,#09h ajmp ret0

x4:jb p1.3,x5 ;确定键子程序 clr f0

acall enter ;因指令而修改 ret01: ;对整数进行修正 11 / 18

个人收集整理 仅做学习参考

mov a,r7 cjne a,#14,ccc1

mov 57h,#03h ;为20置3 setb ex1 ajmp ret0

ccc1:cjne a,#1eh,ccc2

mov 57h,#02h ;为30置2 setb ex1 ajmp ret0

ccc2:cjne a,#3ch,ret02

mov 57h,#01h ;为60置1 setb ex1 ajmp ret0

x5:jb p2.0,ret0 ;报警监测 setb p2.1 ;送报警声音 ajmp ret0 ret02:setb ex1 ret0:pop acc pop 07h reti enter:

mov 54h,#00h clr c

mov a,5dh ;求时间段程序 mov b,#64h ;百位数 mul ab mov r7,a mov a,5eh

mov b,#0ah ;十位数 mul ab add a,r7 mov r7,a mov a,5fh add a,r7

mov r7,a ;此时r7中为设定值 clr c

subb a,#14h ;查表前减20

mov dptr,#table1 ;由数值查时间段表movc a,@a+dptr mov 58h,a ret

times: ;时间设置 push acc

mov tl0,#0f0h

mov th0,#0d8h setb tr0 inc 56h mov a,56h

cjne a,#64h,quit0 mov 56h,#00h inc 55h

quit0:pop acc reti

cgint: ;传感测量 mov r2,#0ah zzzz:acall dealy djnz r2,zzzz jnb p3.3,cgint1 reti

cgint1:push acc push 03h push 04h push 05h push 06h inc r7

cjne r7,#0ah,zhongju1 mov r7,#00h

mov a,53h ;数值转移 mov 51h,a mov a,54h mov 52h,a

mov a,55h ;读取当前时间 mov 53h,a mov a,56h mov 54h,a

clr c ;求10个脉冲差值子程序mov 47h,#00h ;10差值寄存区 mov 48h,#00h mov a,53h subb a,51h mov 47h,a clr c

mov a,54h subb a,52h

jnc zero ;如果当前值大就跳转 dec 47h clr c 12 / 18