找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3538|回复: 0
收起左侧

八位秒表汇编语言程序 有用的拿去

[复制链接]
ID:171247 发表于 2017-3-17 16:37 | 显示全部楼层 |阅读模式
         ORG 0030H
MAIN:MOV SP,#60H
     MOV P2,#0FFH                        
         MOV P0,#0CH     ;输出P.
         ACALL DL
         ;AJMP LOOP

;下面实现按键功能,P1.0启动,P1.1暂停,P1.2清零

FIRST:ACALL KEY
S0:  JNB ACC.0,S1                 ;启动键
     ACALL DIR
         AJMP LOOP         

S1:         JNB ACC.1,S2                ;暂停键
     ACALL DIR
     AJMP FIRST

S2:  JNB ACC.2,FIRST        ;清零键
     MOV R0,#00H
         MOV R1,#00H
         MOV R2,#00H
         MOV R3,#00H
         MOV R4,#00H
         MOV R5,#00H
         MOV R6,#00H

         ACALL DIR

     AJMP FIRST

KS:  ;MOV 20H,A
     ;ACALL DIR
     MOV A,P1
     CPL A
         ANL A,#07H                 ;屏蔽高五位
         RET
KEY: ACALL KS
     JNZ AGAIN                         ;有键闭合则转向再次判断
         MOV A,20H
         AJMP EXTI             ;无键闭合则转向 ,暂时保留不写
AGAIN:MOV 20H,A
          ACALL DIR            ;延时六毫秒
      ACALL KS
      JNZ LKP              ;两次判断有键闭合,则转向按键键值判断
          MOV A,20H
          AJMP EXTI               ;第二次判断无键闭合,则转向,暂时保留不写


LKP:PUSH ACC
LK: ACALL DIR
           ACALL KS
        JNZ LK
        POP ACC
EXTI:RET
         
LOOP:                    ;计数器                       
            MOV R3,25H          ;个位数
         CJNE R3,#0AH,LOOP1
         
TEN: MOV R3,#00H
     INC R4                           ;秒位
     CJNE R4,#0AH,LOOP1
HUNDRED:
      MOV R4,#00H
      INC R5                   ;十秒位
          CJNE R5,#06H,LOOP1
THOUSAND:                           ;分位
      MOV R5,#00H
      INC R6
          CJNE R6,#0AH,LOOP1
TEN_THOUSAND:
      MOV R6,#00H                ;十分位
          INC R7
          CJNE R7,#06H,LOOP1
          MOV R7,#00H
LOOP1:ACALL DIR
         ACALL DELAY
         ACALL DIR
         ACALL DELAY
         MOV A,25H
         CJNE A,#0AH,LOOP2
         MOV 25H,#00H
         
LOOP2:INC 25H
     AJMP FIRST

DIR: MOV P2,#80H       ;位控制
     MOV A,R3          ;取个位数
     MOV DPTR,#TAB
         MOVC A,@A+DPTR
         MOV P0 ,A          ;输出段控码
         ;SJMP $
         ACALL DL           ;延时1毫秒

         MOV A,P2                        
         RR A
         MOV P2,A
         MOV P0,#0BFH     ;输出横杠线
         ACALL DL

         MOV A,P2                        
         RR A
         MOV P2,A
         MOV A,R4           ;取十位数
         MOVC A,@A+DPTR
         MOV P0,A
         ACALL DL

         MOV A,P2                        
         RR A
         MOV P2,A
         MOV A,R5           ;取百位数
         MOVC A,@A+DPTR
         MOV P0,A
         ACALL DL

         MOV A,P2                        
         RR A
         MOV P2,A
         MOV P0,#0BFH     ;输出横杠线
         ACALL DL

         MOV A,P2                        
         RR A
         MOV P2,A
         MOV A,R6           ;取千位数
         MOVC A,@A+DPTR
         MOV P0,A
         ACALL DL

         MOV A,P2                        
         RR A
         MOV P2,A
         MOV A,R7           ;取万位数
         MOVC A,@A+DPTR
         MOV P0,A
         ACALL DL

         RET



;延时一毫秒函数
DL:   MOV IE,#00H
      MOV TMOD,#10H      ;工作方式1,
      MOV TH1,#0FCH             ;延时程序 延时一毫秒
      MOV TL1,#18H
      SETB TR1
STEP1:JBC TF1,STEP2
      AJMP STEP1
STEP2:CLR TR1
      RET

;延时47毫秒
DELAY:MOV IE,#00H
      MOV TMOD,#10H      ;工作方式1,
      MOV TH1,#068H             ;延时程序  计数初值6868貌似很准确
      MOV TL1,#68H
      SETB TR1
ST1:JBC TF1,ST2
      AJMP ST1
ST2:CLR TR1
      RET


TAB: DB 0C0H                        ;段码表                共阳
     DB 0F9H
         DB 0A4H
         DB 0B0H
         DB 99H
         DB 92H
         DB 82H
         DB 0F8H
         DB 80H
         DB 90H
          END

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表