
;********WAVE-E6000/T**************************
;*MCU: AT89C51 *
;*MCU-crystal: 6M *
;*Version: 00 *
;*Last Updata: *
;*Author: www.picavr.com *
;*Description:
; 基于89C2051的马达测度电路 *
;**********************************************
ORG 0000H ;程序执行开始地址
LJMP MAIN ;跳到标号START执行
ORG 0003H ;外中断0中断程序入口
RETI ;外中断0中断返回
ORG 000BH ;定时器T0中断程序入口
RETI ;跳至INTTO执行
ORG 0013H ;外中断1中断程序入口
RETI ;外中断1中断返回
ORG 001BH ;定时器T1中断程序入口
RETI ;跳至INTT1执行
ORG 0023H ;串行中断程序入口地址
RETI ;串行中断程序返回
;****************************************************************************
****
ORG 0030H ;程序从0030开始
MAIN: MOV P3,#11001111B ;端口P3初始化
MOV P1,#00H ;端口P1初始化
START: NOP
JNB P1.7,START ;判断-是否-开机
ACALL DL10MS ;开机延时10MS再判断
;****************************************************************************
****
START1: JNB P1.7,STOP ;判断--ON/OFF开关--是否-拨到OFF
JB P3.2,UP1 ;判断--下限位开关--是否-接触到
AJMP UP11 ;是则再判断--下限位开关
UP1: JNB P1.7,STOP ;判断--ON/OFF开关--是否-拨到OFF
JB P3.3,DOWN1 ;判断--上限位开关--是否-接触到
AJMP LOOP1 ;是则再判断--上限位开关
DOWN1: JNB P1.7,STOP
SETB P3.4 ;预设顺时针转动
CLR P3.5
LOOP1: JNB P1.7,STOP
JB P3.3,UP11 ;判断--上限位开关--是否-接触到是
则停止
CLR P3.4 ;马达停止
CLR P3.5
AJMP LOOP2 ;转到判断--奶瓶开关--是否按下
UP11: JNB P1.7,STOP
JB P3.2,LOOP1
CLR P3.4 ;逆时针返回
SETB P3.5
AJMP LOOP1 ;再判断--上限位开关--是否-接触到
;****************************************************************************
******
LOOP2: JNB P1.7,STOP ;判断--ON/OFF开关--是否-拨到OFF
JNB P3.1,LOOP3 ;判断--奶瓶开关--是否按下
JB P3.1,LOOP2 ;奶瓶开关--无按下再循环判断奶瓶
开关
;****************************************************************************
******
LOOP3: JNB P1.7,STOP ;判断--ON/OFF开关--是否-拨到OFF
JB P3.2,DOWN2 ;判断--下限位开关--是否-接触到
AJMP UP21
DOWN2: JNB P1.7,STOP ;判断--ON/OFF开关--是否-拨到OFF
JB P3.3,START2 ;判断--上限位开关--是否-接触到
AJMP LOOP4
START2: JNB P1.7,STOP
SETB P3.4 ;预设顺时针转动
CLR P3.5
;****************************************************************************
******
UP21 : JNB P1.7,STOP ;判断--ON/OFF开关--是否-拨到OFF
JB P3.2,LOOP4
CLR P3.4 ;逆时针返回
SETB P3.5
AJMP Middleloop ;判断奶瓶开关--是否按下
LOOP4: JNB P1.7,STOP
JB P3.3,Middleloop
SETB P3.4 ;顺时针转动
CLR P3.5
Middleloop: JNB P1.7,STOP
JNB P3.1,UP21 ;奶瓶开关--按下循环判断--上/下限
位开关
AJMP START1 ;奶瓶开关--无按下回到初始状态
;************* ON/OFF停止子程序
*****************************************************
STOP : JB P3.2,UP3 ;判断--下限位开关--是否-接触到
AJMP UP31
UP3: JB P3.3,DOWN3 ;判断--上限位开关--是否-接触到
AJMP LOOP5
DOWN3: SETB P3.4 ;预设顺时针转动
CLR P3.5
LOOP5: JB P3.3,UP31
CLR P3.4 ;马达停止
CLR P3.5
AJMP MAIN ;回到开机初始状态
UP31: JB P3.2,LOOP5
CLR P3.4 ;逆时针返回
SETB P3.5
AJMP LOOP5 ;再判断--上限位开关--是否-接触到
;*************延时节10MS子程序
******************************************************
DL10MS: MOV R6,#200
DL1: MOV R7,#250
DL2: DJNZ R7,DL2
DJNZ R6,DL1
RET
END
于12日评论道:
c4是复位用的,c1是高频滤波用的
先看了下电路,双端输入双端输出差分式放大电路。
有个问题: 上电复位电路的两个滤波电容C1、C4有何特殊用意?