程序大概如下,INT模块还没完成,发现有16位的计数需要进一步修正,还未压栈保护,可进一步在软件里面修改,留个邮箱给我把。
ORG 0000H
LJMP MAIN
ORG 0003H
JMP INIT0
ORG 000BH //TIMER0 中断入口标号
LJMP ITL0
MAIN:
MOV TMOD,01H
MOV TH0,#0ecH
MOV TL0,#78H
MOV IE,#83H
MOV R1,#00 ;存t值
MOV R0,#00 ;存j值
MOV R2,#00 ;存n值
MOV R4,#00 ;mb值低8位
MOV R5,#00 ;mb值高8位
SETB IT0;
SETB TR0
LOOP: JB P3.0 LOOP
ACALL delay200
SETB P3.0
SJMP LOOP
delay200:mov R3,#250
D1:DJNZ R3,D1
RET
INIT0:
CLR P3.0
MOV A,R2
JNZ PER1
MOV R4,#00
MOV R5,#00
PER1:
MOV B,A
MOV A,#2EH ;12000的高8位
DIV AB
MOV R5,A ;存入R5
MOV A,B
ADD A,#E0H ;加上高8位的余数
MOV B,R2
DIV AB
MOV R4,A
RETI
ITL0:
MOV TH0,#0ecH
MOV TL0,#78H
MOV DPTR,#BitTab
MOV A,R0
MOVC A,@DPTR+A
MOV R1,A
MOV A,P3
ORL A,#38H
ANL A,R1
MOV P3,A
MOV DPTR,DispBuf
MOV A,R0
MOVC A,@DPTR+A
MOV DPTR,DispTab
MOVC A,@DPTR+A
MOV P1,A
INC R0
CJNE R0,#03H,CONT
MOV R0,#00
INC R2
CJNE R2,#64H,CONT
MOV R2,#00
CONT: RETI
DispTab
看看这个吧,这是我以前写的,根据你程序的意思把这两个加起来,大概意思上你需要的几个功能步骤应该都概括了
ORG 0000H
LJMP MAIN
ORG 000BH //中断入口标号
LJMP TOC
MAIN:
MOV TMOD,#22H
MOV TH0,#0FFH
MOV TL0,#0FFH
MOV TH1,#06H
MOV TL1,#06H
clr p3.0
SETB EA
SETB ET0
SETB TR0
SJMP $
TOC: //T0中断
SETB TR1
CLR P3.0
SETB P3.1
JNB TF1,$
CLR TF1
SETB P3.0
JNB TF1,$
CLR TF1
CLR P3.1
CLR TR1
RETI
END
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
这是另一段程序
ORG 0000h
MOV SCON,#0
MOV R6,#0
SETB TR0
SETB ET0
SETB EA
MOV TMOD,#00000001B
D:
MOV R7,#14H
D1:
MOV TH0,#3CH
MOV TL0,#0B0H
JNB TF0,$
CLR TF0
DJNZ R7,D1
JNB P1.7,$
JNB P1.0,D3
CJNE R6,#100,D2
D3:MOV R6,#0
D2:
MOV A,R6
INC R6
LCALL SEGOUT
LJMP D
SEGOUT:
MOV B,#10
DIV AB
MOV DPTR,#LEDMAP
MOVC A,@A+DPTR
MOV SBUF,A
JNB TI,$
CLR TI
MOV A,B
MOVC A,@A+DPTR
MOV SBUF,A
JNB TI,$
CLR TI
RET
LEDMAP:
DB 01h,9dh,24h,98h,58h,40h,1fh, 0H,08h
END
没问题,花了点时间写的!
ORG 0000H
JMP MAIN
ORG 0003H
JMP INIT0
ORG 000BH
JMP TIMER0
ORG 0030H
MAIN: MOV TOMD,#01H
MOV TH0,#0ECH
MOV TL0,#078H
MOV IE,#083H
SETB IT0
SETB TR0
LOOP: JNB P3.0,LOOP
CALL DELAY200
SETB P3.0
JMP LOOP
INIT0: CLR P3.0
; 计算转速...省略...
RETI
TIMER0: MOV TH0,#0ECH
MOV TL0,#078H
; 定时扫描LED...省略....
RETI
三位数码管的定时器驱动的动态刷新显示啊,加一个外中断处理啊,你把它读懂了就能自己写了,都不用别人来帮忙的.
别怕,很简单的东西,自信一点,踏实一点.