《用AT89C51制作八位数字频率计》源程序(精)

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《用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

相关文档
最新文档