写单片机对编码器的读写程序和串口通信功能的代码,以及上位机读取串口助手保存的TXT文件后绘制出图形实物的代码,最后把这几个代码整个到一个程序中,请问该怎么寻找代码呀,师傅说有例程,但是我自己也没有很清晰的找到,找到的几个代码都很长,而且不全,整合的话是不是也要修改来着比如在浏览器找到的单片机读取编码器的程序
org 00h
jmp main
org 0bh
jmp inic
mov 30h,#0
mov 31h,#0
mov 32h,#0
mov 33h,#0
mov 34h,#0
mov 35h,#0
mov 36h,#0
mov 37h,#0
mov 40h,#0
mov 41h,#0
mov 42h,#0
mov 43h,#0
mov 44h,#0
mov 45h,#0
mov 46h,#0
mov r0,#0
main:acall inib
maib:acall cnco
acall disp
jmp maib
inib:
mov tmod,#01h
mov ie,#82h
mov tl0,low(65536-10)
mov th0,high(65536-10)
setb tr0
ret
inic:
push psw
mov 48h,a
mov a,p1 ;读取译码器信号
anl a,#03h
mov 44h,a
mov 45h,#10
djnz 45h,$ ;延时
mov a,p1 ;再次读取译码器信号
anl a,#03h
cjne a,44h,m5 ;两次不等跳出中断
cjne a,46h,m1 ;不相等跳到信号分析子程序,相等跳出中断
mov 46h,a
jmp m5
m1 :
mov 46h,a
cjne r0,#1eh,m2 ;信号相等调用加计数
acall jia
jmp m3 ;注意跳跃地址,跳跃错误 ,计数器将计数错误
m2 :cjne r0,#2dh,m3 ;信号相等调用减计数
acall jian
m3 :
mov a,46h
cjne a,#00h,m4
mov r0,#00h
m4 :
mov a,r0
rl a
rl a
orl a,46h ;或指令
mov r0,a
m5 :
mov tl0,low(65536-10)
mov th0,high(65536-10)
mov a,48h
pop psw
reti
jia :
inc 40h ;加计数
mov a,40h
cjne a,#100,d1 ;个位十位
mov 40h,#0
inc 41h
cjne a,#100,d1 ;百位千位
mov 41h,#0
inc 42h
mov a,42h
cjne a,#100,d1 ;万位十万位
mov 42h,#0
inc 43h
mov a,43h
cjne a,#100,d1 ;百万千万位
mov 43h,#0
d1 :ret
jian:
mov a,40h ;减计数
cjne a,#0,d2
mov 40h,#99
mov a,41h
cjne a,#0,d3
mov 41h,#99
mov a,42h
cjne a,#0,d4
mov 42h,#99
mov a,43h
cjne a,#0,d5
mov 43h,#99
jmp d10
d2 :dec 40h
jmp d10
d3 :dec 41h
jmp d10
d4 :dec 42h
jmp d10
d5 :dec 43h
d10 :ret
cnco :mov a,40h ;显示代码换算
mov b,#10
div ab
mov 30h,b
mov 31h,a
mov a,41h
mov b,#10
div ab
mov 32h,b
mov 33h,a
mov a,42h
mov b,#10
div ab
mov 34h,b
mov 35h,a
mov a,43h
mov b,#10
div ab
mov 36h,b
mov 37h,a
mov a,37h ;等于零不显示
cjne a,#0,m0
mov 37h,#17
mov a,36h
cjne a,#0,m0
mov 36h,#17
mov a,35h
cjne a,#0,m0
mov 35h,#17
mov a,34h
cjne a,#0,m0
mov 34h,#17
mov a,33h
cjne a,#0,m0
mov 33h,#17
mov a,32h
cjne a,#0,m0
mov 32h,#17
mov a,31h
cjne a,#0,m0
mov 31h,#17
m0 :ret
disp :clr p2.2 ;第一位(个位) 扫描显示子程序
clr p2.3
clr p2.4
mov a,30h
acall dispa
mov p0,#
00h
setb p2.2 ;第二位(十位)
clr p2.3
clr p2.4
mov a,31h
acall dispa
mov p0,#00h
clr p2.2 ;第三位(百位)
setb p2.3
clr p2.4
mov a,32h
acall dispa
mov p0,#00h
setb p2.2 ;第四位(千位)
setb p2.3
clr p2.4
mov a,33h
acall dispa
mov p0,#00h
clr p2.2 ;第五位(万位)
clr p2.3
setb p2.4
mov a,34h
acall dispa
mov p0,#00h
setb p2.2 ;第六位(十万位)
clr p2.3
setb p2.4
mov a,35h
acall dispa
mov p0,#00h
clr p2.2 ;第七位(百万位)
setb p2.3
setb p2.4
mov a,36h
acall dispa
mov p0,#00h
setb p2.2 ;第八位(千万位)
setb p2.3
setb p2.4
mov a,37h
acall dispa
mov p0,#00h
ret
dispa:mov dptr,#dat ;取表子程序
movc a,@a+dptr
mov p0,a
delay:mov r6,#5 ;显示延时
de1 :mov r7,#10
de2 :dec r7
cjne r7,#0,de2
djnz r6,de1
ret
dat :DB 03FH,006H,05BH,04FH,066H,06DH,07DH,007H,07FH,06FH,077H,07CH,039H,05EH,079H,071H,40h,00h
end
|