紅外霍爾傳感測速儀的源代碼 給大家分享一下
0.png (66.64 KB, 下載次數: 86)
下載附件
2016-10-30 12:18 上傳
紅外霍爾傳感測速儀的源代碼.zip
(4.71 KB, 下載次數: 31)
2016-10-25 18:08 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
下面是匯編的源碼:
- 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
復制代碼
|