專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計(jì)實(shí)例 >> 瀏覽文章

合泰單片機(jī)控制5線4相步進(jìn)電機(jī)控制程序

作者:huqin   來(lái)源:本站原創(chuàng)   點(diǎn)擊數(shù):  更新時(shí)間:2014年02月11日   【字體:

;步進(jìn)電機(jī)的驅(qū)動(dòng)信號(hào)必須為脈沖信號(hào)!!! 轉(zhuǎn)動(dòng)的速度和脈沖的頻率成正比!!!
; 28BYJ48步進(jìn)電機(jī)步進(jìn)角為 5.625度
; A組線圈對(duì)應(yīng) PC.0
; B組線圈對(duì)應(yīng) PC.1
; C組線圈對(duì)應(yīng) PC.2
; D組線圈對(duì)應(yīng) PC.3
; 正轉(zhuǎn)次序: AB組--BC組--CD組--DA組 (即一個(gè)脈沖,正轉(zhuǎn)5.625度)
; 完整的源程序下載:http://www.torrancerestoration.com/f/htbjdj.rar
include HT66F50.inc

ORG 0000H
JMP A1
ORG 0014H ;多功能中斷入口地址
JMP ZD1
ORG 002DH
Q1:
DC 03H ; 0 AB
DC 06H ; 1 BC
DC 0CH ; 2 CD
DC 09H ; 3 DA
A1: 

MOV A,08H ;跟CP1C寄存器設(shè)置要求選擇數(shù)據(jù)
MOV CP1C,A ;設(shè)置PC口為I/0口而不是中斷口
CLR PCC ;設(shè)置pc 口為輸出口
MOV A,0 ;設(shè)置初始脈沖
MOV [80H],A ;

MOV A,00000000B ;設(shè)置TM2 計(jì)數(shù)時(shí)鐘位為fSYS/4
MOV TM2C0,A
MOV A,11000001B ;設(shè)置TM2中斷為定時(shí)/計(jì)數(shù)模式選擇比較器A匹配
MOV TM2C1,A
MOV A,LOW  5000 ;設(shè)置中斷時(shí)間為5000個(gè)時(shí)鐘周期
MOV TM2AL,A ;低8位
MOV A,HIGH 5000 ;設(shè)置中斷時(shí)間為5000個(gè)時(shí)鐘周期
MOV TM2AH,A ;高8位不能少于3500個(gè)時(shí)鐘周期否則無(wú)法啟動(dòng)
CLR MF0F ;清多功能中斷0標(biāo)志
CLR T2AF ;清定時(shí)器2較器A中斷標(biāo)志
SET MF0E ;使能多功能0中斷
SET T2AE ;使能定時(shí)器2較器A中斷
SET EMI ;使能總中斷
SET T2ON ;開始計(jì)數(shù)

JMP $ ;
;*******************************************************
; 中斷服務(wù)子程序
;******************************************************* 
ZD1: 
MOV [0F0H],A ;壓棧ACC到0F0H
MOV A,STATUS ;
MOV [0F1H],A ;壓棧status標(biāo)志寄存器到0F1H

 

MOV A,Q1 ;數(shù)據(jù)表地址
CLR TBHP ;清數(shù)據(jù)表地址高位否則出錯(cuò)

ADD A,[80H] ;利用間接寄存器找到數(shù)據(jù)表的地址 
MOV TBLP,A ;表格指針寄存器TBLP
TABRD PC ;查表并將數(shù)據(jù)存到PC口寄存器

INC [80H] ;數(shù)據(jù)表地址加1控制下一相線圈
MOV A,4
SUB A,[80H] ;判斷是否完成4相
SNZ Z
JMP ZD2 ;否則跳出中斷
MOV A,0 ;是則從新初始化寄存器數(shù)據(jù)
MOV [80H],A ; 
ZD2: 
MOV A,[0F1H] ;彈棧后進(jìn)先出先進(jìn)后出 
MOV STATUS,A ;彈棧0F1H的數(shù)到標(biāo)志寄存器
MOV A,[0F0H] ;彈棧0F0H的數(shù)到acc
CLR MF0F ;清多功能標(biāo)志
CLR T2AF ;清定時(shí)器2比較器A標(biāo)志
RETI ;中斷返回

END

關(guān)閉窗口

相關(guān)文章