n久前的51汇编程序

51完整源程序(显示扫描的同时进行按键扫描):

SEC EQU       30H
MIN       EQU       31H
HOU       EQU       32H
 
HK   BIT  P1.5
MK  BIT  P1.6
SK   BIT  P1.7
 
DISPBUF       EQU       40H
DISPBIT EQU       48H
T2SCNT EQU       49H
 
 
       ORG       00H
       LJMP      START
       ORG       0BH
       LJMP      INT_T0
 
START:   MOV      SEC,#00H
       MOV      MIN,#00H
       MOV      HOU,#12
       MOV      DISPBIT,#00H
       MOV      T2SCNT,#00H
       LCALL    CH_VAL
 
       MOV      TMOD,#01H
       MOV      TH0,#(65536-50000)/256
       MOV      TL0,#(65536-50000)MOD 256
       SETB      EA
       SETB      ET0
       SETB      TR0
LOOP:
       LCALL DISP               
NK0:       JB    SK,NK1
       LCALL    DELAY10MS
       JB    SK,NK1
       INC SEC
       MOV      A,SEC
       CJNE      A,#60,NS60
       MOV      SEC,#00H
NS60:     LCALL    DISP
       JNB SK,NS60
NK1:       JB    MK,NK2
       LCALL    DELAY10MS
       JB    MK,NK2
       INC MIN
       MOV      A,MIN
       CJNE      A,#60,NM60
       MOV      MIN,#00H
NM60:    LCALL    DISP
       JNB MK,NM60
NK2:       JB    HK,NK3
       LCALL    DELAY10MS
       JB    HK,NK3
       INC HOU
       MOV      A,HOU
       CJNE      A,#24,NH24
       MOV      HOU,#00H
NH24:     LCALL    DISP
       JNB HK,NH24
NK3:      
       LJMP      LOOP
 
 
DELAY10MS:
       MOV      R6,#3
D1:  MOV      R7,#248
       DJNZ      R7,$
       DJNZ      R6,D1
       RET
 
DISP:
       MOV      A,#DISPBUF
       ADD       A,DISPBIT
       MOV      R0,A
       MOV      A,@R0
       MOV      DPTR,#TABLE
       MOVC    A,@A+DPTR
       MOV      P3,#0FFH
       MOV      P2,A
       MOV      A,DISPBIT
       MOV      DPTR,#TAB
       MOVC    A,@A+DPTR
       MOV      P3,A
       INC DISPBIT
       MOV      A,DISPBIT
       CJNE      A,#08H,DISP
       MOV      DISPBIT,#00H
       RET
 
CH_VAL:
       MOV      A,#DISPBUF
       ADD       A,#7             
       MOV      R1,A      
       MOV      A,HOU
       MOV      B,#10
       DIV AB
       MOV      @R1,A    ;47H
       DEC       R1  
       MOV      A,B
       MOV      @R1,A    ;46H
       DEC       R1  
       MOV      A,#10     ;显示“-”
       MOV      @R1,A    ;45H
       DEC       R1  
       MOV      A,MIN
       MOV      B,#10
       DIV AB
       MOV      @R1,A    ;44H
       DEC       R1  
       MOV      A,B
       MOV      @R1,A    ;43H
       DEC       R1  
       MOV      A,#10      ;显示“-”
       MOV      @R1,A    ;42H
       DEC       R1  
       MOV      A,SEC
       MOV      B,#10
       DIV AB
       MOV      @R1,A    ;41H
       DEC       R1  
       MOV      A,B
       MOV      @R1,A    ;40H
       RET
 
INT_T0:
       MOV      TH0,(65536-50000)/256
       MOV      TL0,(65536-50000)MOD 256
      
      INC T2SCNT
       MOV      A,T2SCNT
       CJNE      A,#20,DONE
       MOV      T2SCNT,#00H
       INC SEC
       MOV      A,SEC
       CJNE      A,#60,NEXT
       MOV      SEC,#00H
       INC MIN
       MOV      A,MIN
       CJNE      A,#60,NEXT
       MOV      MIN,#00H
       INC HOU
       MOV      A,HOU
       CJNE      A,#24,NEXT
       MOV      HOU,#00H
NEXT:    LCALL    CH_VAL
DONE:    RETI
 
TABLE:   DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,40H
TAB:       DB 07FH,0BFH,0DFH,0EFH,0F7H,0FBH,0FDH,0FEH
END


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值