0.png (21.12 KB, 下載次數: 73)
下載附件
2016-9-25 17:12 上傳
0.png (46.24 KB, 下載次數: 74)
下載附件
2016-9-25 17:11 上傳
用51單片機匯編語言做的頻率計的所有資料下載:
六位頻率計.zip
(32.79 KB, 下載次數: 40)
2016-9-25 17:13 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
匯編語言源程序:
- VALUEH EQU 20H ;暫存TH1的值
- VALUEL EQU 21H ;暫存TL1的值
- DATE0 EQU 22H ;暫存計數值的BCD碼
- DATE1 EQU 23H
- DATE2 EQU 24H
- DATE3 EQU 25H
- DATE4 EQU 26H
- DATE5 EQU 27H
- COUNT EQU 30H
- ;-----------------------------------------------------------------------------
- ORG 0000H
- SJMP MAIN
- ORG 000BH
- LJMP INT_T0
- ORG 001BH
- LJMP INT_T1
- MAIN: MOV DPTR,#TABLE
- MOV 20H,#00H ;存儲空間初始化
- MOV 21H,#00H
- MOV 22H,#00H
- MOV 23H,#00H
- MOV 24H,#00H
- MOV 25H,#00H
- MOV 26H,#00H
- MOV 30H,#00H
- MOV R1,#00H ;R1作為計數器溢出的次數
- MOV TMOD,#15H ;定時器1工作在定時方式
- ;定時器0工作在計數方式
- MOV TH1,#3CH
- MOV TL1,#0B8H
- MOV TH0,#00H
- MOV TL0,#00H
- MOV IE,#8AH ;開啟定時器0和1
- SETB TR0 ;啟動定時
- SETB TR1 ;啟動計數
- W1:
- LCALL DISP ;顯示計數值
- LJMP W1
- ;------------------------------------------------------------------------
- INT_T0: ;中斷0作為計數器溢出
- ;溢出R1加1
- MOV TH0,#00H
- MOV TL0,#00H
- INC R1
- CLR TF0
- RETI
- INT_T1: MOV TH1,#3CH
- MOV TL1,#0B8H
- INC COUNT
- MOV A,COUNT
- CJNE A,#20,RETUNE ;是否計滿1秒
- MOV COUNT,#00H
- CLR TR0 ;關閉定時器
- CLR TR1 ;關閉計數器
- MOV VALUEL,TL0 ;存放計數值
- MOV VALUEH,TH0
-
- LCALL HTOD
- ;將十六進制數轉換為十進制數
- RETUNE:
- RETI
- ;-------------------------------------------------------------------------------------
- ;這段程序將VALUEH/VALUEL中的16進制數轉成10進制并且把5位數依次存入DATE0至DATE4
- ;-------------------------------------------------------------------------------------
- HTOD:
- MOV R2,VALUEH ;把計數器的值送到R2,R3
- MOV R3,VALUEL ;送到R2,R3后把R2,R3里面壓縮的十六位的二進制數轉換成十進制數
- CLR A ;然后存放到R4,R5,R6中
- MOV R4,A
- MOV R5,A
- MOV R6,A
- MOV R7,#18H
- LOOP1:
- CLR C
- MOV A,R3
- RLC A
- MOV R3,A
- MOV A,R2
- RLC A
- MOV R2,A
- MOV A,R1
- RLC A
- MOV R1,A
-
- MOV A,R6
- ADDC A,R6
- DA A
- MOV R6,A
-
- MOV A,R5
- ADDC A,R5
- DA A
- MOV R5,A
-
- MOV A,R4
- ADDC A,R4
- DA A
- MOV R4,A
- DJNZ R7,LOOP1
- CZ: MOV R0,#DATE5 ;把R4,R5,R6中的數放到DATE0~DATE5中
- MOV A,R6
- ANL A,#0FH
- MOV @R0,A
-
- DEC R0
- MOV A,R6
- SWAP A
- ANL A,#0FH
- MOV @R0,A
-
- DEC R0
- MOV A,R5
- ANL A,#0FH
- MOV @R0,A
-
- DEC R0
- MOV A,R5
- SWAP A
- ANL A,#0FH
- MOV @R0,A
-
- DEC R0
- MOV A,R4
- ANL A,#0FH
- MOV @R0,A
- DEC R0
- MOV A,R4
- SWAP A
- ANL A,#0FH
- MOV @R0,A
- RET
- ;-----------------顯示子程序----------------------------------------------
- DISP:
- MOV A,DATE5 ;把DATE5~DATE0送到數碼管顯示
- MOVC A,@A+DPTR
- MOV P2,#0FFH
- CLR P2.2
- MOV P1,A
- LCALL DL1MS
- SETB P2.2
- MOV A,DATE4
- MOVC A,@A+DPTR
- MOV P2,#0FFH
- CLR P2.3
- MOV P1,A
- LCALL DL1MS
- MOV P2,#0FFH
- MOV A,DATE3
- MOVC A,@A+DPTR
- MOV P2,#0FFH
- CLR P2.4
- MOV P1,A
- LCALL DL1MS
- MOV P2,#0FFH
- MOV A,DATE2
- MOVC A,@A+DPTR
- MOV P2,#0FFH
- CLR P2.5
- MOV P1,A
- LCALL DL1MS
- MOV P2,#0FFH
- MOV A,DATE1
- MOVC A,@A+DPTR
- MOV P2,#0FFH
- CLR P2.6
- MOV P1,A
- LCALL DL1MS
- MOV P2,#0FFH
- MOV A,DATE0
- MOVC A,@A+DPTR
- MOV P2,#0FFH
- CLR P2.7
- MOV P1,A
- LCALL DL1MS
- MOV P2,#0FFH
- RET
- ;-----------------------------------------------------------------------
- DL1MS: MOV R6,#14H ;1MSDELAY
- DL1: MOV R7,#19H
- DL2: DJNZ R7,DL2
- DJNZ R6,DL1
- RET
- TABLE: DB 3FH,06H,5BH,4FH,66H
- DB 6DH,7DH,07H,7FH,6FH
- END
復制代碼
|