找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3271|回復(fù): 8
收起左側(cè)

匯編 求大神改錯 能實現(xiàn)電機的正反轉(zhuǎn),但是不能控制轉(zhuǎn)速,并且數(shù)碼管不亮

[復(fù)制鏈接]
ID:84923 發(fā)表于 2015-7-8 12:49 | 顯示全部樓層 |閱讀模式
ORG    0000H
SJMP  DISPLAY
ORG   0003H   
LJMP  BUTTON          ;  外部0中斷入口地址
ORG   000BH
LJMP  DINGSHI         ;  定時中斷T0入口地址
ORG    0030H          ;  LED顯示程序為主程序  
DISPLAY:  
SETB   EA             ;  打開中斷總開關(guān)
SETB   EX0            ;   打開外部中斷0開關(guān)
SETB   IT0            ;  打開外部中斷0下降沿觸發(fā)
MOV    TMOD,#51H      ;   設(shè)置定時工作方式
MOV    TL0,#0FFH      ;   設(shè)置定時初值
MOV    TH0,#0FFH
MOV  TH1,#00H              T1清零
MOV  TL1,#00H   
SETB  P3.5                  置T1為輸入方式
JB  P3.5,$                    等待低電平
MOV  IE,#88H               CPU開中斷,T0開中斷
SETB  TR0                  啟動T0定時
SETB  TR1                  啟動T1計數(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計數(shù)
MOV  31H,TH1               將T1計數(shù)值送31H,30H   
MOV  A 31H      
MOV  B,#10                A小,B送10
DIV  AB                    除,商在A中,余數(shù)在B中
MOV  50H,A                 十位送50H
MOV  51H,B                  個位位送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            延時,使視覺暫留,延時1ms
INC  R1                      指向下一個顯示單元
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:                         ;    定時中斷服務(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                                延時5ms
DL7: MIV  R6,#50
DL6: DJNZ  R6,DL6
     DJNZ  R5,DL7
RET

回復(fù)

使用道具 舉報

ID:1 發(fā)表于 2015-7-8 15:46 來自手機 | 顯示全部樓層
這個程序是不能編譯,還是執(zhí)行結(jié)果有錯誤,。現(xiàn)在能實現(xiàn)什么樣的效果?
回復(fù)

使用道具 舉報

ID:84923 發(fā)表于 2015-7-8 16:04 | 顯示全部樓層
admin 發(fā)表于 2015-7-8 15:46
這個程序是不能編譯,還是執(zhí)行結(jié)果有錯誤,,F(xiàn)在能實現(xiàn)什么樣的效果?

現(xiàn)在能實現(xiàn)電機的正反轉(zhuǎn),但是不能控制轉(zhuǎn)速,并且數(shù)碼管不亮
回復(fù)

使用道具 舉報

ID:74784 發(fā)表于 2015-7-8 20:45 | 顯示全部樓層
那你得上個硬件圖 看看了~~~~~~~~~~~~~
回復(fù)

使用道具 舉報

ID:84923 發(fā)表于 2015-7-8 23:03 | 顯示全部樓層
lxa0 發(fā)表于 2015-7-8 20:45
那你得上個硬件圖 看看了~~~~~~~~~~~~~

這個就是,只能實現(xiàn)正反轉(zhuǎn)和停止控制。
QQ截圖20150708230325.png
回復(fù)

使用道具 舉報

ID:45963 發(fā)表于 2015-7-9 07:23 | 顯示全部樓層
我就看到1個,查段碼后送P1的應(yīng)該是,A,而不是#A吧

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 回帖助人的獎勵!

查看全部評分

回復(fù)

使用道具 舉報

ID:84923 發(fā)表于 2015-7-9 13:41 | 顯示全部樓層
amchina 發(fā)表于 2015-7-9 07:23
我就看到1個,查段碼后送P1的應(yīng)該是,A,而不是#A吧

改過了
回復(fù)

使用道具 舉報

ID:74784 發(fā)表于 2015-7-9 20:03 | 顯示全部樓層
你的子程序最后一句  RETI
這個是用在中斷返回的
你怎么所有的子程序返回都用它呢???
回復(fù)

使用道具 舉報

ID:74784 發(fā)表于 2015-7-9 20:04 | 顯示全部樓層
還有一點不大懂:
按鍵可以直接 I/O口
干嗎還要用2個與門??
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

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