编一个AT89C51单片机00 —99 秒的汇编程序,要求有循环和暂停,用两个独立数码管显示

如题所述

;利用中断的99秒计时器 ,动态扫描两位数码管

;P0口接J3,数据端口

;P2.2接 J2 B端子,表示段码锁存

;P2.3接 J2 A端子,标志位码锁存

LATCH1 BIT P2.2

LATCH2 BIT P2.3

ORG 00H

JMP START

ORG 0BH

JMP TIM0

START:MOV R3,#00   ;中断循环次数

      MOV R4,#0    ;时间初值

      MOV DPTR,#TABLE

      MOV SP,#40H

      MOV TMOD,#01H  ;定时器工作方式

      MOV TH0,#HIGH(65536-3800)

      MOV TL0,#LOW(65536-3800)  ;初值4MS

      SETB TR0

      MOV IE,#82H  ;开中断

TIM0:

     MOV TH0,#HIGH(65536-3800)

     MOV TL0,#LOW(65536-3800)

     INC R3

     CJNE R3,#250,X1  ;1S

     MOV R3,#0

              

     MOV A,R4       ;十进制转换

     MOV B,#10

     DIV AB

     MOV 20H,B  ; 个位

     MOV 21H,A  ; 十位

     INC R4

     CJNE R4,#100,LEDSCAN  ;到100则清零

     MOV R4,#0

LEDSCAN: CALL SCAN  ;调用数码管扫描

X1:   PUSH ACC

      PUSH PSW

      CALL SCAN

      POP PSW

      POP ACC

      RETI

SCAN:

     MOV A,21H

     MOVC A,@A+DPTR

     MOV P0,A

     SETB LATCH1

     CLR LATCH1

     MOV P0,#11111110B ;扫描子程序

     SETB LATCH2

     CLR LATCH2

     CALL DELAY1

     MOV A,20H

     MOVC A,@A+DPTR

     MOV P0,A

     SETB LATCH1

     CLR LATCH1

     MOV P0,#11111101B  ;0代表选通该位数码管

     SETB LATCH2

     CLR LATCH2

     CALL DELAY1

     RET

DELAY:MOV R5,#50         ;典型延时程序

D1:   MOV R6,#40

D2:   MOV R7,#248

      CALL SCAN

      DJNZ R7,$

      DJNZ R6,D2

      DJNZ R5,D1

      RET

DELAY1:MOV R6,#4    ;扫描延时

D3:    MOV R7,#248

       DJNZ R7,$

       DJNZ R6,D3

       RET

TABLE:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH    ;共阴字码表

END 

是用动态扫描的方法显示的,用了2个锁存器,8个数码管的。 

附上电路图

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-10-14

ORG 0000H

LJMP MAIN

ORG 000BH

LJMP T0ISR

ORG 0030H

MAIN:

MOV TMOD,#01H

MOV TH0,#HIGH(65536-10000)

MOV TL0,#LOW(65536-10000)

SETB ET0

SETB TR0

SETB EA

SETB 00H

LOOP:

SJMP LOOP

T0ISR:

CLR TR0

MOV TH0,#HIGH(65536-10000)

MOV TL0,#LOW(65536-10000)

SETB TR0

MOV DPTR,#TABLE

T0C:

CPL 00H

JB 00H,T001

MOV P3,#0FDH

MOV A,R1

MOVC A,@A+DPTR

MOV P2,A

SJMP T002

T001:

MOV P3,#0FEH

MOV A,R0

MOVC A,@A+DPTR

MOV P2,A

T002:

INC R2

MOV A,R2

CJNE A,#100,T0E

MOV R2,#0

INC R0

CJNE R0,#9,T0E

MOV R0,#0

INC R1

CJNE R1,#9,T0E

MOV R1,#0

T0E:

RETI

TABLE:      ; 共阴极数码管显示代码表

DB    3FH,06H,5BH,4FH,66H ;01234

DB    6DH,7DH,07H,7FH,6FH ;56789


END

本回答被网友采纳
第3个回答  2011-04-25
wo lai bangzhu ni