標(biāo)題: 匯編 求大神改錯(cuò) 能實(shí)現(xiàn)電機(jī)的正反轉(zhuǎn),但是不能控制轉(zhuǎn)速,并且數(shù)碼管不亮 [打印本頁(yè)]
作者: maoxaio52525 時(shí)間: 2015-7-8 12:49
標(biāo)題: 匯編 求大神改錯(cuò) 能實(shí)現(xiàn)電機(jī)的正反轉(zhuǎn),但是不能控制轉(zhuǎn)速,并且數(shù)碼管不亮
ORG 0000H
SJMP DISPLAY
ORG 0003H
LJMP BUTTON ; 外部0中斷入口地址
ORG 000BH
LJMP DINGSHI ; 定時(shí)中斷T0入口地址
ORG 0030H ; LED顯示程序?yàn)橹鞒绦?nbsp;
DISPLAY:
SETB EA ; 打開(kāi)中斷總開(kāi)關(guān)
SETB EX0 ; 打開(kāi)外部中斷0開(kāi)關(guān)
SETB IT0 ; 打開(kāi)外部中斷0下降沿觸發(fā)
MOV TMOD,#51H ; 設(shè)置定時(shí)工作方式
MOV TL0,#0FFH ; 設(shè)置定時(shí)初值
MOV TH0,#0FFH
MOV TH1,#00H T1清零
MOV TL1,#00H
SETB P3.5 置T1為輸入方式
JB P3.5,$ 等待低電平
MOV IE,#88H CPU開(kāi)中斷,T0開(kāi)中斷
SETB TR0 啟動(dòng)T0定時(shí)
SETB TR1 啟動(dòng)T1計(jì)數(shù)
MOV SP,#30H 設(shè)置堆棧指針
CLR P0.5
CLR P0.6
CLR P0.7
MOV DPTR, TAB ; 夜晶顯示的字符首地址
MOV R0,#00H ; 脈寬的初值
MOV R3,#00H
MOV R4,#00H
MOV 60H,#200
MOV 70H,#200
LP1:
LCALL DELAY
DJNZ 60H,LP1
MOV 60H,#200
CLR TR1 停止T1計(jì)數(shù)
MOV 31H,TH1 將T1計(jì)數(shù)值送31H,30H
MOV A 31H
MOV B,#10 A小,B送10
DIV AB 除,商在A中,余數(shù)在B中
MOV 50H,A 十位送50H
MOV 51H,B 個(gè)位位送51H
MOV R1,#50H 顯示緩沖區(qū)首地址如R1
MOV R2,#00DH 首位顯示字入R2
DISC:
MOV A,@R1 查段碼,待查BCD碼送A中
MOV DPTR,#TAB 段碼表首地址送DPTR
MOVC A,@A+DPTR 查段碼指令
MOV P1,#A 段碼送入P1 口
LCALL DELAY 延時(shí),使視覺(jué)暫留,延時(shí)1ms
INC R1 指向下一個(gè)顯示單元
MOV A,R2 判斷位輪流顯示完
JNB ACC.0,DEND 2位完,轉(zhuǎn)結(jié)束
RR A 2位未完,右移使下一顯示控制口為0
MOV R2,A
AJMP DISC 2位未完,繼續(xù)顯示
DEND:RET 2位完,程序借宿
ORG 2000H
DINGSHI: ; 定時(shí)中斷服務(wù)程序
CPL P0.7
JNB P0.7,Z1 ; 周期一定
MOV A,#0FFH
SUBB A,R0
MOV TH0,A
SETB TR0
RETI
Z1:
MOV TH0,R0 ; 脈寬
SETB TR0
RETI
BUTTON: ; 從控制鍵盤中讀取操作命令
PUSH ACC
CLR EX0
CLR EA
INC R7 ;
MOV A,#0FFH
MOV P2,A
MOV A,P2
JNB ACC.7,AA0
JNB ACC.6,KK0
JNB ACC.5,ZZ
JNB ACC.4,FF
JNB ACC.3,WW0
AJMP QQ
AA0:
CJNE R0,#0FFH,AA1 ; 加速操作(相等順序執(zhí)行)
AJMP QQ
AA1:
MOV A,R0
ADD A,#5
MOV R0,A
AJMP QQ
KK0:
CJNE R0,#00H,MM ; 減速操作(相等順序執(zhí)行)
AJMP QQ
MM:
MOV A,R0
SUBB A,#5
MOV R0,A
AJMP QQ
QQ:
SETB EX0
LCALL DELAY
LCALL DELAY
LCALL DELAY
SETB EA
POP ACC
RETI
ZZ:
SETB P0.5 ; 正轉(zhuǎn)操作
CLR P0.6
LCALL DELAY
LCALL DELAY
LCALL DELAY
SETB EX0
SETB EA
POP ACC
RETI
FF:
CLR P0.5 ; 反轉(zhuǎn)操作
SETB P0.6
LCALL DELAY
LCALL DELAY
LCALL DELAY
SETB EX0
SETB EA
POP ACC
RETI
WW0:
CLR P0.5 ; 停止操作
CLR P0.6
LCALL DELAY
LCALL DELAY
LCALL DELAY
SETB EX0
SETB EA
POP ACC
RETI
TAB:DB 3FH 06H 5BH 4FH 66H 6DH 7DH 07H 7FH 6FH
“0” “1” “2” “3” “4” “5” “6” “7” “8” “9”
DELAY: MOV R5,#50 延時(shí)5ms
DL7: MIV R6,#50
DL6: DJNZ R6,DL6
DJNZ R5,DL7
RET
作者: admin 時(shí)間: 2015-7-8 15:46
這個(gè)程序是不能編譯,還是執(zhí)行結(jié)果有錯(cuò)誤,。現(xiàn)在能實(shí)現(xiàn)什么樣的效果?
作者: maoxaio52525 時(shí)間: 2015-7-8 16:04
現(xiàn)在能實(shí)現(xiàn)電機(jī)的正反轉(zhuǎn),但是不能控制轉(zhuǎn)速,并且數(shù)碼管不亮
作者: lxa0 時(shí)間: 2015-7-8 20:45
那你得上個(gè)硬件圖 看看了~~~~~~~~~~~~~
作者: maoxaio52525 時(shí)間: 2015-7-8 23:03
這個(gè)就是,只能實(shí)現(xiàn)正反轉(zhuǎn)和停止控制。
-
QQ截圖20150708230325.png
(24.41 KB, 下載次數(shù): 196)
下載附件
2015-7-8 23:02 上傳
作者: amchina 時(shí)間: 2015-7-9 07:23
我就看到1個(gè),查段碼后送P1的應(yīng)該是,A,而不是#A吧
作者: maoxaio52525 時(shí)間: 2015-7-9 13:41
改過(guò)了
作者: lxa0 時(shí)間: 2015-7-9 20:03
你的子程序最后一句 RETI
這個(gè)是用在中斷返回的
你怎么所有的子程序返回都用它呢???
作者: lxa0 時(shí)間: 2015-7-9 20:04
還有一點(diǎn)不大懂:
按鍵可以直接 I/O口
干嗎還要用2個(gè)與門??
| 歡迎光臨 (http://m.raoushi.com/bbs/) |
Powered by Discuz! X3.1 |