数字转速表-源程序(汇编语言)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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