《用制作八位数字频率计源程序》由会员分享,可在线阅读,更多相关《用制作八位数字频率计源程序(8页珍藏版)》请在金锄头文库上搜索。
1、用AT89C51制作八位数字频率计一文的完整程序清单及注释ORG 00H ;指定下条指令的地址AJMP MAIN ;跳转至MAIN50M 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.
2、0 ;LS393清零 ACALL COUNT ;调用二进制转BCD码程序JJ: POP PSW POP A RETI ORG 50H ;以下程序从地址50H开始MAIN: MOV SP,#50H ;将初始值赋予SPMOV 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 3
3、3H,#12H MOV R2,#00H MOV 23H,#00HHERE: MOV DPTR,#TABLE ;动态扫描程序 CLR C MOV A,R2 RLC A JMP A+DPTRTABLE: AJMP PG0 AJMP PG1 AJMP PG2 AJMP PG3 AJMP PG4 AJMP PG5 AJMP PG6 AJMP PG7PG0: 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 GOPG
4、1: MOV A,33H ANL A,#0FH MOV DPTR,#BOOK MOVC A,A+DPTR MOV P2,#0FFH MOV P0,#02H MOV P2,A AJMP GOPG2: 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 GOPG3: MOV A,32H ANL A,#0FH MOV DPTR,#BOOK MOVC A,A+DPTR MOV P2,#0FFH MOV P0,#08H MOV P2,A AJMP GOPG4: MO
5、V A,31H SWAP A ANL A,#0FH MOV DPTR,#BOOK MOVC A,A+DPTR MOV P2,#0FFH MOV P0,#10H MOV P2,A AJMP GOPG5: MOV A,31H ANL A,#0FH MOV DPTR,#BOOKMOVC A,A+DPTR MOV P2,#0FFH MOV P0,#20H MOV P2,A AJMP GOPG6: 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 GOPG7: M
6、OV 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 GO1GO: INC R2GO1: ACALL DELAY AJMP HERE ;多(四)字节二转十,经验证运行正确 ;入口R0为二进制低位字节地址指针,R7为字节数 ;出口R1为BCD码结果低位字节地址指针COUNT: MOV R0,#20H MOV R1,#30H MOV R7,#04HBMBCD: MOV A,R0 MOV R5,A MOV A,R1 MOV R6,A MOV A,R7 MO
7、V R3,A INC R3 CLR ACLBCD: MOV R1,A INC R1 DJNZ R3,CLBCD MOV A,R7 MOV B,#08H MUL AB MOV R3,ALP0: MOV A,R5 MOV R0,A MOV A,R7 MOV R2,A CLR CLP1: 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 R2LP2 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 ;开闸门 RETDELAY: MOV 70H,#05H ;延时子程序DDE: MOV 71H,#55HDE: DJNZ 71H,DE DJNZ