遙控電機程序
;*步進電機控制程序p3.2正轉(zhuǎn),p3.3反轉(zhuǎn),p3.4停止 步進電機接p1.0p1.1p1.2p1.3 *
;********************************************************************************
;* 日期: 2007-3-25 *
;* 版本: 3.0 *
;* 作者: 深圳學(xué)林電子有限公司 專業(yè)8051單片機教程站 *
;* 郵箱: sxj1974@163.com *
;* 網(wǎng)站: http://www.51c51.com http://www.8951.com 更多例程請登陸網(wǎng)站 *
;********************************************************************************
;* 硬件:此程序在本公司xlisp系列單片機實驗儀運行通過 *
;********************************************************************************
;* 【版權(quán)】 Copyright(C)深圳學(xué)林電子有限公司 www.51c51.com All Rights Reserved *
;* 【聲明】 此程序僅用于學(xué)習(xí)與參考,引用請注明版權(quán)和作者信息! *
;********************************************************************************
hex格式文件下載(點右鍵,目標另存為hex即可直接燒寫)
org 00h
stop: orl p1,#0ffh ; 步進電機停止
loop: jnb p3.2,for2 ; 如果p3.2按下正轉(zhuǎn)
jnb p3.3,rev2 ; 如果p3.3按下反轉(zhuǎn)
jnb p3.4,stop1 ; 如果p3.4按下停止
jmp loop ;反復(fù)監(jiān)測鍵盤
for: mov r0,#00h ;正轉(zhuǎn)到tab取碼指針初值
for1: mov a,r0 ;取碼
mov dptr,#table ;
movc a,@a+dptr
jz for ;是否到了結(jié)束碼00h
cpl a ;把acc反向
mov p1,a ;輸出到p1開始正轉(zhuǎn)
jnb p3.4,stop1 ;如果p3.4按下停止
jnb p3.3,rev2 ;如果p3.3按下反轉(zhuǎn)
call delay ;轉(zhuǎn)動的速度
inc r0 ;取下一個碼
jmp for1 ;繼續(xù)正轉(zhuǎn)
rev: mov r0,#05h ;反轉(zhuǎn)到tab取碼指針初值
rev1: mov a,r0
mov dptr,#table ;取碼
movc a,@a+table
jz rev ;是否到了結(jié)束碼00h
cpl a ;把acc反向
mov p1,a ;輸出到p1開始反轉(zhuǎn)
jnb p3.4,stop1 ;如果p3.4按下停止
jnb p3.3,rev2 ;如果p3.3按下反轉(zhuǎn)
call delay ;轉(zhuǎn)動的速度
inc r0 ;取下一個碼
jmp rev1 ;繼續(xù)反轉(zhuǎn)
stop1: call delay ;按p3.4的消除抖動
jnb p3.4,$ ;p3.4放開否?
call delay ;放開消除抖動
jmp stop
for2: call delay ;按p3.2的消除抖動
jnb p3.2,$ ;p3.2放開否?
call delay ;放開消除抖動
jmp for
rev2: call delay ;按p3.3的消除抖動
jnb p3.3,$ ; p3.3放開否?
call delay ;放開消除抖動
jmp rev
delay: mov r1,#40 ;步進電機的轉(zhuǎn)速20ms
d1:mov r2,#248
djnz r2,$
djnz r1,d1
ret
table:
db 03h,09h,0ch,06h ;正轉(zhuǎn)表
db 00 ;正轉(zhuǎn)結(jié)束
db 03h,06h,0ch,09h ;反轉(zhuǎn)
db 00 ;反轉(zhuǎn)結(jié)束
end
評論