数字转速表-源程序(汇编语言)

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

DAOT EQU 40H ;定时器T0软件计数器单元 SCNT EQU 41H ;送0832控制输出电压值 CKCH EQU 42H ;电机转速

CKCN EQU 43H

SETP EQU 44H

TEMP EQU 45H

ORG 0000H

STRT: LJMP MAIN

ORG 0003H ;外部中断0

LJMP PINT0

ORG 000BH ;定时器0

LJMP PTF0

ORG 0013H

LJMP LINT1 ;外部中断1

ORG 0030H

PTF0: MOV TH0,#0D0H ;以下是计算转速部分 PUSH Acc

PUSH PSW

SETB PSW.3

DJNZ SCNT,PTFJ

MOV SCNT,#64H

MOV A,CKCN

MOV B,#0AH ;B为十秒

DIV AB ;先除以10秒

MOV 39H,B ;把值给39H

MOV B,#0AH ;B为十次

DIV AB ;除以十次

MOV 3AH,B

MOV 3BH,A

MOV A,CKCN

CJNE A,SETP,PTFX ;观察显示几位,3位还是两位 SJMP PTFY

PTFX: JC PTFZ

DEC DAOT

SJMP PTFY

PTFZ: CJNE A,#3,$+3

JC PTFR

INC DAOT

PTFR: INC DAOT

PTFY: MOV CKCN,#0

MOV DPTR,#7FFFH

MOV A,DAOT

MOVX @DPTR,A

MOVX @DPTR,A

PTFJ: NOP

POP PSW

POP Acc

RETI

MAIN: MOV SP,#06FH ;堆栈指针赋值

MOV DPTR,#5FFFH ;指向8279命令/状态口

MOV A,#0DCH

MOVX @DPTR,A ;送显示RAM清零命令字0DCH LP: MOVX A,@DPTR

JB Acc.7,LP ;读8279的状态,直到DU不为1 MOV A,#00H

MOVX @DPTR,A

MOV A,#34H ;分频系数为20

MOVX @DPTR,A

CLR 12H

NOP

MOV R0,#39H

MOV R7,#06H

MLP0: MOV @R0,#17H

INC R0

DJNZ R7,MLP0

LCALL DIR

MOV DAOT,#06FH

MOV SCNT,#04H

MOV CKCH,#00H

MOV CKCN,#00H

SETB EA ;开总中断

NOP

SETB EX1 ;开外部中断1

NOP

CLR IT1 ;设置触发方式

NOP

MLP1: LCALL KEYI

ANL A,#0FH

CJNE A,#0AH,$+3

JNC MLP1

MOV 3EH,A

LCALL DIR

MLP2: LCALL KEYI

ANL A,#0FH

CJNE A,#0AH,$+3

JNC MLP2

MOV 3DH,A

MOV A,3EH

MOV B,#0AH

MUL AB ;时间乘以转的圈数

ADD A,3DH

MOV SETP,A

MOV DPTR,#7FFFH ;指向0832地址

MOV A,DAOT

MOVX @DPTR,A

MOV A,#1

ORL A,TMOD

MOV TMOD,A ;设置定时器方式为计数

MOV TH0,#0F0H

MOV TL0,#00H

SETB TR0

SETB EA ;开相关中断,就是一些开关 SETB ET0

SETB EX0

SETB IT0

SETB EX1

CLR IT1

NOP

MOV IP,#04H

MLP4: MOV DPTR,#7FFFH

MOV A,DAOT

MOVX @DPTR,A

LCALL DIR ;调用显示程序

LJMP MLP4

PINT0: PUSH Acc

INC CKCN

MOV A,CKCN

JNZ PIPI

INC CKCN ;一次中断脉冲数加一PIPI: POP Acc

RETI

LINT1: PUSH Acc ;压入堆栈,现场保护 PUSH DPH

PUSH DPL

MOV DPTR,#5FFFH ;指向8279

MOV A,#40H ;40H值为200

MOVX @DPTR,A

MOV DPTR,#5EFFH ;取数据

MOVX A,@DPTR

MOV 27H,A ;把取数据(转速)给27H SETB 12H ;中断标志位打开

NOP

POP DPL

POP DPH

POP Acc

RETI

KEYI: JNB 12H,KEYI ;等待中断到来 MOV A,27H

CLR C

SUBB A,#10 ;十次脉冲信号到,灯取反 JNC TTT1

MOV A,27H

CLR 12H

RET

TTT1: MOV A,27H

CLR C

SUBB A,#04H

CLR 12H ;中断标志位手动清0 RET

DIR: MOV R2,#06H ;显示程序

MOV A,#92H ;输入显示命令字

MOV DPTR,#5FFFH

MOVX @DPTR,A

MOV R1,#39H ;显示数据首地址

TY11: MOV A,@R1

MOV DPTR,#LCODE

MOVC A,@A+DPTR

MOV DPTR,#5EFFH

MOVX @DPTR,A ;写入显示RAM

INC R1 ;显示地址加一

DJNZ R2,TY11

RET

LCODE: DB 0C0H,0F9H,0A4H,0B0H,99H

DB 92H,82H,0F8H,80H,90H,88H

DB 83H,0C6H,0A1H,86H,8EH,8CH

DB 0C1H,89H,0C7H,0BFH,91H

DB 00H,0FFH

END

相关文档
最新文档