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

📄 chen.asm

📁 实现洗衣机洗衣服的功能
💻 ASM
字号:
    .mmregs 
    .global _c_int00
    .sect ".vectors"
RESET: B _c_int00
        nop
        nop
     .space 15*4*16
int0: b zhushui
      nop
      nop
int1: rete
      nop
      nop
      nop
int2: b open
      nop
      nop
tint0: B  tcount1   ;中断号19
       nop
       nop
       .space 3*4*16
tint1: B  tcount2
       nop
       nop
       .space 8*4*16


OUTPORT1  .set   3700H 
OUTPORT2  .set   3800H
count     .usect   ".vars",1
           .text
    
DELAY	.macro sec_tenth	   	;延时 sec_tenth/1 秒
		STM sec_tenth-1,AR5
loop1?	STM #09h,AR6
loop0?	STM #5999,AR7
		BANZ $,*AR7-
		BANZ loop0?,*AR6-
	    BANZ loop1?,*AR5-
		.endm  
      
_c_int00:
       rsbx cpl
       LD #00h,DP
       STM #3000H,SP
       STM #07FFFH,SWWSR
       ST  #0ffe0h,PMST
       STM #9999,PRD      ;给PRD 预置9999
       STM  #0010H, TCR  ;给TDDR 预置0,并停止TIMER0 
;TCR=0000 0000 0001 0000
       STM  #05H,IFR     
       STM  #05h,IMR      ;屏蔽除INT0,INT2所有的中断
       RSBX INTM            ;开中断
       ST  #1000,*(count)
      
loop:   nop           ;主程序
        nop
        B loop
        
zhushui:
        STM   #01111111B,AR1
        nop
        PORTW AR1,OUTPORT1  ;显示当前为注水状态
        NOP
        NOP
        NOP
        STM  #0FFE9H,TCR   ;给TDDR 预置9,并启动TIMER0
                                ;TCR=11111111 1110 1001
        STM  #0DH,IFR      
        STM  #0Dh,IMR      ;屏蔽除tint0,int1,int0所有的中断
        RSBX INTM          ;开中断
        rete
                
tcount1:  
       ADDM  # -1,*(count)
       nop
       CMPM  *(count),#0
       nop
       BC  WAIT,NTC   ;还没有到10秒,继续计时
       
WASH: ST   #10111111B,AR2 
       nop               
      PORTW AR2,OUTPORT1       ;10秒种后开始洗涤
      NOP
      NOP
      NOP
      ST  #1000,*(count)      
      STM  #0FFE9H,TCR   ;给TDDR 预置9,并启动TIMER0
                             ;TCR=11111111 1110 1001
      STM  #085H,IFR      ;除TINT1还没有响应的中断
      STM  #085h,IMR      ;打开除tint1所有的中断
      RSBX INTM          ;开中断
      RETE

tcount2:  
       ADDM # -1,*(count)
       nop
       CMPM *(count),#0
       nop
       BC  WAIT,NTC   ;还没有到10秒,继续计时
       
PIAOXI:
      STM   #11011111B,AR3
      nop
      PORTW AR3,OUTPORT1
      DELAY 5
      
SHUAISHUI:
      STM   #11101111B,AR4
      PORTW AR4,OUTPORT1
      DELAY 5
      STM   #11111111B,AR1
      PORTW  AR1,OUTPORT1
      SSBX  INTM
      RETE
      
open:              ;打开洗衣机停止洗衣
      STM  #00000000B, AR0
      nop 
      PORTW AR0,OUTPORT1 
      DELAY   1
      STM  #11111111B, AR0
      PORTW  AR0, OUTPORT1 
      DELAY   1
      B open
      
WAIT: RETE
       
    .end 

⌨️ 快捷键说明

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