
ORG0000H
AJMP MAIN
AJMP SERVE
ORG0023H
MAIN: MOVSP,#60H ;置堆栈指针
MOVTOMD,#20H ;置T1工作于模式2
MOVTH1,#0E8H ;赋T1计数初值
MOVTL1,#0E8H ;赋T1重装值
SETB TR1 ;启动T1
MOVSCON,#50H;置串行接口工作于方式1,允许接收
ANLPCON,#7FH ;设SMOD=0
MOVR0,#20H ;置发送数据区首址
MOVR1,#40H ;置接收数据区首址
MOVR7,#10H ;置发送字节长度
MOVR6,#10H ;置接收字节长度
SETE ES ;CPU允许中断
SETE EA ;允许串行接口
MOVA,@R0 ;取第一个数据发送
MOVSBUF,A ;发送数据
LOOP: SJMP $;等待中断
SERVE: JNBR1,SEND ;不是接收中断,转发送
JNCR1, LOOP ;是接收中断,清除接收中断标志拦贺
MOVA,SBUF ;接收数据
MOV@R1,A ;将接收数据送入接收数据区
DJNZ R1,L1 ;数据简册派块未接收完,转L1
SJMP L2 ;数据块接收完,转L2
L1: INCR1 ;修改数据区指针
L2: RETI;中断返回
SEND: JNCR1, LOOP ;是发送中断,清除发送中断标志
DJNZ R1,L3 ;数据块未发送完,转L3
SJMP L4 ;数据姿拿块发送完,转L4
L3: MOVA,@R0 ;取数据发送
MOVSBUF,A ;发送数据
INCR1 ;修改数据区指针
L4: RETI;中断返回
这是汇编程序,原理图照课本上画就行~ CODE SEGMENT ASSUME CS: CODE NEW_INT: 接收字符的中断处理程序 STI CPU开中断 MOV DX , 3F8H 接收字困戚符 IN AL , DX MOV DL , AL 显示接收字符 MOV AH , 2 INT 21H CMP DL , 0DH 判断是唤冲否为回车 JNZ L2 不是,转L2处 MOV DL , 0AH 若是,加显示一个换行符 MOV AH , 2 INT 21H L2: MOV AL , 20H 发中断结束命令(EOI) OUT 20H , AL IRET START: 主程序部分 MOV AH , 35H MOV AL , 0CH INT 21H 读取原0CH号中断服务程序的地址 PUSH BX PUSH ES 以上地址入栈保存(以便在程序退出时再恢复中断矢量表中的内容) MOV AX , CS MOV DS , AX MOV DX , OFFSET NEW_INT MOV AH , 25H MOV AL , 0CH INT 21H 修改中断矢量表,将NET_INT位置登记为0CH号中断服务程序的地址 以下初始化8250 MOV DX , 3FBH 指向线路控制寄存器 MOV AL , 80H 位7置1 OUT DX , AL 发送此字节 MOV DX , 3F9H 指向波特率除数的高字节 MOV AL , 0 1200 BPS对应的高字节 OUT DX , AL 发送此字节 DEC DX 指向波特率除数的低字节 MOV AL , 60H 1200 BPS对应的低字节 OUT DX , AL 发送此字节 MOV AL , 1BH 数据长度为8位 , 1个奇偶校验位 , 偶校验 , 1个停止位 MOV DX , 3FBH 指向线路控制寄存器 OUT DX , AL 发送此字节 MOV DX , 3FCH 设置MODEM控制寄存器 MOV AL , 0BH 允许8250发中断 OUT DX , AL MOV DX , 3F9H 指向中断允许寄存器 MOV AL , 1 允许数据接收准备好中断 OUT DX , AL 发送此字节 CLI 关中断,以便对中断控制器8259A进行 *** 作 IN AL , 21H 读取中断屏蔽寄存器的内容 AND AL , 0EFH 将COM1中断(即IRQ4引脚)的对应位置0,允许中断。 OUT 21H , AL 写入中和尺歼断控制器8259A中 STI 开中断 L1: 主程序循环,等待收到字符的中断发生。 MOV AH , 0 INT 16H 读取键盘字符 CMP AL , 03 比较是否为CTRL-C键 JNZ L1 若不是,继续循环 EXIT: 退出处理 MOV AH , 25H MOV AL , 0CH POP DS POP DX INT 21H 恢复中断矢量表中0CH号中断服务程序的原地址。 MOV AH , 4CH INT 21H 返回DOS CODE ENDS END START麻烦采纳,谢谢!
RSR232串行口传输协议的最大有效距离是10M,且为有线传输,这给一些需要远距离传输控制带来很大的不便。根据课题需要,我们设计了一种基于特高频镇粗(300M以上)无线传输方法,实际使用效果连好,能满足一般的传输和控制,可应用于微机、单片机等控制领域。对于误码率要御猛镇求较高的场合,建议采用CRC编码减少误码率。参考资料:单片机双工无线串行传输方知让案http://www.dzkfw.com.cn/Article/danpianji/669.html 单片机辅助资料:单片机宝典从硬件到软件.chm http://www.dzkfw.com.cn/Soft/mcu/57.html
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)