|
用proteus设计的电路仿真,51单片机定时器做6位数字频率计原理图如上.
汇编源程序:
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP IT0P
ORG 0040H
MAIN:MOV 30H,#14H
MOV 40H,#00H
MOV 41H,#00H
MOV P0,#00H
MOV P1,#00H
MOV P2,#00H
MOV TMOD,#51H
MOV IE,#82H
MOV TH0,#3CH
MOV TL0,#0B0H
MOV TH1,#00H
MOV TL1,#00H
SETB TR0
SETB TR1
SJMP $
/********中断服务程序********/
IT0P:MOV TH0,#3CH
MOV TL0,#0B0H
DJNZ 30H,LAST
MOV 41H,TH1
MOV 40H,TL1
CLR TR1
CLR TR0
LCALL EXCH
LCALL DISPLAY
MOV TH1,#00H
MOV TL1,#00H
LAST:RETI
/********转换子程序********/
/*40H低8位,41H高8位,42H个位,43H十位,44H百位,45H千位,46H万位;R3,R4余数*/
EXCH:PUSH PSW
PUSH Acc
MOV R0,#40H
MOV R1,#46H
MOV R2,#00H
WANW:CLR C ;减去10000,所减的次数就是万位,次数存在R2上
MOV R0,#40H
MOV A,@R0
SUBB A,#10H
MOV R3,A
INC R0
MOV A,@R0
SUBB A,#27H
MOV R4,A
JC QIAN
INC R2
MOV 40H,R3
MOV 41H,R4
JMP WANW
QIAN:MOV 46H,R2 ;减去1000,所减的次数就是千位,次数存在R2上
MOV R2,#00H
QIAA:CLR C
MOV R0,#40H
MOV A,@R0
SUBB A,#0E8H
MOV R3,A
INC R0
MOV A,@R0
SUBB A,#03H
MOV R4,A
JC BAIW
INC R2
MOV 40H,R3
MOV 41H,R4
JMP QIAA
BAIW:MOV 45H,R2 ;减去100,所减的次数就是百位,次数存在R2上
MOV R2,#00H
BAIB:CLR C
MOV R0,#40H
MOV A,@R0
SUBB A,#64H
MOV R3,A
INC R0
MOV A,@R0
SUBB A,#00H
MOV R4,A
JC SHIW
INC R2
MOV 40H,R3
MOV 41H,R4
JMP BAIB
SHIW:MOV 44H,R2 ;减去10,所减的次数就是十位,次数存在R2上
MOV R2,#00H
SHIS:CLR C
MOV R0,#40H
MOV A,@R0
SUBB A,#0AH
MOV R3,A
JC GEWW
INC R2
MOV 40H,R3
JMP SHIS
GEWW:MOV 43H,R2
MOV 42H,40H
POP Acc
POP PSW
RET
/********转换子程序********/
DISPLAY:PUSH PSW
PUSH Acc
MOV A,#00H
ORL A,46H
MOV P0,A
MOV A,45H
SWAP A
ORL A,44H
MOV P1,A
MOV A,43H
SWAP A
ORL A,42H
MOV P2,A
POP Acc
POP PSW
RET
END
|
|