谁有基于51单片机数字跑表的汇编程序的或者C语言程序的?

如题所述

KEYVAL EQU 30H

DAT  EQU 33H

SCANLED EQU 39H

CLK  EQU 77H

SEC  EQU 78H

SEC1 EQU 79H

SEC2 EQU 7AH

DOT  BIT 00H

ORG 0000H

LJMP MAIN

ORG 0003H

LJMP EXTINT0

ORG 000BH

LJMP T0ISR ;50ms定时

ORG 001BH

LJMP T1ISR ;扫描显示

ORG 0030H

MAIN:

  MOV SP,#5FH

  MOV TMOD,#11H

  MOV TH0,#03CH

  MOV TL0,#0B0H

  MOV TH1,#0ECH

  MOV TL1,#078H

  MOV KEYVAL,#0FFH

  MOV 33H,#10H

  MOV 34H,#10H

  MOV 35H,#10H

  MOV 36H,#10H

  MOV SEC,#0

  MOV SEC1,#0

  MOV SEC2,#0

  MOV CLK,#0

  SETB IT0

  SETB EX0

  CLR TR0

  CLR ET0

  SETB TR1

  SETB ET1

  SETB EA

LOOP:

  MOV A,KEYVAL

LOOP1:

  JNZ LOOP2 ;启动

  SETB TR0

  SETB ET0

  SJMP LOOP

LOOP2:

  DEC A

  JNZ LOOP3 ;暂停

  CLR TR0

  CLR ET0

  SJMP LOOP

LOOP3:

  DEC A

  JNZ LOOP4 ;清零

  MOV SEC,#0

  MOV SEC1,#0

  MOV SEC2,#0

  LCALL DISCHG

  SJMP LOOP

LOOP4:

  ;可以在此扩展想要的功能

  SJMP LOOP

;------------------

;十六进制转换为BCD

HBCD:

  MOV B,#10

  DIV AB 

  SWAP A 

  ORL A,B

  RET 

;--------------------

DELAY:

  MOV R3,#50

DELAY1:

  MOV R4,#100

  DJNZ R4,$

  DJNZ R3,DELAY1

  DJNZ R2,DELAY

  RET

;--------------------

EXTINT0:

  PUSH ACC

  INC KEYVAL

  MOV A,KEYVAL

  CJNE A,#3,EXT00

EXT00:

  JC EXT01

  MOV KEYVAL,#0

EXT01:

  POP ACC

  RETI

;--------------------

T0ISR:

  PUSH ACC

  CLR TR0

  MOV TH0,#3CH

  MOV TL0,#0B0H

  SETB TR0

  INC CLK

  MOV A,CLK

  CJNE A,#2,T0ISRE

  MOV CLK,#0

  INC SEC1

  MOV A,SEC1

  CJNE A,#100,T0ISRE

  MOV SEC1,#0

  INC SEC2

  MOV A,SEC2

  CJNE A,#100,T0ISRE

  MOV SEC,#0

  MOV SEC1,#0

  MOV SEC2,#0

T0ISRE:

  LCALL DISCHG

  POP ACC

  RETI

;--------------------

DISCHG:

  MOV A,SEC1

  LCALL HBCD

  PUSH ACC

  ANL A,#0FH

  MOV 36H,A

  POP ACC

  ANL A,#0F0H

  SWAP A

  MOV 35H,A

  MOV A,SEC2

  LCALL HBCD

  PUSH ACC

  ANL A,#0FH

  MOV 34H,A

  POP ACC

  ANL A,#0F0H

  SWAP A

  MOV 33H,A

  RET

;--------------------

T1ISR:

  PUSH ACC

  CLR TR1

  MOV TH1,#0ECH

  MOV TL1,#78H

  SETB TR1

  MOV DPTR,#LEDTAB

T100:

  MOV R0,#DAT

  MOV A,SCANLED

  ADD A,R0

  MOV R0,A

  MOV A,SCANLED

  JNZ T101

  MOV P2,#01H

  CLR DOT

  SJMP T1DIS

T101:

  DEC A

  JNZ T102

  MOV P2,#02H

  CLR DOT

  SJMP T1DIS

T102:

  DEC A

  JNZ T103

  MOV P2,#04H

  SETB DOT

  SJMP T1DIS

T103:

  DEC A

  JNZ T1DIS

  MOV P2,#08H

  CLR DOT

T1DIS:

  MOV A,@R0

  MOVC A,@A+DPTR

  JNB DOT,T1DIS1

  ORL A,#01H

T1DIS1:

  CPL A

  MOV P0,A

  INC SCANLED

  MOV A,SCANLED

  CJNE A,#4,T1END

  MOV SCANLED,#0

T1END:

  POP ACC

  RETI

;--------------------

LEDTAB: DB 0FCH ;"0" 00H

  DB 60H ;"1" 01H

  DB 0DAH ;"2" 02H

  DB 0F2H ;"3" 03H

  DB 66H ;"4" 04H

  DB 0B6H ;"5" 05H

  DB 0BEH ;"6" 06H

  DB 0E0H ;"7" 07H

  DB 0FEH ;"8" 08H

  DB 0F6H ;"9" 09H

  DB 0EEH ;"A" 0AH

  DB 3EH ;"B" 0BH

  DB 9CH ;"C" 0CH

  DB 7AH ;"D" 0DH

  DB 9EH ;"E" 0EH

  DB 8EH ;"F" 0FH

  DB 00H ;" " 10H

;--------------------

END

 

温馨提示:答案为网友推荐,仅供参考