红外霍尔传感测速仪的源代码 给大家分享一下
红外霍尔传感测速仪的源代码.zip
(4.71 KB, 下载次数: 31)
下面是汇编的源码:
- D_TMP EQU 35H
- COUNT1 EQU 36H
- COUNT2 EQU 37H
- ORG 0000H
- LJMP MAIN
- ORG 0003H
- LJMP ZHONGDUAN
- ORG 000BH
- LJMP TT0
- ORG 0030H
- MAIN:
- MOV 30H,#00H ;显示缓冲单元30H~33H
- MOV 31H,#00H
- MOV 32H,#00H
- MOV 33H,#00H
- mov 20h,#00h ;计数标志位20H
- MOV R6,#00H ;脉冲计数单元R6\R7
- MOV R7,#00H
- MOV P0,#0FFH
- MOV P1,#00H
- MOV P2,#0FFH
- MOV P3,#0ffH
- MOV COUNT1,#50 ;1S定时计数值
- MOV COUNT2,#60 ;1分定时计数值
- MOV TMOD,#01h
- MOV TL0,#00H ;20ms定时初值
- MOV TH0,#70H
- SETB TR0
- SETB ET0
- SETB EX0
- SETB IT0
- SETB PT0
- SETB EA
- LOOP:LCALL DISPLAY ;调用显示程序
- JNB 00h,LOOP ;计数标志位为0,则等待
- LCALL HEXTOBCDD ;调用十六进制数十十进制子程序
- LCALL bcd ;BCD码子程序
- CLR A
- MOV R6,A ;脉冲计数单元清0
- MOV R7,A
- CLR 00h ;计数标志位清0
- SJMP LOOP ;继续循环
- ZHONGDUAN: ;中断0程序
- MOV A,R7
- ADD A,#1
- MOV R7,A
- MOV A,R6
- ADDC A,#0
- MOV R6,A
- CJNE R6,#27H,NEXT ;计数最大值9999
- CLR A
- MOV R6 , A
- MOV R7 , A
- NEXT:RETI
- TT0: DJNZ count1,NEXT1 ;T0中断程序
- ;MOV COUNT1,#50 ;分转速计
- ;DJNZ COUNT2,NEXT1
- CLR EA
- SETB 00H ;计数标志位置1,则执行计数
- MOV COUNT1,#50
- ;MOV COUNT2,#60
- SETB EA
- NEXT1:MOV TL0,#00H
- MOV TH0,#70H
- RETI
- 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
- BCD: MOV R0 , #30H
- MOV A , R5
- ANL A , #0FH ;屏蔽R5中的低4位
- MOV @R0 , A ;存回以30H为地址的房间
- MOV A , R5 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- SWAP A ;R5高低4位互换
- ANL A , #0FH ;屏蔽R5中的低4位
- INC R0 ;存储地址加1指向31H
- MOV @R0 , A ;存回以31H为地址的房间
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- MOV A , R4 ;R4中的内容存A
- ANL A , #0FH ;屏蔽低4位
- INC R0 ;存储地址加1指向32H
- MOV @R0 , A ;存回以32H为地址的房间
- MOV A , R4 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- SWAP A ;R4高低位互换
- ANL A , #0FH ;屏蔽R5中的低4位
- INC R0 ;存储地址加1指向33H
- MOV @R0 , A ;存回以31H为地址的房间
- RET
- DISPLAY: ;显示程序
- MOV A,30H
- LCALL MM
- MOV P0,A
- CLR P2.0
- LCALL DELAY
- MOV A,31H
- LCALL MM
- MOV P0,A
- CLR P2.1
- LCALL DELAY
- MOV A,32H
- LCALL MM
- MOV P0,A
- CLR P2.2
- LCALL DELAY
- MOV A,33H
- LCALL MM
- MOV P0,A
- CLR P2.3
- LCALL DELAY
- RET
- MM: MOV P2,#0FFH
- MOV P0,#0FFH
- MOV DPTR,#TAB
- MOVC A,@A+DPTR
- RET
- TAB: DB 03FH , 06H , 5BH , 4FH , 66H , 6DH , 7DH , 07H , 7FH , 6FH ;七段码表
- DELAY: MOV D_TMP,#90; 100us延时
- LCALL DELAY1
- DELAY1: DJNZ D_TMP,$
- RET
- END
复制代码
|