當前位置:編程學習大全網 - 編程軟體 - 單片機控制步進電機匯編語言程序

單片機控制步進電機匯編語言程序

默認認為步進電機的驅動電路是全步的,輸入高電平正傳

P1.2連方向線,P1.1連脈沖線,200步為1周,定時中斷為5ms,電機轉1周1秒

11.0592MHz晶震,5ms中斷初值為EE00H

RUNEN BIT 20H;電機動作開關

RUND BIT 21H;方向標誌位,1為正傳

PUCON DATA 40H;脈沖計數器

SECON DATA 41H;秒鐘計數器

STCON DATA 42H;電機停時中斷計數器

ORG 0000H

LJMP MAIN

ORG 002BH

LJMP CTC2

ORG 100H

MAIN:

MOV SP,#7FH

MOV PUCON,#200;脈沖數200

MOV SECON,#3;秒數3秒。即3圈

MOV STCON,#100;停時中斷次數100

MOV TH2,#0EEH;送初值

MOV TL2,#0

MOV RCAP2H,#0EEH

MOV RCAP2L,#0

SETB P1.2;設定正傳

SETB RUNEN;開電機動作開關

SETB RUND;設定正傳

SETB ET2

SETB EA

LOOP1:

JB P1.0 ,LOOP2;查詢輸入

MOV TH2,#0EEH

MOV TL2,#0

MOV T2CON,#00000100B;開始計數,等中斷

LOOP2:

SJMP LOOP1

CTC2:

JNB RUNEN,NEXT1;電機動作開關為1,送脈沖,為0,進入0.5秒計時程序

CPL P1.1

DJNZ PUCON,EXIT;脈沖計數

MOV PUCON,#200

JNB RUND,NEXT3;為1,正傳,運行下步,為0,反轉,到next3

DJNZ SECON,EXIT;計數圈數

MOV SECON,#3

CLR RUNEN;先關電機動作開關,等待0.5秒

SJMP EXIT

NEXT1:

DJNZ STCON,EXIT;計時0.5秒

MOV STCON,#100;完了,下步

CPL RUND;開始反轉

SETB RUNEN;開始送脈沖

CPL P1.2;外部設定為反轉

SJMP EXIT

NEXT3:

CPL RUND

MOV T2CON,#0;關掉T2,等待P1.0輸入0

EXIT:

RETI

PS:我把反轉那1圈的脈沖用正傳的計數器來算

  • 上一篇:電主軸刀具無法夾緊的問題怎麽處理?
  • 下一篇:編程空間
  • copyright 2024編程學習大全網