首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

[分享]~整理硬盘发现以前找到的绕线机计数器程序~

[分享]~整理硬盘发现以前找到的绕线机计数器程序~

7Xk67mgS.gif


电路图中的电阻R3的一端不是接地的,是接电源正端VCC的。还有R5、R6、R7三只电阻连接到地的(在复制图时没有选取到一小段)。

使用两个光电开关作检测的,可以精确到0.1圈。


用4011组成的RS触发电路就可分出正反方向了。如你利害的话可以用软件来实现。注:用74LS00是不能正常工作的,因为它还有0.5V左右的电压,单片机和它接上不能正常计数。用CD4011就解决了。程序等下再上传。


[此贴子已经被作者于2008-7-24 12:45:30编辑过]

xYHgEV4f.jpg (82.88 KB)

[分享]~整理硬盘发现以前找到的绕线机计数器程序~

xYHgEV4f.jpg

人要保持斗志,并有疯狂的追求,生活才会精彩! QQ:24387110 手机:13871563876

可预置0——9999任意数的程序(是HEX),等下有人需要的话,发源代码

ErDEcym9.rar (2.1 KB)
人要保持斗志,并有疯狂的追求,生活才会精彩! QQ:24387110 手机:13871563876

下面是5位数可逆记数程序:

;**************************;
; 绕线机计数器程序 ;
; CPU : AT89C2051 ;
; 作者:137
; 2005-02-01 ;
;*************************;

ORG 0000H ;程序执行开始地址
LJMP START ;跳至START执行
ORG 0003H ;外中断0中断入口地址
LJMP INTEXT0 ;
ORG 000BH ;定时器T0中断入口地址
RETI ;中断返回
ORG 0013H ;外中断1中断入口地址
LJMP INTEXT1 ;
ORG 001BH ;定时器T1中断入口地址
RETI ;中断返回
ORG 0023H ;串行口中断入口地址
RETI ;中断返回
ORG 002BH ;定时器T2中断入口地址
RETI ;中断返回

;************;
; 初始化程序 ;
;************;

CLEAR: MOV A,#00H;
MOV R0,A
MOV R1,A
MOV R2,A
MOV R3,A
MOV R4,A
MOV P3,#0FFH
MOV P1,#0FFH
LJMP MAIN; 跳到主程序开始计数

START: MOV P1,#0FFH; 开机显示LIN.P
MOV P3,#0FFH
MOV R4,#0AH;L
MOV R3,#0BH;I
MOV R2,#0CH;N
MOV R1,#0DH;
MOV R0,#0EH
JNB P1.7,START1;如清零键按下跳至清零确认程序
ACALL DISPLAY;
AJMP START
START0: MOV R4,#0EH 清零时显示"P L"
MOV R3,#0DH;
MOV R2,#0DH;
MOV R1,#0AH;L
MOV R0,#0DH;
START1: ACALL DISPLAY; 等待键释放
JNB P1.7, START1
AJMP CLEAR

;************;
; 主 程 序 ;
;************;

MAIN: ACALL DISPLAY; 调用显示程序
MOV P1,#0FFH; 置P1口为输入状态
MOV P3,#0FFH; 置P3口为输入状态
JNB P1.7,START0; 如清零键按下跳至清零程序
SETB IT0
SETB EX0
SETB IT1
SETB EX1
SETB EA; 开总中断
AJMP MAIN


;************;
; 加1程序 ;
;************;

INTEXT0: PUSH ACC; 进栈
PUSH PSW;
INC R0; 寄存单元R0加1
CJNE R0,#0AH,INT0OUT; R0数是否在10内0-9
MOV R0,#00H; 如到了则将R0置0
INC R1; R1加1
CJNE R1,#0AH,INT0OUT; .
MOV R1,#00H; .
INC R2; .
CJNE R2,#0AH,INT0OUT
MOV R2,#00H
INC R3
CJNE R3,#0AH,INT0OUT
MOV R3,#00H
INC R4
CJNE R4,#0AH,INT0OUT
MOV R4,#00H
INT0OUT: POP PSW; 出栈
POP ACC
RETI; 中断返回

;************;
; 减1程序 ;
;************;

INTEXT1: PUSH ACC; 进栈
PUSH PSW
DEC R0; R0减1
CLR C; 清进位标致
CJNE R0,#0FFH,INT1OUT; 判断R0是不在0-9中
MOV R0,#09H; 不是将R0置9
DEC R1; R1减1
CLR C; .
CJNE R1,#0FFH,INT1OUT; .
MOV R1,#09H; .
DEC R2;
CLR C
CJNE R2,#0FFH,INT1OUT
MOV R2,#09H
DEC R3
CLR C
CJNE R3,#0FFH,INT1OUT
MOV R3,#09H
DEC R4
CLR C
CJNE R4,#0FFH,INT1OUT
MOV R4,#09H
INT1OUT: POP PSW
POP ACC
RETI
;************;
; 显示程序 ;
;************;
DISPLAY: MOV DPTR,#NUMTAB
MOV A,R0
MOVC A,@A+DPTR
MOV P1,A
CLR P3.0; 选中小数位显示
ACALL D1MS
SETB P3.0

MOV A,R1
MOVC A,@A+DPTR
MOV P1,A
CLR P3.1; 选中个位数显示
ACALL D1MS
SETB P3.1

MOV A,R2
MOVC A,@A+DPTR
MOV P1,A
CLR P3.4; 选中十位数显示
ACALL D1MS
SETB P3.4

MOV A,R3
MOVC A,@A+DPTR
MOV P1,A
CLR P3.7; 选中百位数显示
ACALL D1MS
SETB P3.7

MOV A,R4
MOVC A,@A+DPTR
MOV P1,A
CLR P3.5; 选中千位数显示
ACALL D1MS
SETB P3.5
RET

;*******;
;延时程序;
;*******;
D1MS: MOV R7,#2
DJNZ R7,$
RET
;*********;
; 查表程序 ;
;*********;
NUMTAB: DB 03FH;0
DB 006H;1
DB 05BH;2
DB 04FH;3
DB 066H;4
DB 06DH;5
DB 07DH;6
DB 007H;7
DB 07FH;8
DB 06FH;9
DB 038H;L
DB 030H;I
DB 037H;N
DB 000H;
DB 073H
END

人要保持斗志,并有疯狂的追求,生活才会精彩! QQ:24387110 手机:13871563876

谢谢版主 呵呵

支持!多谢分享!![em01]
多谢分享了[em02]
发贴心情
多谢分享了图片点击可在新窗口打开查看

太佩服楼主了 谢谢了

东西不错,多谢了

zcllom 我作为一个新手 像你这样敬业的斑竹致敬

返回列表