📄 interrupt_example.asm
字号:
/*********************************************************************************************************/
/* This program is used in 8951/52 micro chip, controling PIN 3.5 output state by RS-232 communication */
/* or outside interrupt INT0 INT1. PIN3.4 need to connected with a LED, when it flasing the user can */
/* know the chip is continue running. */
/* */
/* RS-232 input "A" change PIN3.5 state from low 0V to high 5V */
/* input "B" high 5V to low 0V */
/* */
/* outside interrupt PIN3.2 INT0 set PIN3.5 output state to 0V */
/* PIN3.3 INT1 5V */
/* */
/* Author: Yuan Long Lo Date: 2008/03 */
/*********************************************************************************************************/
ORG 0H ;LED: P3.4 Output: P3.5
JMP STR
ORG 3H
JMP INTA ;SYS OFF LINE
ORG 13H
JMP INTB ;SYS ON LINE
ORG 23H
JMP RE
STR: MOV IE,#10010101B ;set micro chip interrupt argument
MOV IP,#00010101B
SETB IT0
SETB IT1
MOV SCON,#01010000B
MOV TMOD,#00100010B
MOV SP,#40H
MOV TH1,#0FDH
SETB TR1
START: CLR RI
CLR TI
CLR P3.5 ;SYS OFF_LINE
SETB P3.4 ;LED INDICATE WORK
LOOP1: CALL DELAY
JMP LOOP1
RE: JNB TI,REC ;RS-232 interrupt
CLR TI
RETI
REC: JBC RI,RECE ;If receiving flag is ture than receive it
RETI
RECE: MOV A,SBUF
CJNE A,#41H,CHK1; IF RECEIVE "A" THAN SYS ON_LINE
SETB P3.5
RETI
CHK1: CJNE A,#42H,FREEZE
CLR P3.5 ; IF RECEIVE "B" THAN SYS OFF_LINE
RETI
FREEZE: CLR A
RETI
DELAY: CPL P3.4 ;flash the PIN3.4 LED and do a little delay
MOV R0,#004H
D1: MOV R1,#0FFH
D2: MOV R2,#0FFH
D3: DJNZ R2,D3
DJNZ R1,D2
DJNZ R0,D1
RET
INTA: CLR P3.5 ;interrupt INT0 set output PIN3.5 LOW
RETI
INTB: SETB P3.5 ;interrupt INT1 set output PIN3.5 HIGH
RETI
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -