找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3868|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

51單片機(jī)對編碼器的讀寫和串口通信功能的代碼及上位機(jī)讀取數(shù)據(jù)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:739159 發(fā)表于 2020-4-27 11:41 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
寫單片機(jī)對編碼器的讀寫程序和串口通信功能的代碼,以及上位機(jī)讀取串口助手保存的TXT文件后繪制出圖形實物的代碼,最后把這幾個代碼整個到一個程序中,請問該怎么尋找代碼呀,師傅說有例程,但是我自己也沒有很清晰的找到,找到的幾個代碼都很長,而且不全,整合的話是不是也要修改來著比如在瀏覽器找到的單片機(jī)讀取編碼器的程序

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        ;信號相等調(diào)用加計數(shù)
acall jia
jmp m3        ;注意跳躍地址,跳躍錯誤 ,計數(shù)器將計數(shù)錯誤
m2 :cjne r0,#2dh,m3        ;信號相等調(diào)用減計數(shù)
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        ;加計數(shù)
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        ;減計數(shù)
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



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表