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

📄 004.asm

📁 换色
💻 ASM
📖 第 1 页 / 共 5 页
字号:
       ORG   00H          ;定义当前位置为 00H
       AJMP  START          ;绝对转移 START
       ORG   03H          ;定义当前位置为 03H
       AJMP MENU          ;绝对转移 MENU
       ORG  0BH          ;定义当前位置为 0BH
       AJMP TIME0          ;绝对转移 TIME0
       ORG  1BH          ;定义当前位置为 1BH
       AJMP TIME1          ;绝对转移 TIME1
       ORG  30H        ;程序初始化。 定义当前位置为 30H,
START: MOV  SP, #40H   ;堆栈起始地址 传送 SP,立即数40H   
       MOV  08H, #00H          ;传送 08H,立即数00H
       MOV  09H, #00H          ;传送 09H,立即数00H
       MOV  0AH, #00H          ;传送 0AH,立即数00H
       MOV  17H, #100  ;调光脉冲宽度2 传送 17H,立即数100  
       MOV  15H, #01H  ;DMX512地址 传送 15H,立即数01H  
       MOV  16H, #200  ;程序速度变量 传送 16H,立即数200  
       MOV  19H, #03H   ;按钮计数变量 传送 19H,立即数03H   
       MOV  1CH, #200  ;程序速度查表起始地址 传送 1CH,立即数200  
       MOV  1DH, #00H  ;频闪查表起始地址 传送 1DH,立即数00H  
       MOV  1EH, #01H  ;速度变量2 传送 1EH,立即数01H  
       MOV  20H, #100  ;调光脉冲宽度 传送 20H,立即数100  
       MOV  21H, #100  ;调光脉冲宽度变量 传送 21H,立即数100  
       MOV  22H, #3FH  ;LED灯板显示变量 传送 22H,立即数3FH  
       MOV  23H, #25   ;数码管扫描延时变量 传送 23H,立即数25   
       MOV  24H, #00H  ;颜色选择变量 传送 24H,立即数00H  
       MOV  25H, #0EEH ;扫描指针变量 传送 25H,立即数0EEH 
       MOV  27H, #00H  ;频闪变量1 传送 27H,立即数00H  
       MOV  28H, #00H  ;频闪变量2 传送 28H,立即数00H  
       MOV  29H, #40   ;频闪慢20倍 传送 29H,立即数40   
       MOV  2FH, #00H  ;用户标志 传送 2FH,立即数00H  
       MOV  30H, #0C0H ;数码管第一位显示扫描码 传送 30H,立即数0C0H 
       MOV  31H, #0C0H ;数码管第二位显示扫描码 传送 31H,立即数0C0H 
       MOV  32H, #0C0H ;数码管第三位显示扫描码 传送 32H,立即数0C0H 
       MOV  33H, #0C0H ;数码管第四位显示扫描码 传送 33H,立即数0C0H 
       MOV  34H, #00H  ;程序选择变量 传送 34H,立即数00H  
       MOV  36H, #00H  ;中断标志变量 传送 36H,立即数00H  
       MOV  37H, #00H  ;速度变量1 传送 37H,立即数00H  
       MOV  38H, #00H  ;菜单选择变量  传送 38H,立即数00H  
       MOV  R4, #01H   ;速度变量2 传送 通用寄存器4,立即数01H   
       MOV  R5, #01H   ;频闪变量3 传送 通用寄存器5,立即数01H   
       MOV  R6, #01H   ;频闪变量4 传送 通用寄存器6,立即数01H   
       MOV  R7, #00H   ;调光亮度变量 传送 通用寄存器7,立即数00H   
       MOV  TMOD, #00010001B          ;传送 TMOD,立即数00010001B
       MOV  TH0, #0FFH          ;传送 TH0,立即数0FFH
       MOV  TL0, #30H          ;传送 TL0,立即数30H
       MOV  TH1, #0FFH          ;传送 TH1,立即数0FFH
       MOV  TL1, #30H          ;传送 TL1,立即数30H
       MOV  SCON, #90H          ;传送 SCON,立即数90H
       CLR  A          ;清0 寄存器A
       MOV  PCON, A          ;传送 PCON,寄存器A
       MOV  IP, #00001010B          ;传送 IP,立即数00001010B
       MOV  IE, #10001011B          ;传送 IE,立即数10001011B
       SETB  TR0          ;位-置1 TR0
       CLR   TR1          ;清0 TR1
       AJMP  M0          ;绝对转移 M0
;====================================================  
     ADDISP: MOV   A, 15H     ;DMX512数码管显示 传送 寄存器A,15H     
             MOV   B, #10          ;传送 B,立即数10
             DIV   AB          ;无符号除法 AB
             MOV   30H, B          ;传送 30H,B
             MOV   B, #10          ;传送 B,立即数10
             DIV   AB          ;无符号除法 AB
             MOV   31H, B           ;传送 31H,B 
             MOV   32H, A          ;传送 32H,寄存器A
             MOV   33H, #0C0H          ;传送 33H,立即数0C0H
             MOV   A, 30H          ;传送 寄存器A,30H
             MOV   DPTR, #Digital          ;传送 DPTR,立即数Digital
             MOVC   A, @A+DPTR          ;程序存储器-读 寄存器A,A+DPTR指向的单元的内容
             MOV    30H, A          ;传送 30H,寄存器A
             MOV   A, 31H          ;传送 寄存器A,31H
             MOVC   A, @A+DPTR          ;程序存储器-读 寄存器A,A+DPTR指向的单元的内容
             MOV   31H, A          ;传送 31H,寄存器A
             MOV   A, 32H          ;传送 寄存器A,32H
             MOVC   A, @A+DPTR          ;程序存储器-读 寄存器A,A+DPTR指向的单元的内容
             MOV   32H, A          ;传送 32H,寄存器A
             MOV   33H, #40H           ;传送 33H,立即数40H 
             MOV   A, 1AH          ;传送 寄存器A,1AH
             JZ   DMX2          ;寄存器为0转移 DMX2
             MOV   1AH, #00H          ;传送 1AH,立即数00H
       DMX1: CALL   DELAY          ;调用 DELAY
             JB   P3.4, Recieve          ;位-为1转移到 接口3第4位,Recieve
             DJNZ  19H, DMX1          ;减一不为0转移 19H,DMX1
             MOV  19H, #03H          ;传送 19H,立即数03H
             AJMP   ADDR1          ;绝对转移 ADDR1
       DMX2: MOV  A, 1BH          ;传送 寄存器A,1BH
             JZ   Recieve          ;寄存器为0转移 Recieve
             MOV  1BH, #00H          ;传送 1BH,立即数00H
       DMX3: CALL   DELAY          ;调用 DELAY
             JB   P3.5, Recieve          ;位-为1转移到 接口3第5位,Recieve
             DJNZ  19H, DMX3          ;减一不为0转移 19H,DMX3
             MOV  19H, #03H          ;传送 19H,立即数03H
             AJMP   ADDR2          ;绝对转移 ADDR2
       ADDR: MOV  2CH, R7          ;传送 2CH,通用寄存器7
             PUSH  27H          ;入栈 27H
             PUSH  28H          ;入栈 28H
             PUSH  1DH          ;入栈 1DH
             PUSH  34H          ;入栈 34H
             PUSH  37H          ;入栈 37H
             PUSH  2AH          ;入栈 2AH
             PUSH  1EH          ;入栈 1EH
             PUSH  1CH          ;入栈 1CH
             PUSH  1FH          ;入栈 1FH
             PUSH  2BH          ;入栈 2BH
             PUSH  17H          ;入栈 17H
             PUSH  24H          ;入栈 24H
	     PUSH  08H          ;入栈 08H
	     PUSH  09H          ;入栈 09H
	     PUSH  0AH          ;入栈 0AH
             MOV   17H,#127          ;传送 17H,立即数127
             MOV  28H, #00H          ;传送 28H,立即数00H
             MOV  1AH, #00H          ;传送 1AH,立即数00H
             MOV  1BH, #00H          ;传送 1BH,立即数00H
             JB   P3.4, ST1  ;DMX512 UP按钮 地址增1 位-为1转移到 接口3第4位,ST1  
      ADDR1: MOV  1AH, #01H          ;传送 1AH,立即数01H
             CALL   DELAY          ;调用 DELAY
             INC  15H          ;加1 15H
             MOV   A, 15H          ;传送 寄存器A,15H
             JZ   ST0          ;寄存器为0转移 ST0
             AJMP   ADDISP          ;绝对转移 ADDISP
        ST0: MOV   15H, #01H          ;传送 15H,立即数01H
             AJMP   ADDISP          ;绝对转移 ADDISP
        ST1: JNB   P3.5, ADDR2  ;DMX512 DOWN按钮 地址减1 位为0转移到 接口3第5位,ADDR2  
             JMP   ADDISP          ;间接转移到 ADDISP
      ADDR2: MOV   1BH, #01H          ;传送 1BH,立即数01H
             CALL   DELAY                  ;调用 DELAY,
             DEC   15H          ;减1 15H
             MOV   A, 15H          ;传送 寄存器A,15H
             JZ  ST2          ;寄存器为0转移 ST2
             AJMP   ADDISP          ;绝对转移 ADDISP
        ST2: MOV   15H, #255          ;传送 15H,立即数255
             AJMP   ADDISP          ;绝对转移 ADDISP
  Recieve: CLR   RI           ;DMX512串行接收  清0 RI,
           MOV   18H, #01H                   ;传送 18H,立即数01H         
       Q3: JNB   RB8, Q4          ;位为0转移到 RB8,Q4
           CLR   RI          ;清0 RI
           JNB   P3.4, ADDR1          ;位为0转移到 接口3第4位,ADDR1
           JNB   P3.5, ADDR2          ;位为0转移到 接口3第5位,ADDR2
           MOV   A, 36H          ;传送 寄存器A,36H
           JZ   Q3          ;寄存器为0转移 Q3
           AJMP  MM0          ;绝对转移 MM0
       Q4: CLR   RI          ;清0 RI
       Q5: JB   RI, Q6          ;位-为1转移到 RI,Q6
           JNB   P3.4, ADDR1          ;位为0转移到 接口3第4位,ADDR1
           JNB   P3.5, ADDR2          ;位为0转移到 接口3第5位,ADDR2
           MOV   A, 36H          ;传送 寄存器A,36H
           JZ   Q5          ;寄存器为0转移 Q5
           AJMP  MM0          ;绝对转移 MM0
       Q6: CLR   RI          ;清0 RI
       Q7: JB   RI, Q8          ;位-为1转移到 RI,Q8
           AJMP  Q7                 ;绝对转移 Q7,
       Q8: CLR   RI          ;清0 RI
           MOV   A, 18H          ;传送 寄存器A,18H
           XRL   A, 15H           ;逻辑-异或 寄存器A,15H 
           JNZ   ST3          ;寄存器不为0转移 ST3
           MOV   0EH, SBUF          ;传送 0EH,SBUF
           AJMP  Q9          ;绝对转移 Q9
      ST3: INC   18H          ;加1 18H
           MOV   A, 18H          ;传送 寄存器A,18H
           JNZ   ST4          ;寄存器不为0转移 ST4
           INC   18H          ;加1 18H
      ST4: JB   RI, Q8          ;位-为1转移到 RI,Q8
           AJMP  ST4          ;绝对转移 ST4
       Q9: JB   RI, Q10          ;位-为1转移到 RI,Q10
           AJMP   Q9          ;绝对转移 Q9
      Q10: CLR   RI          ;清0 RI
           MOV   0FH, SBUF          ;传送 0FH,SBUF
      Q11: JB   RI, Q12          ;位-为1转移到 RI,Q12
           AJMP   Q11          ;绝对转移 Q11
      Q12: CLR   RI          ;清0 RI
           MOV   10H, SBUF          ;传送 10H,SBUF
      Q13: JB   RI, Q14          ;位-为1转移到 RI,Q14
           AJMP   Q13          ;绝对转移 Q13
      Q14: CLR   RI          ;清0 RI
           MOV   11H, SBUF          ;传送 11H,SBUF
      Q15: JB   RI, Q16          ;位-为1转移到 RI,Q16
           AJMP   Q15          ;绝对转移 Q15
      Q16: CLR   RI          ;清0 RI
           MOV   12H, SBUF          ;传送 12H,SBUF
      Q17: JB   RI, Q18          ;位-为1转移到 RI,Q18
           AJMP  Q17          ;绝对转移 Q17
      Q18: CLR   RI          ;清0 RI
           MOV   13H, SBUF          ;传送 13H,SBUF
      Q19: JB   RI, Q20          ;位-为1转移到 RI,Q20
           AJMP  Q19          ;绝对转移 Q19
      Q20: CLR   RI          ;清0 RI
           MOV   14H, SBUF          ;传送 14H,SBUF
      Q21: MOV   A, 0EH        ;DMX512串行处理 传送 寄存器A,0EH        
           MOV   B, #2          ;传送 B,立即数2
           DIV   AB          ;无符号除法 AB
           MOV   R7, A           ;传送 通用寄存器7,A 
           MOV   A,0FH          ;传送 寄存器A,0FH
           SETB   C          ;位-置1 进位标志/累加位
           SUBB   A, #244          ;带进位减法 寄存器A,立即数244
           JC   ST8          ;C位为1转移到 ST8
           SETB  TR1          ;位-置1 TR1
           CLR   TR0          ;清0 TR0
           MOV   P0, #0FFH          ;传送 接口0,立即数0FFH
           SETB   C          ;位-置1 进位标志/累加位
           MOV   A, R7          ;传送 寄存器A,通用寄存器7
           SUBB   A, #1          ;带进位减法 寄存器A,立即数1
           JC   ST7          ;C位为1转移到 ST7
           MOV   B, R7          ;传送 B,通用寄存器7
           MOV   A, #255          ;传送 寄存器A,立即数255
           DIV   AB          ;无符号除法 AB
           MOV   R0, A          ;传送 通用寄存器0,寄存器A
           MOV   B, A          ;传送 B,寄存器A
           MOV   A, 12H          ;传送 寄存器A,12H
           DIV   AB          ;无符号除法 AB
           MOV   08H, A          ;传送 08H,寄存器A

⌨️ 快捷键说明

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