以8051單片機為核心的電機轉(zhuǎn)速測量控制程序
以單片機8031為核心, 利用8279芯片實現(xiàn)按鍵輸入和利用數(shù)碼管顯示所測轉(zhuǎn)速,利用ADC0809將輸入電壓模擬量轉(zhuǎn)化為數(shù)字量(實驗箱內(nèi)部已接好相關(guān)接口)控制電機轉(zhuǎn)速的目的。然后利用DA0832將電機上的傳感器配合DA0832的CKMOT接口將脈沖信號接到8031的INT0,利用外中斷實現(xiàn)速度的測量,一次外中斷會使速度計數(shù)器自動加一,利用定時器產(chǎn)生一秒的計時,得出一秒內(nèi)速度計數(shù)器的值就可以得到電機的轉(zhuǎn)速。另定時計數(shù)器每250MS產(chǎn)生一次定時器中斷,利用中斷來檢測是否有新的控制信號輸入,以達到實時控制轉(zhuǎn)速的目的。
ORG 0000h
ajmp main
ORG 0003h ;外部中斷0
AJMP ZS
ORG 000BH ;定時計數(shù)器0中斷
AJMP JS
ORG 0100H
main: mov sp,#60h
CLR PSW.5 ;清零標(biāo)志位
SETB P1.0 ;置位檢測位
setb et0
SETB IT0 ;外部中斷0下降沿有效
SETB EX0 ;允許T0中斷
mov DPTR,#5FFFH ;8279初始化
MOV A,#0DCH
MOVX @DPTR,A
WAIT: MOVX A,@DPTR
JB ACC.7,WAIT
MOV A,#00H
MOVX @DPTR,A
MOV A,#34H
MOVX @DPTR,A
MOV R0,#30H ;清零所用數(shù)值緩沖區(qū)
CL: MOV A,#00H
MOV @R0,A
INC R0
CJNE R0,#36H,CL
MOV 36H,#200
MOV 37H,#20
ACALL DIR
TIME: MOV TMOD,#02H ;一秒定時
MOV TH0,#6
MOV TL0,#6
SETB TR0 ;開啟T0中斷
SETB EA
LOP2: JNB PSW.5,LOP3
CLR PSW.5
ACALL DIR ;到一秒顯示轉(zhuǎn)速
JMP LOP2
LOP3: MOV DPTR,#9FF4H ;啟動a/d
MOVX @DPTR,A
;ACALL DELAY1
JB P1.0, $
MOVX A,@DPTR
MOV DPTR,#7FFFH ;啟動d/a
MOVX @DPTR,A
AJMP LOP2
JS: PUSH ACC ;T0中斷子程序
DJNZ 36H,OUT
DJNZ 37H,next
ajmp next1
next: MOV 36H,#200
ajmp out
next1:SETB PSW.5
MOV 33H,30H
MOV 34H,31H
MOV 35H,32H
MOV 30H,#0
MOV 31H,#0
MOV 32H,#0
MOV 36H,#200
MOV 37H,#20
OUT: POP ACC
RETI
ZS: PUSH ACC ;外部中斷子程序
CLR EX0
MOV A,30H
ADD A,#1
DA A
MOV 30H,A
CJNE A,#99H,OUT1
MOV 30H,#0
MOV A,31H
ADD A,#1
DA A
MOV 31H,A
CJNE A,#99H,OUT1
MOV 31H,#0
MOV A,32H
ADD A,#1
DA A
MOV 32H,A
OUT1: SETB EX0
POP ACC
RETI
DIR: MOV R0,#33H
MOV DPTR,#5FFFH
MOV A,#92H
MOVX @DPTR,A
MOV R2,#03H
LED: MOV A,@R0
ANL A,#0FH
MOV DPTR,#LEDTAB
MOVC A,@A+DPTR
MOV DPTR,#5EFFH
MOVX @DPTR,A
MOV A,@R0
SWAP A
ANL A,#0FH
MOV DPTR,#LEDTAB
MOVC A,@A+DPTR
MOV DPTR,#5EFFH
MOVX @DPTR,A
INC R0
DJNZ R2,LED
RET
LEDTAB:DB 0c0H,0f9H,0a4H,0b0H,99H,92H,82H,0f8H,80H,90H
DELAY1: MOV R6,#5
DELAY2: MOV R7,#200
DJNZ R7,$
DJNZ R6,DELAY2
RET
END
接地電阻相關(guān)文章:接地電阻測試方法
評論