1
嵌入式设计应用
计数器是数字系统中用得较多的基本逻辑器件。计数器采用全自动贴片封装工艺,具有很强的抗干扰能力,并具有多种输出功能和控制功能,多种计数模式,广泛运用于电力、石化、冶金、轻工、制药、航空等诸多领域。
脉冲计数器的基本功能是统计时钟脉冲的个数,即实现计数操作,它也可用于分频、定时、产生节拍脉冲和脉冲序列等。例如,计算机中的时序发生器、分频器、指令计数器等都要使用计数器。
计数器的种类很多。按构成计数器中的各触发器是否使用一个时钟脉冲源来分,可分为同步计数器和异步计数器;
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 J
B 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
全部0条评论
快来发表一下你的评论吧 !