查看: 1894|回复: 18
|
跪求高手幫忙...8051 如何寫上下數?
[复制链接]
|
|
我最近有個project要用到用8051輸出40~80(bcd),
流程是當我按push button1 會從40+1,以此類推...
按下push button2 時會遞減.....
但我只會從40一直上數到99而已,下數更死完全不會動作...
希望各為高手能幫小第的忙...萬分感激!!![](static/image/smiley/default/cry.gif) |
|
|
|
|
|
|
|
发表于 30-12-2007 03:55 PM
|
显示全部楼层
原帖由 brandon6436 于 30-12-2007 03:21 PM 发表 ![](http://chinese.cari.com.my/myforum/images/common/back.gif)
我最近有個project要用到用8051輸出40~80(bcd),
流程是當我按push button1 會從40+1,以此類推...
按下push button2 時會遞減.....
但我只會從40一直上數到99而已,下數更死完全不會動作...
希望各為高手能幫小第的 ...
请提供现有的原代码,让有心人事容易给以援助。 |
|
|
|
|
|
|
|
发表于 30-12-2007 06:45 PM
|
显示全部楼层
高中到现在都没有动了,呵呵……手痒试一下。
ORG 00H
MOV A,#40H
START MOV P1,A
JNB P2.0,INC
JNB P2.1,DEC
CALL DELAY
JMP START
INC MOV A,P1
INC A
DA A
MOV P1,A
JMP START
DEC MOV A,P1
DEC A
DA A
MOV P1,A
JMP START
DELAY MOV R0,#1H
MOV R1,#99H
DL DJNZ R1,DL
DJNZ R0,DELAY
RET
END |
|
|
|
|
|
|
|
![](static/image/common/ico_lz.png)
楼主 |
发表于 31-12-2007 01:41 AM
|
显示全部楼层
回复 3# 的帖子
高手果然太久沒碰了...有bug...不過我修改了,大家看看,但還是達不到我的要求...我要的是上下數 40~80......
ORG 00H
MOV A, #40H
START: MOV P1, A
JNB P2.0, INC
JNB P2.1, DEC
CALL DELAY
JMP START
INC:
MOV A, P1
INC A
DA A
MOV P1, A
JMP START
DEC: MOV A, P1
DEC A
DA A
MOV P1,A
JMP START
DELAY:
MOV R0, #1H
MOV R1, #99H
DL: DJNZ R1, DL
DJNZ R0, DELAY
RET
END |
|
|
|
|
|
|
|
发表于 31-12-2007 10:29 AM
|
显示全部楼层
原帖由 brandon6436 于 30-12-2007 03:21 PM 发表 ![](http://chinese.cari.com.my/myforum/images/common/back.gif)
我最近有個project要用到用8051輸出40~80(bcd),
流程是當我按push button1 會從40+1,以此類推...
按下push button2 時會遞減.....
但我只會從40一直上數到99而已,下數更死完全不會動作...
希望各為高手能幫小第的 ...
介意upload你的program吗??
没有的话大家只能靠猜测,并不能解决问题。 |
|
|
|
|
|
|
|
发表于 31-12-2007 10:49 AM
|
显示全部楼层
原帖由 brandon6436 于 31-12-2007 01:41 AM 发表 ![](http://chinese.cari.com.my/myforum/images/common/back.gif)
高手果然太久沒碰了...有bug...不過我修改了,大家看看,但還是達不到我的要求...我要的是上下數 40~80......
ORG 00H
MOV A, #40H
START: MOV P1, A
JNB P2.0, INC
JNB P2.1, DEC
CALL DELAY
JMP START ...
你也别这么拽了,三楼的 GuoHui 也是尽力帮你的。我没看到你改了什么?? 既然你已经有些成就,把你的源代码上传,从你的作品稍加修改就行了。 |
|
|
|
|
|
|
|
发表于 31-12-2007 12:08 PM
|
显示全部楼层
等你upload你自己的了,我才给你我写过的。
不过我写过的那个还没有测试过的,工作中不方便测试。 |
|
|
|
|
|
|
|
发表于 31-12-2007 11:18 PM
|
显示全部楼层
原帖由 GuoHui 于 30-12-2007 06:45 PM 发表 ![](http://chinese.cari.com.my/myforum/images/common/back.gif)
高中到现在都没有动了,呵呵……手痒试一下。
這程式無論按上數或下數,其數字都會跳得飛快,甚至看不清所顯示的數字。
因此,我把你的程式改了一下。
(按着button不放時,數字就會每隔0.5秒增加/遞減一位數。)
若有誤,請各位高手改正。
ORG 00H
MOV A,#40H
START:
MOV P1,A
JNB P2.0,INC
JNB P2.1,DEC
DELAY2:
CALL DELAY
JMP START
INC:
CJNE A,#80H,GO_INC
JMP START
GO_INC:
MOV A,P1
INC A
DA A
MOV P1,A
JMP DELAY2
DEC:
CJNE A,#40H,GO_DEC
JMP START
GO_DEC:
MOV A,P1
DEC A
DA A
MOV P1,A
JMP DELAY2
DELAY:(在XTal=12MHz之下延遲0.5秒)
MOV R0,#50
DL1:
MOV R1,#20
DL2:
MOV R2,#248
DJNZ R2,$
DJNZ R1,DL2
DJNZ R0,DL1
RET
END |
|
|
|
|
|
|
|
发表于 1-1-2008 11:50 AM
|
显示全部楼层
|
|
|
|
|
|
|
发表于 1-1-2008 02:14 PM
|
显示全部楼层
原帖由 freeman_long 于 31-12-2007 11:18 PM 发表 ![](http://chinese.cari.com.my/myforum/images/common/back.gif)
這程式無論按上數或下數,其數字都會跳得飛快,甚至看不清所顯示的數字。
因此,我把你的程式改了一下。
(按着button不放時,數字就會每隔0.5秒增加/遞減一位數。)
若有誤,請各位高手改正。
...
这方法也许已经解决了按键数字跳跃的问题,不过也浪费了mcu 的等待时间。 |
|
|
|
|
|
|
|
发表于 1-1-2008 02:52 PM
|
显示全部楼层
原帖由 rothmans 于 1-1-2008 02:14 PM 发表 ![](http://chinese.cari.com.my/myforum/images/common/back.gif)
这方法也许已经解决了按键数字跳跃的问题,不过也浪费了mcu 的等待时间。
其实楼主的问题出在那里, 大家都不懂。。。。+_+
至于这个问题--這程式無論按上數或下數,其數字都會跳得飛快
可以用debouncing 来解决。 |
|
|
|
|
|
|
|
发表于 1-1-2008 03:33 PM
|
显示全部楼层
|
|
|
|
|
|
|
发表于 1-1-2008 11:34 PM
|
显示全部楼层
|
|
|
|
|
|
|
发表于 2-1-2008 01:04 AM
|
显示全部楼层
|
|
|
|
|
|
|
![](static/image/common/ico_lz.png)
楼主 |
发表于 2-1-2008 05:40 PM
|
显示全部楼层
哇!!!我才一會兒沒上就被批評了...
真的對不起啊!我不是你們講的那個意思啊.....
我和guohui是認識的啊...
我沒有很要炫的意思啊...
真的不好意思.... |
|
|
|
|
|
|
|
![](static/image/common/ico_lz.png)
楼主 |
发表于 2-1-2008 05:44 PM
|
显示全部楼层
我這幾天一直在lab裡面試,終於有點成績了....
動作可以從40一直加到80然後回到40從新在加....
但問題來了.....
當我按減的時候,只會從個位數5,4,3,2,1,0,然後又5,4,3,....
十位數就是不會跟住減啊!為甚麼? |
|
|
|
|
|
|
|
![](static/image/common/ico_lz.png)
楼主 |
发表于 2-1-2008 05:46 PM
|
显示全部楼层
我的源代碼
ORG 00H
MAIN: MOV A,#39H
START:
MOV P1,A
JNB P2.0,INC
JNB P2.1,DEC
DELAY2:
CALL DELAY
JMP START
INC:
CJNE A,#80H,GO_INC
JMP MAIN
GO_INC:
MOV A,P1
ADD A,#1
DA A
MOV P1,A
JMP DELAY2
DEC:
CJNE A,#40H,GO_DEC
JMP MAIN
GO_DEC:
MOV A,P1
SUBB A,#1
DA A
MOV P1,A
JMP DELAY2
DELAY:
MOV R0,#50
DL1:
MOV R1,#20
DL2:
MOV R2,#248
DJNZ R2,$
DJNZ R1,DL2
DJNZ R0,DL1
RET
END |
|
|
|
|
|
|
|
发表于 2-1-2008 08:34 PM
|
显示全部楼层
原帖由 brandon6436 于 2-1-2008 05:46 PM 发表 ...
从你的源代碼,我做了些修改。主要是加入另一个寄存器 R3。若有错误,自行修改或反馈。
ORG 00H
MAIN: MOV R3,#40H
repeat: MOV A,R3
DA A
MOV P1,A
START:
JNB P2.0,INC
NOP
NOP
JNB P2.1,DEC
NOP
NOP
DELAY2: CALL DELAY
JMP START
INC: INC R3
CJNE R3,#81H,convert
JMP MAIN
DEC: DEC R3
CJNE A,#3FH,convert
MOV R3,#80H
JMP repeat
convert:
MOV A,R3
DA A
MOV P1,A
JMP DELAY2
DELAY: MOV R0,#50
DL1: MOV R1,#20
DL2: MOV R2,#248
DJNZ R2,$
DJNZ R1,DL2
DJNZ R0,DL1
RET
END |
|
|
|
|
|
|
|
发表于 6-1-2008 07:32 PM
|
显示全部楼层
原帖由 brandon6436 于 2-1-2008 05:44 PM 发表 ![](http://chinese.cari.com.my/myforum/images/common/back.gif)
我這幾天一直在lab裡面試,終於有點成績了....
動作可以從40一直加到80然後回到40從新在加....
但問題來了.....
當我按減的時候,只會從個位數5,4,3,2,1,0,然後又5,4,3,....
十位數就是不會跟住減啊!為甚麼?
下數的問題可用以下程式。
這程式我已試過,確定可以正常操作。
(開電時停在40,每按一次上數鍵就加一,當加到80後就自動回到40;
若按下數鍵就減一,減到40後就自動回到80。)
ORG 00H
MAIN:
MOV 20H,#40H
START:
CALL DISP
CALL DELAY
JNB P2.0,INC
JNB P2.1,DEC
JMP START
DISP:
MOV A,20H
CPL A
MOV P1,A
RET
INC:
INC 20H
MOV A,20H
CLR C
DA A
CJNE A,#81H,GO1
JMP MAIN
GO1:
MOV 20H,A
JMP START
DEC:
DEC 20H
MOV A,20H
CJNE A,#3FH,GO2
MOV 20H,#80H
JMP START
GO2:
ANL A,#0FH
CJNE A,#0FH,START
MOV A,20H
SUBB A,#06
CLR C
MOV 20H,A
JMP START
DELAY:
MOV R0,#50
DL1:
MOV R1,#20
DL2:
MOV R2,#248
DJNZ R2,$
DJNZ R1,DL2
DJNZ R0,DL1
RET
END |
|
|
|
|
|
|
| |
本周最热论坛帖子
|