⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 定时记数器.asm

📁 用汇编语言写的了一个定时计数器的程序
💻 ASM
字号:
         ORG 0000H
         AJMP BEGIN
         ORG 000BH
         AJMP COUNT
         ORG 0030H
  BEGIN: MOV DPTR,#8003H
         MOV A,#80H
         MOVX @DPTR,A
         MOV SP,#50H
         MOV 08H,#4H           ;控制记数
         MOV R1,#21H           ;R1指向21H单元
         MOV TMOD,#01H         ;若是功能键则
         MOV TH0,#3CH
         MOV TL0,#0B0H
         MOV IE,#82H
 RETURN: ACALL SCAN            ;键盘扫描
         CJNE A,#0FFH,NEXT     ;如果有键按下则转移
         SJMP RETURN
  NEXT:  CJNE A,#0AH,NEXT1     ;判断键型
  NEXT1: LCALL DELAY200MS      ;延时等待,以防键盘多次反应
         JC NUM
         CJNE A,#0Ah,RESENT     ;若是复位键则转移到复位程序
         JB 00H,TT1            ;开记时程序
         SETB 00H
         SETB TR0
         MOV R4,#14H


         SJMP RETURN
  TT1:   CLR 00H               ;暂停记时
         CLR TR0


         SJMP RETURN           ;继续扫描
 RESENT: CLR TR0
         SJMP BEGIN
 NUM:    DJNZ 08H,GOTO         ;检验数字位如已经输入三个数字则不在允许用户键数字
         MOV 08H,#1H
         SJMP RETURN
  GOTO:  LCALL DISPLAY1        ;显示数字
         LCALL DELAY200MS
         SJMP RETURN           ;继续扫描



  COUNT:













XXXXXX:  MOV A,0CH
         MOV B,#100
         MUL AB
         MOV 0CH,A          ;
         MOV A,0BH         ;
         MOV B,#10
         MUL AB
         ADD A,0CH
         ADD A,0AH
         MOV R3,A
         CJNE A,#100,THEN1
  THEN1: JC ERROR


  ERROR:







 SCAN:    CLR P1.0              ;键盘扫描子程序**********************************************
          CLR P1.1              ;                 占用资源RO,A,26H,字型码出口为26H
          CLR P1.2              ;                 数字出口为A. 堆栈2字节
          CLR P1.3              ;              **********************************************
          MOV A,P1

          ANL A,#0F0H
          CJNE A,#0F0H,KEYSCAN   ;如有键按下则转移
          SJMP EXIT
  KEYSCAN:ACALL DLY20MS          ;延时
          MOV R0,#00H            ;列数用R0来记录
          CLR P1.0
          SETB P1.1
          SETB P1.2
          SETB P1.3
          MOV A,P1
          ANL A,#0F0H
          CJNE A,#0F0H,TTTT1     ;若在本行则转移
          MOV A,R0               ;扫描下一行
          ADD A,#4H
          MOV R0,A
          SETB P1.0
          CLR P1.1
          SETB P1.2
          SETB P1.3
          MOV A,P1
          ANL A,#0F0H
          CJNE A,#0F0H,TTTT1     ;若在本行则转移
          MOV A,R0               ;扫描下一行
          ADD A,#4H
          MOV R0,A
          SETB P1.0
          CLR P1.1
          SETB P1.2
          SETB P1.3
          MOV A,P1
          ANL A,#0F0H
          CJNE A,#0F0H,TTTT1     ;若在本行则转移
  EXIT:   MOV A,#0FFH            ;如无键按下则推退出
          SJMP DONE
  TTTT1:  JB P1.4,TTTT2          ;如按键不在本行则转移
          MOV A,#00H             ;在则将0放热A 中
          AJMP TTTT5
  TTTT2:  JB P1.5,TTTT3          ;如按键不在本行则转移
          MOV A,#01H             ;在则将1放热A 中
          AJMP TTTT5
  TTTT3:  JB P1.6,TTTT4          ;如按键不在本行则转移
          MOV A,#02H             ;在则将2放热A 中
          AJMP TTTT5
  TTTT4:  JB P1.7,TTTT5          ;如按键不在本行则转移
          MOV A,#03H             ;在则将3放热A 中
          AJMP TTTT5
  TTTT5:  ADD A,R0

          MOV 25H,A
  TEXT:   MOV DPTR,#KEYTAB
          MOVC A,@A+DPTR
          MOV 26H,A
          MOV A,25H
   DONE:  RET

   KEYTAB:DB 3FH,06H,5BH,4FH
          DB 66H,6DH,7DH,07H
          DB 7FH,6FH,70H,40H




 DLY20MS: MOV 22H,#70H        ; 延时20毫秒子程序       *******占用资源22h,23h****************
    DY1: MOV 23H,#69H
    DY2: DJNZ 23H,DY2
         DJNZ 22H,DY1
         RET
DELAY200MS: MOV 22H,#25          ;延时0.5秒子程序         *****占用资源22h,23h,24h************
   DL333:  MOV 23H,#100
   DL222:  MOV 24H,#49
   DL111:  DJNZ 24H,DL111
            DJNZ 23H,DL222
           DJNZ 22H,DL333
           RET


 DISPLAY1:
          MOV 09H,25H          ;将数字保存
          MOV A,R6
          MOV R7,A
          MOV A,R5
          MOV R6,A
          MOV R5,26H         ;将字型码送r5
          MOV A,0BH
          MOV 0CH,A
          MOV A,0AH          ;数字百位在0Ch ,十位送0Bh ,个位送0AH
          MOV 0BH,A          ;****************************************************************
          MOV 0AH,09H        ;  本子程序占用资源:R5,R6,25H,26H,27H,28H,29H,2AH,2BH,2C.
          SJMP TTPLAY        ;   程序出口:29h,28h为被##,2ch,2bh中为##
                             ;****************************************************************

 TTPLAY: MOV DPTR,#8002H       ;显示子程序
         MOV A,R5
         MOVX @DPTR,A
         MOV DPTR,#8001H
         MOV A,R6
         MOVX @DPTR,A
         MOV DPTR,#8000H
         MOV A,R7
         MOVX @DPTR,A
         RET


 DONGTAI: MOV @R1,#0E0H          ;动态显示数据显示输入时由右向左显示频率
          MOV A,10H
          XCHD A,@R1
          MOV DPTR,#6000H
          MOV A,@R1
          MOVX @DPTR,A
          MOV @R1,#0D0H
          MOV A,11H
          XCHD A,@R1
          MOV DPTR,#6000H
          MOV A,@R1
          MOVX @DPTR,A
          MOV @R1, #0B0H
          MOV A,12H
          XCHD A,@R1
          MOV DPTR,#6000H
          MOV A,@R1
          MOVX @DPTR,A
          MOV @R1,#70H
          MOV A,13H
          XCHD A,@R1
          MOV DPTR,#6000H
          MOV A,@R1
          MOVX @DPTR,A
    THEN: AJMP dongtai

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -