单片机脉冲计数器
1、
设计内容
用单片机实现对一路脉冲计数和显示的功能。硬件包括单片机最小系统、LED显示、控制按钮;软件实现检测到显示
2、
要求
计数范围0~2000;
脉冲输入有光电隔离整形,
有清零按钮
程序经调试无误,我们还作出了板子呢!
程序如下:
ORG 0000H
LJMP MAIN
ORG 0003H
LJMP 0100H
ORG 0013H
LJMP 0150H
ORG 0050H
MAIN: CLR A
MOV 30H , A ;初始化缓存区
MOV 31H , A
MOV 32H , A
MOV 33H , A
MOV R6 , A
MOV R7 , A
SETB EA
SETB EX0
SETB EX1
SETB IT0
SETB IT1
SETB PX1
NEXT1: ACALL HEXTOBCDD ;调用数制转换子程序
ACALL DISPLAY ;调用显示子程序
LJMP NEXT1
ORG 0100H ;中断0服务程序
MOV A , R7
ADD A , #1
MOV R7, A
MOV A , R6
ADDC A , #0
MOV R6 , A
CJNE R6 , #07H , NEXT
CLR A
MOV R6 , A
MOV R7 , A
NEXT: RETI
ORG 0150H ;中断1服务程序
CLR A
MOV R6 , A
MOV R7 , A
RETI
ORG 0200H
HEXTOBCDD:MOV A , R6 ;由十六进制转化为十进制
PUSH ACC
MOV A , R7
PUSH ACC
MOV A , R2
PUSH ACC
CLR A
MOV R3 , A
MOV R4 , A
MOV R5 , A
MOV R2 , #10H
HB3: MOV A , R7 ;将十六进制中最高位移入进位位中
RLC A
MOV R7 , A
MOV A , R6
RLC A
MOV R6 , A
MOV A , R5 ;每位数加上本身相当于将这个数乘以2
ADDC A , R5
DA A
MOV R5 , A
MOV A , R4
ADDC A , R4
DA A ;十进制调整
MOV R4 , A
MOV A , R3
ADDC A , R3
DJNZ R2 , HB3
POP ACC
MOV R2 , A
POP ACC
MOV R7 , A
POP ACC
MOV R6 , A
RET
ORG 0250H
DISPLAY: MOV R0 , #30H
MOV A , R5
ANL A , #0FH
MOV @R0 , A
MOV A , R5
SWAP A
ANL A , #0FH
INC R0
MOV @R0 , A
MOV A , R4
ANL A , #0FH
INC R0
MOV @R0 , A
MOV A , R4
SWAP A
ANL A , #0FH
INC R0
MOV @R0 , A
MOV R0 , #30H
MOV R2 , #11111110B
AGAIN: MOV A , R2
MOV P2 , A
MOV A , @R0
MOV DPTR , #TAB
MOVC A , @A+DPTR
MOV P0 , A
ACALL DELAY
INC R0
MOV A , R2
RL A
MOV R2 , A
JB ACC.4 , AGAIN
RET
TAB: DB 03FH , 06H , 5BH , 4FH , 66H , 6DH , 7DH , 07H , 7FH , 6FH ;七段码表
DELAY: MOV TMOD , #01H ;0.05s延时子程序
MOV TL0 , #0B0H
MOV TH0 , #3CH
SETB TR0
WAIT: JNB TF0 , WAIT
CLR TF0
CLR TR0
RET
END
这是原理图 |