MOV TH1,#0FDH
MOV SCON,#40H
MOV PCON,0
CLR TI
CLR RI
SETB TR1
MOV R0,#30H
MOV A,@R0
MOV SBUF,A
WAIT: JNB TI,WAIT
CLR TI
RET
;******************************************显示子程序********************************************
display: MOV a,1AH ;将1AH中的十六进制数转换成10进制或16进制
MOV b,#10 ;10进制/10=10进制,此时输出按键对应的键号,00~31
; MOV b,#16 ;10进制/16=16进制,此时输出按键的16进制编码,00~1F
div ab
MOV a_bit,a ;十位在a
MOV b_bit,b ;个位在b
MOV dptr,#numtab ;指定查表启始地址
MOV r0,#4
dpl1: MOV r1,#250 ;显示1000次
dplop: MOV a,b_bit ;取个位数
MOV C A,@A+DPTR;查个位数的7段代码
MOV p1,a ;送出个位的7段代码
SETB p0.0 ;开个位显示
acall d1ms ;显示1ms
CLR P0.0
MOV a,a_bit ;取十位数
MOV C A,@A+DPTR;查十位数的7段代码
MOV p1,a ;送出十位的7段代码
SETB P0.1 ;开十位显示
acall d1ms ;显示1ms
CLR P0.1
CLR P0.2
CLR P0.3
djnz r1,dplop ;100次没完循环
djnz r0,dpl1 ;4个100次没完循环
ret
D1MS: MOV R4,#250 ;延时1ms
DJNZ R4,$
RET
numtab: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H ;字形码表"0","1","2"~"7"
DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H ;字形码表"8","9","A"~"F"
;=============延时子程序1,精确延时882微秒=========================================
;YS1: MOV R4,#20 ;12M晶振请用此句延时
YS1: MOV R4,#17 ;11.0592M晶振请用此句延时
D1: MOV R5,#20
DJNZ R5,$
DJNZ R4,D1
RET
;============延时子程序2,精确延时4740微秒==========================================
YS2: MOV R4,#10
;D2: MOV R5,#235 ;12M晶振请用此句延时
D2: MOV R5,#217 ;11.0592M晶振请用此句延时
DJNZ R5,$
DJNZ R4,D2
RET
;=============延时程序3,精确延时1000微秒===========================================
YS3: MOV R4,#2
;D3: MOV R5,#248 ;12M晶振请用此句延时
D3: MOV R5,#230 ;11.0592M晶振请用此句延时
DJNZ R5,$
DJNZ R4,D3
RET
;=========================
END
本文关键字:单片机 51单片机,单片机-工控设备 - 51单片机
上一篇:三相步进电机驱动电路