📄 chen.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 + -