📄 主机中断发送通讯子程序.asm
字号:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; name: MCOM: *
; FUNCTION: *
; ENTRY: *
; 1 与数据流方向相同 *
; ABUFFER1,ABUFFER2 :该段效果前进方向的末端地址 *
; COLOURC: 必须通过前级程序为其赋值:#颜色代码 *
; SEG :(SHIFT TIMES OF 1 ROW)=BYTES-1 THREE BYTES ONE PIPE *
; 在该区间(一行,半行,或更少)移动的次数,也就是该区间 *
; 字节数减1。 *
; 出口信息: 进端填入一个点的颜色,末端内容被移出,整体沿所规定方向移一点 * *
; 子程序调用: 无 *
; 影响资源: DPTR,R5,C *
; 堆栈需求: 3字节 *
; 全局变量: 无 *
; 作 者: 孙宗伟 *
; 日 期: 2005年12月21日 *
; 修改人: 孙宗伟 *
; 日 期: 2005年12月21日 *
; 执行时间: 297us~~624us 跟随SEG和PFLAG的取值而变化 *
; remark: USE EXTEND RAM 61C256 *
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;从机中断接收方式, 主机中断发送方式
SUBADDR EQU 01H
ORG 0000H
AJMP MAIN
ORG 0023H
LJMP SERVE
ORG 0050H
transfer: MOV TMOD,#20H
MOV TL1,#0F3H
MOV TH1,#0F3H
SETB TR1
MOV PCON,#80H ;SMOD=1
MOV SCON,#0D8H ;11011000B
SETB EA
CLR ES
TX_ADDR: MOV A,#SUBADDR ;R2中为从机地址
MOV SBUF,A
LOOP1: JNB TI,LOOP1
CLR TI
RX_ADDR: JNB RI,RX_ADDR
CLR RI
MOV A,SBUF
CJNE A,#SUBADDR,TX_ADDR
CLR TB8
CLR PSW.1
MOV 08H,#50H
MOV 0CH,50H
INC 0CH
SETB ES
RET
SERVE: CLR TI
PUSH PSW
PUSH A
CLR RS0
SETB RS1
TRANS: MOV SBUF,@R0
WAIT: JNB TI,WAIT
CLR TI
INC R0
DJNZ R4,RETURN
OVER: POP A
POP PSW
SETB PSW.1
CLR ES
RETI
RETURN: POP A
POP PSW
RETI
MAIN:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -