发布于 2011-11-06 13:28:24
7楼
这是我另外做的一个5秒定时发送数据,发送完成产生中断接收数据,数据不判断首尾字符,接收超时自动结束,这个算是主站程序么?
TITLE=程序注释
Network 1
// 主程序
LD SM0.1 // 首次扫描时,
MOVB 16#09, SMB30 // 初始化自由端口:
// - 选择9600波特
// - 选择8个数据位
// - 选择无校验
MOVB 16#9C, SMB87 // 初始化RCV信息控制字节:
// - RCV被启用
// - 将空闲行条件检测为
// 信息开始条件。
MOVW 0, SMW90 // 将空闲行超时设为5毫秒。
MOVW 80, SMW92 // 接收超时时间
MOVB 32, SMB94 // 将最大字符数设为32。
ATCH INT11, 9 // 启用发送完毕中断
ENI
Network 2
LD SM0.0
CALL SBR20
Network 3
LD SM0.0
MOVB 150, VB4999 //发送数据长度
//以下定义5秒发送一次数据
Network 4
LD SM0.5
LD M0.0
CTU C0, 5
Network 5
LD C0
LPS
EU
S M0.0, 1
LPP
ED
R M0.0, 1
Network 6
LD SM0.0
A M0.0
XMT VB4999, 0
SBR20
Network 1
// 发送的首尾字符
LD SM0.0
MOVB 16#AA, VB5000
AENO
MOVB 16#FF, VB5149
INT10 //接收完成中断子程序
Network 1 // 网络标题
// 接收完成将数据转发
LDB= SMB86, 16#20 // 如果接收状态显示接收结束字符,
MOVR VD5204, VD1624
MOVR VD5204, VD1624
MOVR VD5208, VD1614
A V5212.3
LPS
EU
S M5.2, 1
LPP
ED
R M5.2, 1
LRD
A V5212.4
LPS
EU
S M5.7, 1
LPP
ED
R M5.7, 1
LPP
CRETI
NOT // 如果因任何其他原因接收完成,
RCV VB5199, 0 // 则开始新的接收。
INT11 //接收中断子程序
LD Always_On:SM0.0
RCV VB5199, 0