📄 scn2681初始化实例.txt
字号:
;2681/2691 功能程序
;本程序通过读回MR1中的值来验证数据总线是否完好,
;如果第一个测试通过,则通过将256个字符写入到发送器(A & B),
;并读取接收器(A &B)的内容来验证,通过这种方式来测试信道‘A’,然后是‘B’。
;
INIT: MOVE.B #$1A,CRA
MOVE.B #$30,CRA ;复位TX
MOVE.B #$20,CRA ;复位RX
MOVE.B #$13,MR1A ;无奇偶性,8位
MOVE.B #7,MR2A ;正常,停止 = 1
MOVE.B #$66,CSRA ;TXC = RXC = 1200波特
MOVE.B #$10,CRA ;复位指针,禁用TX-RX
MOVE.B MR1A,D1 ;读取MR1A
MOVE.B #$13,D0
CMP.B D0,D1 ;比较数据值
BEQ TEST1 ;如果匹配则数据总线完好
TRAP #15 ;如果失败则停止
;
;这次测试发送数据FF通过00 THRA,然后将它们读回。
;RX数据只与通道‘A’的TX数据进行比较。
;注意:对于后面的两个测试,用继电器将TX短接到RX上。
TEST1: MOVE.B #1,RELAY ;短接TX到RX,CTS到RTS
MOVE.B #$50,CRA ;复位中止状态
MOVE.B #$20,CRA ;复位接收器
MOVE.B #$30,CRA ;复位发送器
MOVE.B #$45,CRA ;清除错误,启用TX-RX
MOVE.W #$100,D7 ;设置第一个发送字符
TEST1A:SUBI.B #1,D7 ;D7减1,直到D7 = 0
BEQ RELAY2 ;如果D7 = 0,到下一个测试
MOVE.B D7,THRA ;发送下一个字符到发送器
WAIT1:BTST #0,SRA ;接收器准备好?
BEQ WAIT1
MOVE.B RHRA,D1 ;获取接收到的字符
CMP.B D7,D1 ;发送的字符 = 接收到的字符?
BEQ TEST1A ;如果是,重复运行
TRAP #15 ;如果失败,则停止
;
;这个测试利用测试1中检查信道‘A’的相同方法来检查信道‘B’。
;只有数据格式已经发生变化。(由于2691没有地址A2,
;这个测试是对串行信道的一次简单的重复测试)。
TEST2: MOVE.B #$1A,CRB ;禁用TX-RX,复位MR指针
MOVE.B #7,MRB1 ;奇校验,8位
MOVE.B #$0F,MR2B ;普通,2个停止位
MOVE.B #$0BB,CSRB ;9600波特
MOVE.B #$50,CRB ;复位中止状态
MOVE.B #$30,CRB ;复位TX
MOVE.B #$20,CRB ;复位RX
MOVE.B #$45,CRB ;清除错误,启用TX & RX
MOVE.W #$100,D7
TEST2A:SUBI.B #1,D7 ;D7减1
BEQ STOPIT ;如果D7 = 0,停止发送字符
MOVE.B D7,THRB ;如果D7 > 0,写TX保持寄存器
WAIT2:BTST #0,SRB ;测试RX是否准备好
BEQ WAIT2 ;如果未准备就绪,循环
MOVE.B RHRB,D1 ;收取接收到的字符
CMP.B D7,D1 ;比较TX字符与RX字符
BEQ TEST2A ;如果比较匹配,再次发送
STOPIT:TRAP #15 ;结束线程
END INIT
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -