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

📄 djd.asm

📁 用于控制电剪刀的一段汇编代码
💻 ASM
📖 第 1 页 / 共 2 页
字号:

         INCLUDE     HT48R06A-1.INC
         DATA       .SECTION  'DATA'

         TIME_H           EQU     [40H]   ;--------临时单元
         TIME_L           EQU     [41H]   ;--------临时单元    
         SECOND           EQU     [42H]   ;--------开,关门及其它标志单元
         SECOND1          EQU     [43H]   ;--------遥控器空间存储指针
         MIUNE            EQU     [44H]   ;--------消键抖延时单元      
         OPEN_COUNT       EQU     [45H]     
         WORK_TIME        EQU     [46H]   ;--------临时单元
         WORK_SECOND      EQU     [47H]   ;--------临时单元

         COUNTH           EQU     [48H]   ;--------临时单元
         COUNTL           EQU     [49H]   ;--------临时单元
         DLCOUNT          EQU     [4AH]   ;--------临时单元
         FFDT3            EQU     [4BH]   ;--------临时单元
         FFDT4            EQU     [4CH]   ;--------临时单元
         FFDT5            EQU     [4DH]   ;--------临时单元
         FFDT6            EQU     [4EH]   ;--------临时单元
         FFDT7            EQU     [4FH]   ;--------临时单元

         TMP1             EQU     [50H]   ;--------读写EEPROM低位
         TMP2             EQU     [51H]   ;--------读写EEPROM高位
         TMP3             EQU     [52H]   ;--------解码临时单元
         TMP4             EQU     [53H]   ;--------解码临时单元
         MAICHONG_H       EQU     [54H]   ;--------解码临时单元
         MAICHONG_L       EQU     [55H]   ;--------解码临时单元
         BJCOUNT_H        EQU     [56H]   ;--------解码临时单元
         BJCOUNT_L        EQU     [57H]   ;--------解码临时单元

         CSR0             EQU     [58H]   ;--------解码临时单元
         CSR1             EQU     [59H]   ;--------解码临时单元
         CSR2             EQU     [5AH]   ;--------解码临时单元
         CSR3             EQU     [5BH]   ;--------解码临时单元
         CNT2             EQU     [5CH]   ;--------解码临时单元
         COUNT_WAIT       EQU     [5DH]   ;--------解码临时单元          
         RAM_HI           EQU     [5EH]   ;--------解码临时单元          
         RAM_LW           EQU     [5FH]   ;--------解码临时单元

         ETMP1            EQU     [60H]   ;--------解码临时单元
         CNT5             EQU     [61H]
         CNT6             EQU     [62H]
         ADDRTEMP         EQU     [63H]   ;--------EEPROM地址的辅助单元    
         BUF              EQU     [64H]
      
         TXNUM            EQU     [65H]  ;--------临时单元
         FLAGS            EQU     [66H]  ;--------标志单元
         CNT0             EQU     [67H]  ;--------临时单元
         OUTBYT           EQU     [68H]  ;--------临时单元
         ADDRESS          EQU     [69H]  ;--------读写EEPROM地址单元
         LEARNFG          EQU     [6AH]
         CNT1             EQU     [6BH]
      
         error_count      EQU     [6CH]
         BUF1             EQU     [6DH]
         BUF2             EQU     [6EH]
         BUF3             EQU     [6FH]

         KEY_NUMBER       EQU     [70H]
         LEARNL           EQU     [71H]
         LEARNH           EQU     [72H]
         LEARNADDR        EQU     [73H]
         YKQFLAG          EQU     [74H]
         ;KEY_NUMBER_A    EQU     [75H]

         PUSHA            EQU     [76H]   ;--------保存ACC单元
         PUSHST           EQU     [77H]   ;--------保存STATUS单元 
         TIMH             EQU     [78H]
         TIML             EQU     [79H]
         SETTIMH          EQU     [7AH]
         SETTIML          EQU     [7BH]
         AADD             EQU     [7CH]
                  
         PACFG            EQU     10011111B
         PBCFG            EQU     00000011B
         PCCFG            EQU     00000001B
;//////////////////////////////////////////
         NC1              EQU PA.0; *--I
         NC2              EQU PA.1; *--I
         NC3              EQU PA.2; *--I
         KZ_INPUT         EQU PA.3; *--I
         OPEN_SIN         EQU PA.4; *--I
         CLOSE_OUT        EQU PA.5; *--O
         OPEN_OUT         EQU PA.6; *--O
         CLOSE_SIN        EQU PA.7; *--I
        
         VOLTAG_WATCHER   EQU PB.0; *--I
         POWER_IN         EQU PB.1
         POWER_INT        EQU PC.0

         CODE  .SECTION   AT  0 'CODE'
;*************************************************
;        VECTOR  START
;*************************************************
         ORG     00H
         JMP     START
         ORG     08H
         JMP     INT_TIME

;################################################
;***********  定时中断入口 ************************ 
;################################################ 
         CODE1  .SECTION   AT  10H 'CODE'         
INT_TIME:
         CLR     WDT2
         MOV     PUSHA,A
         MOV     A,STATUS         
         MOV     PUSHST,A
         MOV     A,1
         ADDM    A,TIME_L
         MOV     A,0
         ADCM    A,TIME_H
         MOV     A,TIME_L
         SUB     A,0A0H
         SZ      ACC
         JMP     INT_TIME_A
         MOV     A,TIME_H
         SUB     A,0FH
         SZ      ACC
         JMP     INT_TIME_A
         CLR     TIME_H
         CLR     TIME_L
         INC     SECOND

INT_TIME_A:    
         MOV     A,PUSHST
         MOV     STATUS,A         
         MOV     A,PUSHA   
         RETI

;****************************************************
;		MAIN PROCESS
;  BUF1 AS HIGH BYTE FOR EEPROM WRITE
;****************************************************

START:
         CLR     INTC.0                  ;禁止所有中断
         MOV     A,       PACFG 
         MOV     PA,      A
         MOV     A,       PACFG          ;初始化,PA,PB,PC,PG端口
         MOV     PAC,     A
         MOV     PA,      A

         MOV     A,       PBCFG
         MOV     PB,      A  
         MOV     A,       PBCFG
         MOV     PBC,     A
         MOV     PB,      A   

         MOV     A,       PCCFG
         MOV     PCC,     A
         MOV     PC,      A      

;****************************************************
         MOV     A,       40H      ;CLEAR RAM区
         MOV     MP0,     A
SETRAM:;----------------------------断点1
         MOV     A,       0
         MOV     R0,      A      
         INC     MP0
         MOV     A,       MP0
         SUB     A,       0FFH
         SZ      ACC
         JMP     SETRAM  
         MOV     A,5
         MOV     INTC,A
         MOV     A,6
         MOV     TMR,A
         MOV     A,81H
         MOV     TMRC,A
         SET     TMRC.4
         MOV     A,07
         MOV     WDTS,A

;********系统主程序入口**********************************
BEGIN:	
         CLR     OPEN_OUT
         CLR     CLOSE_OUT
         CLR     OPEN_COUNT

BEGIN_A:
         CALL    DELAY 
         SNZ     OPEN_SIN
         JMP     WORK
         SET     OPEN_OUT
         CLR     SECOND

BEGIN_B:
         CLR     WDT1
         SNZ     OPEN_SIN
         JMP     WORK
         MOV     A,SECOND
         SUB     A,2
         SNZ     C
         JMP     BEGIN_B
         CLR     OPEN_OUT
         CLR     CLOSE_OUT 
         INC     OPEN_COUNT  
      
WORK:    
         SNZ      OPEN_SIN         
         JMP      WORK_A
         MOV      A,OPEN_COUNT
         SUB      A,3
         SNZ      C
         JMP      BEGIN_A
         JMP      ERROR

WORK_A:
         CLR      OPEN_OUT
         CLR      CLOSE_OUT 
         CLR      WDT1
         CLR      AADD
         SNZ      VOLTAG_WATCHER
         JMP      WORK_A
         SZ       KZ_INPUT
         JMP      WORK_A
         MOV      A,0FFH
         MOV      COUNT_WAIT,A

WORK_B:
         TABRDC   TMP1
         TABRDC   TMP1
         TABRDC   TMP1

         SDZ      COUNT_WAIT
         JMP      WORK_B
         SZ       KZ_INPUT
         JMP      WORK_A
         SET      CLOSE_OUT
         CALL     DELAY_A

WORK_C:
         SNZ      POWER_IN
         JMP      POWER_STOP
         SNZ      KZ_INPUT
         JMP      WORK_E
         MOV      A,0FFH
         MOV      COUNT_WAIT,A

WORK_D:
         TABRDC   TMP1
         TABRDC   TMP1
         TABRDC   TMP1
         TABRDC   TMP1
         TABRDC   TMP1
         SDZ      COUNT_WAIT
         JMP      WORK_D  
         SZ       KZ_INPUT    
         JMP      WORK_STOP
         
WORK_E:  CLR     AADD
         SZ       CLOSE_SIN
         JMP      WORK_C

         MOV      A,0FFH
         MOV      COUNT_WAIT,A

WORK_M:
         TABRDC   TMP1
         TABRDC   TMP1
         TABRDC   TMP1
         TABRDC   TMP1
         TABRDC   TMP1
         SDZ      COUNT_WAIT
         JMP      WORK_M  
         SZ       CLOSE_SIN
         JMP      WORK_C

         MOV      A,0FFH
         MOV      COUNT_WAIT,A

WORK_N:
         TABRDC   TMP1
         TABRDC   TMP1
         TABRDC   TMP1
         TABRDC   TMP1
         TABRDC   TMP1
         SDZ      COUNT_WAIT
         JMP      WORK_N  

         SZ       CLOSE_SIN
         JMP      WORK_C
         SET      AADD

WORK_STOP: 
         CLR      OPEN_OUT
         CLR      CLOSE_OUT
         CLR      WDT1
         ;CALL     DELAY

WORK_END:  
         SNZ      KZ_INPUT   
         JMP      WORK_STOP 
         ;CALL     DELAY
         SNZ      KZ_INPUT
         JMP      WORK_STOP 
         CLR      SECOND 
         SET      OPEN_OUT

⌨️ 快捷键说明

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