?? 完好自適應(yīng)轉(zhuǎn)速的檢測(cè)128_32hz—3.asm
字號(hào):
;電機(jī)驅(qū)動(dòng)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
POINT EQU 20H.0 ;用到20H位尋址位的20.0H作為控制正轉(zhuǎn)和反轉(zhuǎn)的標(biāo)志位
SIGN EQU 20H.1 ;周期CHANGE
SIGN_1 EQU 20H.2 ;用來(lái)指示TIME-0結(jié)束
SIGN_2 EQU 20H.3 ;指示1S過(guò)了
SIGN_3 EQU 20H.4 ;指示5S過(guò)了
SIGN_4 EQU 20H.5 ;指示10S過(guò)了
SIGN_5 EQU 20H.6 ;指示機(jī)器處在自動(dòng)控制中
SIGN_6 EQU 20H.7 ;指示35S過(guò)了
ASESS_1 EQU 21H ;用來(lái)放置T時(shí)間內(nèi)的轉(zhuǎn)速
ASESS_2 EQU 22H ;存放差植
CASE_1 EQU 23H
CASE_2 EQU 24H
CASE_3 EQU 25H
CASE_4 EQU 26H
ASESS_3 EQU 27H ;用來(lái)存放CLOCK
SIGN_7 EQU 28H.0 ;指示T0過(guò)了
ASESS_4 EQU 50H ;設(shè)定的轉(zhuǎn)速
OUT_PUT_1 EQU P1.5
OUT_PUT_2 EQU P1.6
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ORG 00H
LJMP MAIN_1
;;;;;;;;;;
ORG 00BH
LJMP TIME_0
ORG 0013H
LJMP INT_1
ORG 01BH
LJMP TIME_T1
ORG 50H
MAIN_1: CLR POINT ;測(cè)試用的
MOV SP,#50H ;測(cè)試用的
MOV IE,#0FFH
SETB PT0
SETB IT1
;;;;;;;;;;;;;;;;;;;
MOV R0,#7FH
CLEAR: MOV @R0,#0
DJNZ R0,CLEAR
CLR REST ;復(fù)位
LCALL LDELAY
SETB REST
LCALL LDELAY
LCALL RESET ;初始化
LCALL CLEARALL ;清屏
LCALL JIEMIAN
;;;;;;;;;;;;;;;;;;;;
;AJMP $ ;測(cè)試用的
;;;;;;;;;;;;;;;;;;;;;
MAIN_2: CLR RS1 ;采用的工作寄存器組1
SETB RS0
;;;;;;;;;;;;;;;;;;;;;;;;;
MOV TMOD,#51H ;;;;
MOV TL1,#00H
MOV TH1,#00H
MOV R7,#00H
MOV R3,#0D0H
MOV R4,#8AH
MOV ASESS_3,#00H
MOV ASESS_2,#00H
MOV ASESS_1,#00H
SETB SIGN
SETB SIGN_1
SETB SIGN_2
SETB SIGN_3
SETB SIGN_4
SETB SIGN_5
SETB SIGN_6
SETB SIGN_7
SETB OUT_PUT_1 ;初始化
SETB OUT_PUT_2 ;初始化
MOV ASESS_4,#040H ;測(cè)試用的 ;;;;;;;;;;;;MOV TL0,#DCH;;;;;;;;;;;;
;;;;;;;;;MOV TH0,#0BH;;;;;;;;;;
SETB TR0
SETB TR1
;;;;;;;;;;;;;;;;;周期自動(dòng)轉(zhuǎn)換程序 :周期1
LOGO: JB SIGN_6,LOGO_1
MOV R3,#02BH
MOV R4,#1EH
RETI
LOGO_1:JNB SIGN,STEUP
ACALL CHANGE_1
ACALL TIME_1
;;;;;;;;;;;;;;;;;;周期自動(dòng)轉(zhuǎn)換程序:周期2
STEUP: ACALL CHANGE_2
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
JB SIGN_2,SETUP_61
JNB SIGN_4,SETUP_61 ;;;;;;;;;;;待電機(jī)啟動(dòng)1S過(guò)后自動(dòng)進(jìn)行數(shù)據(jù)比較,添裝
CLR C
MOV A,ASESS_4
CJNE A,ASESS_1,SETUP_4
AJMP SETUP_6
;;;;;;;;;;;數(shù)據(jù)比較添裝區(qū)
SETUP_61:LJMP SETUP_6
SETUP_4:
SUBB A,ASESS_1
JC SETUP_5
MOV ASESS_2,A ;要加速
CLR C
CJNE A,#20H,FAST_0
FAST_0: JC FAST_1 ;<32
MOV CASE_2,#00H ;>32 ;一級(jí)調(diào)速
MOV CASE_1,#7CH
LJMP CPU_2
FAST_1: CLR C
MOV A,ASESS_2
CJNE A,#10H,FAST_2
FAST_2: JC FAST_3 ;<16
MOV CASE_2,#00H ;>16/////;二級(jí)調(diào)速
MOV CASE_1,#3EH
LJMP CPU_2
FAST_3: CLR C
MOV A,ASESS_2
CJNE A,#08H,FAST_4
FAST_4: JC FAST_5 ;<8 ;三級(jí)調(diào)速
MOV CASE_2,#00H ;>8 ;要加速
MOV CASE_1,#7CH
LJMP CPU_2
FAST_5: CLR C
MOV A,ASESS_2
CJNE A,#03H,FAST_6
FAST_6: JC FAST_7 ;<2
MOV CASE_2,#00H ;>=3 ;四級(jí)調(diào)速
MOV CASE_1,#3EH
LJMP CPU_2
FAST_7: MOV CASE_2,#00H ;>3
MOV CASE_1,#1FH ;要加速
LJMP CPU_2
CPU_2: LCALL CPU_1
CLR C
MOV A,R3
ADD A,CASE_3
MOV R3,A
MOV A,R4
ADDC A,CASE_4
MOV R4,A
AJMP SETUP_6
SETUP_5: CLR C
MOV A,ASESS_1 ;要減速
SUBB A,ASESS_4
MOV ASESS_2,A ;電機(jī)步進(jìn)參數(shù)
CLR C
CJNE A,#20H,FASTX_0
FASTX_0: JC FASTX_1 ;<32
MOV CASE_2,#00H ;>32
MOV CASE_1,#7CH
LJMP CPU_3
FASTX_1: CLR C
MOV A,ASESS_2
CJNE A,#10H,FASTX_2
FASTX_2: JC FASTX_3 ;<16
MOV CASE_2,#00H ;>16
MOV CASE_1,#3EH
LJMP CPU_3
FASTX_3: CLR C
MOV A,ASESS_2
CJNE A,#08H,FASTX_4
FASTX_4: JC FASTX_5 ;<8
MOV CASE_2,#00H ;>8 ;要減速
MOV CASE_1,#7CH
LJMP CPU_3
FASTX_5: CLR C
MOV A,ASESS_2
CJNE A,#03H,FASTX_6
FASTX_6: JC FASTX_7 ;<2
MOV CASE_2,#00H ;>=2
MOV CASE_1,#3EH
LJMP CPU_3
FASTX_7: MOV CASE_2,#00H ;>2
MOV CASE_1,#1FH ;要減速
LJMP CPU_3
CPU_3: LCALL CPU_1
CLR C
MOV A,R3
SUBB A,CASE_3
MOV R3,A
MOV A,R4
SUBB A,CASE_4
MOV R4,A
AJMP SETUP_6
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SETUP_6:
;;LCALL ?? ;調(diào)用鍵盤掃描 /////////////
; LCALL LCM
JB SIGN_1,SETUP_1 ;用來(lái)識(shí)別TIME-0結(jié)束
AJMP SETUP_6 ;;;;;;;;;;;;;
SETUP_1:AJMP LOGO
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;基準(zhǔn)時(shí)鐘 ;;;;左轉(zhuǎn)為正轉(zhuǎn),右轉(zhuǎn)為反轉(zhuǎn),
TIME_0: JB SIGN,TIME_3
CLR TR0 ; ??????
JB POINT,OUT_1
CPL OUT_PUT_1
RETI
OUT_1: CPL OUT_PUT_2
RETI
TIME_3: JNB SIGN_7,T_3
MOV TL1,R3
MOV TH1,R4
MOV TL0,#0EEH ;定時(shí)器0初始化
MOV TH0,#85H ;定時(shí)器0初始化
CPL SIGN_7
SETB TR1 ;????
JB POINT,OUT
CPL OUT_PUT_1 ;PWM脈寬輸出32HZ ;;;正轉(zhuǎn)是POINT為0,反轉(zhuǎn)是POIN為1
RETI
OUT: CPL OUT_PUT_2
RETI
T_3: JB POINT,OUT_E
CPL OUT_PUT_1
AJMP T_R
OUT_E: CPL OUT_PUT_2
T_R: CPL SIGN_7
INC R7
CJNE R7,#10H,T_4 ;轉(zhuǎn)到時(shí)鐘程序(要記得加返回指令噢!)
LCALL CLOCK
T_4: CPL SIGN_1
MOV TMOD,#51H
CLR SIGN_2 ;指示1S過(guò)了
SETB TR1 ;????????
RETI
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;驅(qū)動(dòng)程序 ;;;;左轉(zhuǎn)為正轉(zhuǎn),右轉(zhuǎn)為反轉(zhuǎn),
;;;正轉(zhuǎn)是POINT為0,反轉(zhuǎn)是POIN為1
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;轉(zhuǎn)速的檢測(cè)程序
IN_PUT:MOV A,TL1
MOV ASESS_1,A
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;軟件定時(shí)31.25ms
TIME_1:MOV R5,#125
DEL: MOV R6,#123
NOP
DEL_1:DJNZ R6,DEL_1
DJNZ R5,DEL
;===================
JB POINT,OUT_X
CPL OUT_PUT_1
MOV TL0,R3
MOV TH0,R4
SETB TR0 ;???????
AJMP TIME_X
OUT_X:CPL OUT_PUT_2
MOV TL0,R3
MOV TH0,R4
SETB TR0 ;???????
;======================軟件定時(shí)31.25ms
TIME_X:MOV R5,#125
DEL_X:MOV R6,#123
DEL_X1:DJNZ R6,DEL_X1
DJNZ R5,DEL_X
;===================
MOV TL0,#00H ;;防止T0定時(shí)器益出
MOV TH0,#00H
SETB TR0 ;???????
INC R7
CPL SIGN_1
ACALL IN_PUT ;M法測(cè)速TC=62.5ms
MOV TMOD,#11H
JB POINT,OUT_3
CPL OUT_PUT_1
RET
OUT_3:CPL OUT_PUT_2
RET
;;;;;;;;;;;;;;;;;;;;周期自動(dòng)轉(zhuǎn)換子程序
CHANGE_1: CPL SIGN
MOV TL0,R3
MOV TH0,R4
MOV TL1,#00H
MOV TH1,#00H
RET
CHANGE_2:CPL SIGN
MOV TL1,R3
MOV TH1,R4
MOV TL0,#0EEH ;定時(shí)器0初始化
MOV TH0,#85H ;定時(shí)器0初始化
RET
;;;;;;;;;;;;;;;;;;;;;;;;定時(shí)器1中斷
TIME_T1:CLR TR1 ;?????
JB POINT,OUT_2
CPL OUT_PUT_1
RETI
OUT_2: CPL OUT_PUT_2
RETI
;;;;;;;;;;;;;;;;;;;;;;;;;;; 時(shí)鐘顯示1S調(diào)用
CLOCK: MOV R7,#00H
INC ASESS_3
JB SIGN_5,CLOCK_1
MOV A,ASESS_3
CJNE A,#5H,CLOCK_2
CLR SIGN_3
MOV ASESS_4,#03H
AJMP CLOCK_1
CLOCK_2:MOV A,ASESS_3
CJNE A,#0AH,CLOCK_3
CLR SIGN_4
MOV R3,#0DEH
MOV R4,#0FFH
AJMP CLOCK_1
CLOCK_3:MOV A,ASESS_3
CJNE A,#23H,CLOCK_1
CLR SIGN_6
LCALL LCM ;調(diào)用LCD
RET
;LCALL LCM ;調(diào)用LCD
;CLR TR0 ;測(cè)試用的
;CLR TR1 ;測(cè)試用的
; AJMP $ ;測(cè)試用的
CLOCK_1:MOV A,ASESS_3
CJNE A,#64H,LCD_1
MOV ASESS_3,#00H
RET
LCD_1: LCALL LCM ;調(diào)用LCD
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;雙字節(jié)與單字節(jié)相乘
;;;;;;;;;;;;;;;;;;;;;;;
CPU_1:MOV B,ASESS_2
MOV A,CASE_1
MUL AB
MOV CASE_3,A
MOV CASE_4,B
MOV A,CASE_2
MOV B,ASESS_2
MUL AB
ADD A,CASE_4
MOV CASE_4,A
RET
;;;;;;;;;;;;;;;;;;;;;;;中斷1
INT_1:CLR EX1 ;關(guān)閉中斷1
CLR SIGN_5
MOV ASESS_4,#0AH
LCALL MAIN_2
SETB SIGN_5
CLR IE1
SETB EX1
SETB OUT_PUT_1
SETB OUT_PUT_2
RETI
;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;
;單字節(jié)十六進(jìn)制整數(shù)轉(zhuǎn)換成單字節(jié)BCD碼整數(shù)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
HBCD: MOV B,#100
DIV AB
MOV A,#10
XCH A,B
DIV AB
SWAP A
ORL A,B
RET
;;:::::::::::
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; ;;;
;;重新分配地址 ;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
HANG EQU 76H ;指定行的位置
LIE EQU 77H ;指定列的位置
DEL1 EQU 78H ;用于延時(shí)
DEL2 EQU 79H ;用于延時(shí)
YE EQU 7AH ;頁(yè)地址
LIEH EQU 7BH ;列地址高位
LIEL EQU 7CH ;列地址低位
DATAPAGE EQU 7DH ;送字?jǐn)?shù)據(jù)計(jì)數(shù)
LOOPNUM EQU 7EH ;送顯示列計(jì)數(shù)
CSPIN EQU P2.7 ;片選端
REST EQU P2.6 ;復(fù)位端
RSPIN EQU P2.5 ;命令/數(shù)據(jù)選擇端
SCLPIN EQU P2.4 ;時(shí)鐘端
SIDPIN EQU P2.3 ;數(shù)據(jù)輸入端
SSH EQU 6BH;設(shè)定速度高位
SSL EQU 6CH;設(shè)定速度低位
SJH EQU 6DH;實(shí)際速度高位
SJL EQU 6EH;實(shí)際速度低位
TIMEH1 EQU 6FH;時(shí)間千位
TIMEH2 EQU 70H;時(shí)間百位
TIMEL1 EQU 71H;時(shí)間十位
TIMEL2 EQU 72H;時(shí)間個(gè)位
JICHUN1 EQU 73H;3個(gè)寄存地址
JICHUN2 EQU 74H
JICHUN3 EQU 75H
WEIEN_1 EQU 6AH
WEIEN_2 EQU 69H
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;
LCM:
MOV A,ASESS_1
LCALL HBCD
MOV B,A
ANL A,#00001111B
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -