;程序說明
;所用RAM內(nèi)存單元說明:
; 個 十 百 千 - L/P
;P|50 |51 |52 |53 |54 |55 |56 |57 |58 |59 |5A |5B |5C |5D |5E |5F |
;L|60 |61 |62 |63 |64 |65 | | | | | | | | | | |
; |十進(jìn)制區(qū) |LED碼 |計(jì)數(shù)區(qū)(56~59 |
;5A:存放當(dāng)前狀態(tài)(55或65);5B:存放當(dāng)前閃爍段(50~53或60~63)
;5C:計(jì)數(shù)1 5D:計(jì)數(shù)2
;按鈕組:
; P3.0(左移) P3.1(右移) P3.2(加1) P3.3(減1)
; P3.4(狀態(tài)切換) P3.5(啟動/停止)
;顯示數(shù)碼管:(6段 共陽極)
;P0.0~P0.7(A~DP) P2.0~P2.5(COM1~COM6)
;程序源碼開始處:
org 0000h
jmp start
org 30h
start:
;初始化數(shù)據(jù)
MOV 50H,#8H
MOV 51H,#1H
MOV 52H,#8H
MOV 53H,#0H
MOV 54H,#0BFH
MOV 55H,#47H
MOV 60H,#9H
MOV 61H,#9H
MOV 62H,#9H
MOV 63H,#9H
MOV 64H,#0BFH
MOV 65H,#0CH
MOV 5AH,#55H
MOV 5BH,#50H
MOV 5CH,#50h
MOV 5DH,#30h
;初始化電機(jī)端口
mov p1,#0ffh
mov 70h,#25
;初始化按鈕端口
setb p3.0
setb p3.1
setb p3.2
setb p3.3
setb p3.4
setb p3.5
clr p2.0
clr p2.1
clr p2.2
clr p2.3
clr p2.4
clr p2.5
setb p2.6
;按鍵掃描子程
zc_key:
key_p30:lcall zc_xs
jb p3.0,key_p31
lcall zc_xsys
jb p3.0,key_p31
mov a,5bh
anL a,#00001111b ;取低4位
cjne a,#3h,key_l
jmp key_p31
key_l:
inc 5bh
mov 5ch,#50
mov 5dh,#50
key_p31:lcall zc_xs
jb p3.1,key_p32
lcall zc_xsys
jb p3.1,key_p32
mov a,5bh
anL a,#00001111b
cjne a,#0h,key_r
jmp key_p32
key_r:
dec 5bh
mov 5ch,#50
mov 5dh,#50
key_p32:lcall zc_xs
jb p3.2,key_p33
lcall zc_xsys
jb p3.2,key_p33
mov r0,5bh
mov a,@r0
cjne a,#9,key_inc
jmp key_p33
key_inc:
inc @r0
key_p33:lcall zc_xs
lcall zc_xsys
jb p3.3,key_p34
lcall zc_xsys
jb p3.3,key_p34
mov r0,5bh
mov a,@r0
cjne a,#0,key_dec
jmp key_p34
key_dec:
dec @r0
key_p34:lcall zc_xs
lcall zc_xsys
jb p3.4,key_p35
lcall zc_xsys
jb p3.4,key_p35
jnb p3.4,$
mov a,5ah
cjne a,#55h,key_zh
mov 5ah,#65h
mov 5bh,#60h
jmp key_p35
key_zh:mov 5ah,#55h
mov 5bh,#50h
key_p35:lcall zc_xs
jb p3.5,key_ret
lcall zc_xsys
jb p3.5,key_ret
jnb p3.5,$
mov 5ah,#65h ;到根數(shù)計(jì)數(shù)狀態(tài)
mov 5bh,#60h
mov 56h,50h
mov 57h,51h
mov 58h,52h
mov 59h,53h
lcall zc_motor
key_ret:
jmp key_p30
;顯示掃描子程
zc_xs:
mov dptr,#TABLE
led_x5:
mov r0,5ah
setb p2.5
mov p0,@r0
lcall zc_ys
clr p2.5
led_x4:
dec r0
setb p2.4
mov p0,@r0
lcall zc_ys
clr p2.4
led_x3:
dec r0
mov a,5bh
anl a,#00001111b
cjne a,#3,$+9
djnz 5ch,led_x2
lcall zzc_dec5d
setb p2.3
mov a,@r0
movc a,@a+dptr
mov p0,a
lcall zc_ys
clr p2.3
led_x2:
dec r0
mov a,5bh
anl a,#00001111b
cjne a,#2,$+9
djnz 5ch,led_x1
lcall zzc_dec5d
setb p2.2
mov a,@r0
movc a,@a+dptr
mov p0,a
lcall zc_ys
clr p2.2
led_x1:
dec r0
mov a,5bh
anl a,#00001111b
cjne a,#1,$+9
djnz 5ch,led_x0
lcall zzc_dec5d
setb p2.1
mov a,@r0
movc a,@a+dptr
mov p0,a
lcall zc_ys
clr p2.1
led_x0:
dec r0
mov a,5bh
anl a,#00001111b
cjne a,#0,$+9
djnz 5ch,led_ret
lcall zzc_dec5d
setb p2.0
mov a,@r0
movc a,@a+dptr
mov p0,a
lcall zc_ys
clr p2.0
led_ret:ret
zzc_dec5d:
djnz 5d,der5d_ret
mov 5ch,#50h
mov 5dh,#30h
der5d_ret:
inc 5ch
ret
;長度計(jì)數(shù)子程
zc_leng:
mov 5ch,#1
mov 5dh,#1
lcall zc_xs
mov a,56h
jz leng_57h
dec 56h
ret
leng_57h:
mov a,57h
jz leng_58h
dec 57h
mov 56h,#9
ret
leng_58h:
mov a,58h
jz leng_59h
dec 58h
mov 56h,#9
mov 57h,#9
ret
leng_59h:
mov a,59h
jz leng_0
dec 59h
mov 56h,#9
mov 57h,#9
mov 58h,#9
ret
leng_0:
mov p1,#0ffh
mov 56h,50h
mov 57h,51h
mov 58h,52h
mov 59h,53h
clr p2.6
lcall zc_root
lcall zc_xsys
lcall zc_xsys
lcall zc_xsys
lcall zc_xsys
lcall zc_xsys
lcall zc_xsys
lcall zc_xsys
lcall zc_xsys
lcall zc_xsys
lcall zc_xsys
lcall zc_xsys
lcall zc_xsys
lcall zc_xsys
lcall zc_xsys
lcall zc_xsys
lcall zc_root
lcall zc_xsys
lcall zc_xsys
lcall zc_xsys
lcall zc_xsys
lcall zc_xsys
lcall zc_xsys
lcall zc_xsys
lcall zc_xsys
lcall zc_xsys
lcall zc_xsys
lcall zc_xsys
lcall zc_xsys
lcall zc_xsys
lcall zc_xsys
lcall zc_xsys
lcall zc_xsys
lcall zc_xsys
lcall zc_xsys
lcall zc_xsys
lcall zc_xsys
lcall zc_xsys
lcall zc_xsys
lcall zc_xsys
lcall zc_xsys
lcall zc_xsys
lcall zc_root
lcall zc_xsys
lcall zc_xsys
lcall zc_xsys
lcall zc_xsys
lcall zc_xsys
lcall zc_xsys
lcall zc_xsys
lcall zc_xsys
lcall zc_xsys
lcall zc_xsys
lcall zc_xsys
lcall zc_xsys
lcall zc_xsys
lcall zc_xsys
lcall zc_xsys
setb p2.6
lcall zc_xsys
ret
;根數(shù)計(jì)數(shù)子程
zc_root:
lcall zc_xs
mov a,60h
jz root_61h
dec 60h
ret
root_61h:
lcall zc_xs
mov a,61h
jz root_62h
dec 61h
mov 60h,#9
ret
root_62h:
lcall zc_xs
mov a,62h
jz root_63h
dec 62h
mov 60h,#9
mov 61h,#9
ret
root_63h:
lcall zc_xs
mov a,63h
jz root_0
dec 63h
mov 60h,#9
mov 61h,#9
mov 62h,#9
ret
root_0:
mov p1,#0ffh
ljmp zc_key
;電機(jī)運(yùn)行子程
zc_motor:
mov 5ch,#1h
mov 5dh,#0fh
motor_r:mov r3,#00
run_1: mov dptr,#table_zz
mov a,r3
movc a,@a+dptr
jz motor_r
mov p1,a
mov a,70h
jz run_2
dec 70h
run_2: lcall zc_leng
inc r3
jb p3.5,run_1
lcall zc_xsys
jb p3.5,run_1
mov p1,#0ffh
jnb p3.5,$
mov 5ch,#50h
mov 5dh,#50h
jmp zc_key
ret
;顯示延時子程
zc_xsys:
mov r3,#10
xsys_d1:lcall zc_xs
djnz r3,xsys_d1
ret
;延時子程
zc_ys:
mov a,70h
add a,#10
mov r7,a
ys_d1:mov r6,#15
djnz r6,$
djnz r7,ys_d1
ret
;延時子程
zc_ys2:
mov r7,#100
ys_d11:mov r6,#15
djnz r6,$
djnz r7,ys_d11
ret
;下料延時
zc_lys:
mov r2,#25
lys_1: mov r4,#25
lys_2: mov r6,#255
djnz r6,$
djnz r4,lys_2
djnz r2,lys_1
ret
;數(shù)碼管數(shù)據(jù)表
TABLE:
DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
DB 0CH,47H,0BFH
;電機(jī)正傳
table_zz:
db 3ch,69h,0c3h,96h
db 00
end ;源程序結(jié)束
這是我 的自動下料機(jī)程序,寫的很凌亂,不過也湊合能用
有時間看一下
歡迎光臨 (http://www.torrancerestoration.com/bbs/) | Powered by Discuz! X3.1 |