lde060223am.asm

来自「中颖SH69P20 彩灯控制源程序,渐亮渐暗.」· 汇编 代码 · 共 596 行

ASM
596
字号
;====================================LED===============================
  ;SH69P20B
  ;ROM=4028K
  
;==============================SYS RAM=================================
 IE       EQU    00H
 IRQ      EQU    01H
 TM0      EQU    02H
 TL0      EQU    04H
 TH0      EQU    05H
 PA       EQU    08H
 PB       EQU    09H
 PC       EQU    0AH
 TBR      EQU    0EH
 INX      EQU    0FH
 DPL      EQU    10H
 DPM      EQU    11H
 DPH      EQU    12H
 PULL     EQU    15H
 PACR     EQU    16H
 PBCR     EQU    17H
 PCCR     EQU    18H
 T0       EQU    1CH
 WDT      EQU    1EH 
;==============================DATA RAM===============================
TEMP      EQU    20H
T00       EQU    21H
T01       EQU    22H
T02       EQU    23H
T03       EQU    24H
T04       EQU    25H
T05       EQU    26H
TT00      EQU    27H
TT01      EQU    28H
TT02      EQU    29H
TT03      EQU    2AH
TT04      EQU    2BH
TT05      EQU    2CH
F_FLAG0   EQU    2DH     ;F口检测标记
D_FLAG1   EQU    2EH
E_FLAG0   EQU    2FH
D_FLAG0   EQU    30H
C_FLAG0   EQU    31H
B_FLAG0   EQU    32H
A_FLAG0   EQU    33H
ACC1      EQU    34H
TT06      EQU    35H
TT07      EQU    36H
C_FLAG1   EQU    37H
T06       EQU    38H
T07       EQU    39H
T08       EQU    3AH
T09       EQU    3BH
T0A       EQU    3CH
T0B       EQU    3EH
TEMP0     EQU    3DH

;========================START=======================
     ORG 00H
     JMP INT_START
     NOP
     JMP INT_T0
     NOP
     RTNI


;=============================INITIALIZATION===========================
INT_START:
     
     LDI PA,00H
     LDI PB,00H
     LDI PC,00H
     LDI PACR,0FH
     LDI PBCR,0FH
     LDI PCCR,0FH
     LDI PULL,1100B
     LDI PC,00H
     LDI PA,00H
     LDI PB,00H
     
     
     LDI DPH,00H
     LDI DPM,02H    
     LDI DPL,00H
LOOP:
     LDI TEMP,00H     
     STA INX
     ADIM DPL,01H
     BNZ LOOP
     ADIM DPM,01H
     SBI DPM,04H
     BNZ LOOP
     
     LDI TM0,0001B
     LDI TL0,0BH
     LDI TH0,03H
     LDI T0,0000B
     LDI IE,0100B
     LDI IRQ,00H
     LDI WDT,00H
     LDI C_FLAG1,1000B
     LDI D_FLAG1,0100B
     
     ;LDI TT04,0EH;;;
     
;========================MAIN=========================
; A=PA.2    B=PA.3    C=PB.0    D=PB.1     E=PB.2    F=PB.3
; 1=PA.1    2=PA.0    3=PC.3
;

MAIN:
   ORIM WDT,08H
   NOP
   NOP
   LDI IE,0100B
   ANDIM PA,0011B
   ANDIM PB,0000B
   NOP
   
   LDA F_FLAG0
   BAZ MA00
   LDA B_FLAG0
   BNZ MA00
   LDA D_FLAG1
   BA3 MAIN
   BA2 MA00
   BA1 $+5
   LDA E_FLAG0
   BAZ MA00 
   SBI T0B,06H
   BNZ MA00  
   LDA C_FLAG1
   BA0 $+2
   JMP MA00

   
CNT1:
    
    ADIM T06,01H
    BNZ CNT2
    ADIM T07,01H
    BNZ CNT2
    LDI T07,03H
CNT2:      
    ADIM T08,01H
    BNC CNT00
    ADIM T09,01H
    BNZ CNT00
    LDI T09,0DH  
    ADIM TT06,01H
    BNZ CNT00
    ADIM TT07,01H
    BNZ CNT00
    ADIM TT05,01H    
    LDI T06,0H
    LDI T07,0H
    LDI TT06,00H
    STA TT07
CNT00:  
    LDA TT06
    SUB TEMP
    BAZ MAIN
    STA TEMP  
    LDA TT07
    SUB T07    
    BAZ CNT01
    BC C00 
    LDA TT05
    BA0 $+4
    ANDIM PC,0000B
    ORIM PA,0001B
    JMP MA00;MAIN
    ORIM PC,1000B
    ANDIM PA,1110B
    JMP MA00;MAIN
C00:    
    LDA TT05
    BA0 $+4
    ORIM PC,1000B
    ANDIM PA,1110B
    JMP MA00;MAIN
    ANDIM PC,0000B
    ORIM PA,0001B
    JMP MA00;MAIN
CNT01:    
    LDA TT06
    SUB T06
    BAZ MA00;MAIN
    BC  C01 
    LDA TT05
    BA0 $+4
    ANDIM PC,0000B
    ORIM PA,0001B
    JMP MA00;MAIN
    ORIM PC,1000B
    ANDIM PA,1110B
    JMP MA00;MAIN
C01:    
    LDA TT05
    BA0 $+4
    ORIM PC,1000B
    ANDIM PA,1110B
    JMP MA00;MAIN
    ANDIM PC,0000B
    ORIM PA,0001B
    ;JMP MAIN
   

   
   
   
   ;JMP MAIN
     
MA00:                    ;F口检测
     
      
     LDI TT03,0AH
     LDI TT02,0AH
     LDI TT01,09H
     LDA PB
     BA3 $+2
     JMP MA_END
     LDA F_FLAG0
     BNZ MA02
     SBIM TT01,01H     
     BC $-6 
     SBIM TT02,01H
     BC $-9     
     SBIM TT03,01H
     BC $-12
     ORIM F_FLAG0,08H
     LDI T01,0AH
     LDI T02,05H
     
;------------------------------------     
MA02:                 ;B口检测
     LDA F_FLAG0
     BA1 $+2
     JMP MA03
     
     LDI TT03,0AH
     LDI TT02,0AH
     LDI TT01,09H
     LDA PA
     BA3 $+2
     JMP PA3END
     LDA B_FLAG0
     BA3 MA01
     SBIM TT01,01H
     BC $-6
     SBIM TT02,01H
     BC $-9     
     SBIM TT03,01H
     BC $-12
     LDI B_FLAG0,08H
     ORIM PA,0001B
     ANDIM PA,1101B
     ANDIM PC,0111B      
MA021:
     LDI T00,01H
     JMP MA01
PA3END:
     LDA B_FLAG0
     BAZ MA01
     LDI B_FLAG0,00H
     LDA D_FLAG1
     BA2 $+2
     JMP MC00
     ;BA1 MC00
     ;LDA E_FLAG0
     ;BNZ MA01
     ANDIM PA,1110B
     ANDIM PC,0111B
    
;--------------------------------------     
MA01:
     LDA B_FLAG0
     BAZ $+3
     LDI A_FLAG0,00H
     JMP MA03                  ;A口检测     

     LDI TT03,0AH
     LDI TT02,0AH
     LDI TT01,09H
     LDA PA
     BA2 $+2
     JMP PA2END
     LDA A_FLAG0
     BNZ MA03
     SBIM TT01,01H
     BC $-6
     SBIM TT02,01H
     BC $-9    
     SBIM TT03,01H
     BC $-12
     LDI A_FLAG0,0DH
     LDA B_FLAG0
     BNZ $+2
     ORIM PA,0010B
     LDI T03,01H
     LDI T04,01H
     LDI TT00,01H
     LDI T05,00H
     JMP MA03
PA2END:
     LDI A_FLAG0,00H  
     ANDIM PA,1101B   

;--------------------------------------     
MA03:                 ;E口检测
     ORIM WDT,08H
     LDA D_FLAG1
     BA0 $+2
     JMP MA05
     
     LDI TT03,0AH
     LDI TT02,0AH
     LDI TT01,09H
     LDA PB
     BA2 $+2
     JMP PB2END
     LDA E_FLAG0
     BNZ MA05
     SBIM TT01,01H
     BC $-6
     SBIM TT02,01H
     BC $-9     
     SBIM TT03,01H
     BC $-12
     LDI E_FLAG0,04H
MA031:
         
     JMP MA05 
PB2END:
     LDI E_FLAG0,00H
     LDA B_FLAG0
     BNZ MAIN
     LDA D_FLAG1
     BA1 MA05
     
     SBI T0B,06H
     BNZ MA05
     ANDIM PA,1110B
     ANDIM PC,0111B
     JMP MA05  
     
MAQQQ:
    NOP
    NOP
    JMP MAQQQ        
;--------------------------------------
MA05:                 ;D口检测
     ;LDI TEMP0,0FH
     LDI TT03,0AH
     LDI TT02,0AH
     LDI TT01,09H
     LDA PB
     BA1 $+2
     JMP PB1END
     LDA D_FLAG0
     BNZ MA04 
     SBIM TT01,01H
     BC $-6
     SBIM TT02,01H
     BC $-9     
     SBIM TT03,01H
     BC $-12
     ;SBIM TEMP0,01H
     ;BC $-15
     
     ;ADIM TEMP0,01H
     ;SBI TEMP0,04H
     ;BAZ MAQQQ

      
         
     LDI D_FLAG0,0DH
     LDA D_FLAG1
     SHR
     STA D_FLAG1
     BNZ $+2
     LDI D_FLAG1,04H
     BA3 PB1END
     BA2 MD02;$+8;PB1END
     BA1 MD01;$+4
     LDI T0A,02H
     LDI T0B,00H
     JMP MA04
MD01:
     ORIM PA,0001B
     ORIM PC,1000B
     JMP MA04
MD02:     
     ANDIM PA,1110B
     ANDIM PC,0111B
     ;LDI D_FLAG0,00H
     JMP MA04
     
PB1END:
     LDI D_FLAG0,00H
     LDA D_FLAG1
     BA2 $+2
     JMP MA04
     LDA B_FLAG0
     BNZ MAIN
     ANDIM PA,1110B
     ANDIM PC,0111B
           
    JMP MA04
;---------------------------------


MA04:                 ;C口检测
     LDA D_FLAG1
     BA3 MAIN
     BA2 MAIN
     BA1 $+5
     LDA E_FLAG0
     BAZ MAIN
     SBI E_FLAG0,04
     BAZ MC00
     LDA D_FLAG1
     BA2 MAIN
     BA0 $+2
     JMP MC01
     SBI T0B,05H
     BAZ MC00
     
      
MC01:      
     LDI TT03,0AH
     LDI TT02,0AH
     LDI TT01,09H
     LDA PB
     BA0 $+2
     JMP PB0END
     LDA C_FLAG0
     BNZ MAIN
     SBIM TT01,01H
     BC $-6
     SBIM TT02,01H
     BC $-9     
     SBIM TT03,01H
     BC $-12
     LDI C_FLAG0,0DH
     LDA C_FLAG1
     SHR
     STA C_FLAG1
     BNZ $+2
     LDI C_FLAG1,08H
MC00:
     SBI E_FLAG0,04H
     BNZ $+2
     LDI E_FLAG0,0DH
     SBI T0B,05H
     BNZ $+2
     LDI T0B,06H     
     LDA C_FLAG1
     BA0 MA041
     BA2 $+5
     BA1 $+7
     ORIM PA,0001B
     ORIM PC,1000B
     JMP MAIN
     ORIM PA,0001B
     ANDIM PC,0111B
     ;LDI C_FLAG1,08H
     JMP MAIN
     ANDIM PA,1110B
     ORIM PC,1000B
     JMP MAIN
     
MA041:
     
     ORIM PA,0001B
     ANDIM PC,0111B 
     ;LDI TT04,02H
     
     JMP MAIN
PB0END:
     LDI C_FLAG0,00H
     JMP MAIN     
     
;---------------------------------
MA_END:
     ANDIM PA,1100B
     ANDIM PC,0111B
     LDI F_FLAG0,00H
     ;LDI A_FLAG0,00H
     ;LDI B_FLAG0,00H
     ;LDI C_FLAG0,00H
     ;LDI D_FLAG0,00H
     ;LDI E_FLAG0,00H
     JMP MAIN
     JMP MAIN
     
     
;=========================INT_T0======================
INT_T0:
     STA ACC1
     LDI IRQ,00H
     ORIM WDT,08H
     LDA F_FLAG0
     BAZ INT_END0
I_F:     
     LDA F_FLAG0
     BA3 $+2
     JMP INT_END0
     LDA F_FLAG0
     BA1 I_B
     SBIM T01,01H
     BNZ I_B
     SBIM T02,01H
     BAZ $+3
     LDI T01,0AH
     JMP $-5
     ORIM F_FLAG0,0010B
I_B:     
    LDA F_FLAG0
    BA1 $+2
    JMP I_E
    LDA B_FLAG0
    BAZ I_A
    ;ANDIM PA,1101B
    SBIM T00,01H
    BNZ INT_END0
    LDI T00,03H
    ADIM TEMP,01H
    BA0 $+4
    ORIM PA,0001B
    ANDIM PC,0111B
    JMP INT_END0
    ORIM PC,1000B
    ANDIM PA,1110B
    JMP INT_END0
        
I_A:
    LDA A_FLAG0
    BAZ I_E
    SBIM T03,01H
    BNZ I_E
    SBIM T04,01H
    BAZ $+3
    LDI T03,0AH
    JMP $-5
    SBIM TT00,01H
    BAZ $+4
    LDI T03,0AH
    LDI T04,0AH
    JMP I_A
    ADIM T05,01H
    BA0 $+6
    ANDIM PA,1101B
    LDI T03,0AH
    LDI T04,0AH
    LDI TT00,03H
    JMP I_E
    ORIM PA,0010B
    LDI T03,0AH
    LDI T04,03H
    LDI TT00,01H
    
I_E:
    
    SBI T0B,05H
    BC INT_END0
    LDA D_FLAG1
    BA0 $+2
    JMP INT_END0
    ;LDA E_FLAG0
    ;BAZ INT_END0
    
    
    SBIM T0A,01H
    BNZ INT_END0
    LDI T0A,03H
    ADIM T0B,01H
    BA0 $+4
    ORIM PC,1000B
    ORIM PA,0001B
    JMP INT_END0
    ANDIM PC,0111B
    ANDIM PA,1110B
    ;JMP INT_END0

        
INT_END0:     
     LDA ACC1
     RTNI
     
     
     

;=====================================
END

⌨️ 快捷键说明

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