资源说明:《用AT89C51制作八位数字频率计》一文的完整程序清单及注释
ORG 00H ;指定下条指令的地址
AJMP MAIN ;跳转至MAIN
50M
INC 23H
RETI
ORG 001BH ;定时器T1中断入口,T1作定时,T0作计数
PUSH A ;累加器A压入堆栈
PUSH PSW ;状态寄存器压入堆栈
DJNZ 40H,JJ ;产生1s定时时标
MOV 40H,#0C8H
DJNZ 41H,JJ
CLR P3.1 ;关闭闸门
ANL 88H,#0AFH ;1s末,关闭T0和T1
MOV 20H,P1
MOV 21H,TL0 ;T0计数值送21H和22H
MOV 22H,TH0
SETB P3.0 ;LS393清零
ACALL COUNT ;调用二进制转BCD码程序
JJ: POP PSW
POP A
RETI
ORG 50H ;以下程序从地址50H开始
MAIN: MOV SP,#50H ;将初始值赋予SP
MOV TH1,#06H ;将初始值赋予TH0
MOV TL1,#06H ;将初始值赋予TL0
MOV TMOD,#25H ;设定时器方式
SETB TR0 ;启动计数器0
SETB TR1
SETB EA
SETB ET1
SETB ET0
MOV 40H,#0C8H
MOV 41H,#28H
MOV 30H,#78H
MOV 31H,#56H
MOV 32H,#34H
MOV 33H,#12H
MOV R2,#00H
MOV 23H,#00H
HERE: MOV DPTR,#TABLE ;动态扫描程序
CLR C
MOV A,R2
RLC A
JMP @A+DPTR
TABLE: AJMP PG0
AJMP PG1
AJMP PG2
AJMP PG3
AJMP PG4
AJMP PG5
AJMP PG6
AJMP PG7
PG0: MOV A,33H ;显示最高位
SWAP A
ANL A,#0FH ;屏蔽高四位
GG: MOV DPTR,#BOOK
MOVC A,@A+DPTR
MOV P2,#0FFH ;关闭段显示
MOV P0,#01H
MOV P2,A
AJMP GO
PG1: MOV A,33H
ANL A,#0FH
MOV DPTR,#BOOK
MOVC A,@A+DPTR
MOV P2,#0FFH
MOV P0,#02H
MOV P2,A
AJMP GO
PG2: MOV A,32H
SWAP A
ANL A,#0FH
MOV DPTR,#BOOK
MOVC A,@A+DPTR
MOV P2,#0FFH
MOV P0,#04H
MOV P2,A
AJMP GO
PG3: MOV A,32H
ANL A,#0FH
MOV DPTR,#BOOK
MOVC A,@A+DPTR
MOV P2,#0FFH
MOV P0,#08H
MOV P2,A
AJMP GO
PG4: MOV A,31H
SWAP A
ANL A,#0FH
MOV DPTR,#BOOK
MOVC A,@A+DPTR
MOV P2,#0FFH
MOV P0,#10H
MOV P2,A
AJMP GO
PG5: MOV A,31H
ANL A,#0FH
MOV DPTR,#BOOK
MOVC A,@A+DPTR
MOV P2,#0FFH
MOV P0,#20H
MOV P2,A
AJMP GO
PG6: MOV A,30H
SWAP A
ANL A,#0FH
MOV DPTR,#BOOK
MOVC A,@A+DPTR
MOV P2,#0FFH
MOV P0,#40H
MOV P2,A
AJMP GO
PG7: MOV A,30H
ANL A,#0FH
MOV DPTR,#BOOK
MOVC A,@A+DPTR
MOV P2,#0FFH
MOV P0,#80H
MOV P2,A
MOV R2,#00H
AJMP GO1
GO: INC R2
GO1: ACALL DELAY
AJMP HERE
;多(四)字节二转十,经验证运行正确
;入口R0为二进制低位字节地址指针,R7为字节数
;出口R1为BCD码结果低位字节地址指针
COUNT: MOV R0,#20H
MOV R1,#30H
MOV R7,#04H
BMBCD: MOV A,R0
MOV R5,A
MOV A,R1
MOV R6,A
MOV A,R7
MOV R3,A
INC R3
CLR A
CLBCD: MOV @R1,A
INC R1
DJNZ R3,CLBCD
MOV A,R7
MOV B,#08H
MUL AB
MOV R3,A
LP0: MOV A,R5
MOV R0,A
MOV A,R7
MOV R2,A
CLR C
LP1: MOV A,@R0
RCL A
MOV @R0,A
INC R0
DJNZ R2,LP1
MOV A,R6
MOV R1,A
MOV A,R7
MOV R2,A
INC R2
LP2 MOV A,@R1
ADDC A,@R1
DA A
MOV @R1,A
INC R1
DJNZ R2,LP2
DJNZ R3,LP0
MOV A,R6
MOV R1,A
MOV 41H,#28H
MOV 40H,#0C8H
MOV TH1,#06H
MOV TL1,#06H
MOV TH0,#00H
MOV TL0,#00H
MOV 23H,#00H
ORL 88H,#50H ;启动T1/T0
CLR P3.0
NOP ;时间微调
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
SETB P3.1 ;开闸门
RET
DELAY: MOV 70H,#05H ;延时子程序
DDE: MOV 71H,#55H
DE: DJNZ 71H,DE
DJNZ 70H,DDE
RET
BOOK: DB 0C0H,0F9H,0A4H,0B0H,99H ;字段代码
DB 92H,82H,0F8H,80H,90H
END
本源码包内暂不包含可直接显示的源代码文件,请下载源码包。