




已阅读5页,还剩8页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课 程 实 验 报 告实验名称: 串行接口 专业班级: 学 号: 姓 名: 同组人员: 指导教师: 报告日期: 实验二1. 实验目的32. 实验内容33. 实验原理34. 程序代码65. 实验体会13实验二1. 实验目的1.熟悉串行接口芯片8251的工作原理2.掌握串行通讯接收/发送程序的设计方法2. 实验内容通过对8251芯片的编程,使得实验台上的串行通讯接口(RS232)以查询方式实现信息在双机上的。具体过程如下:1. 从A电脑键盘上输入一个字符,将其通过A试验箱的8251数据口发送出去,然后通过B试验箱的8251接收该字符,最后在B电脑的屏幕上显示出来。2.从A试验箱上输入步进电机控制信息(开关信息),通过A试验箱的8251数据口发送到B试验箱的 8251数据口,在B试验箱上接收到该信息之后,再用这个信息控制B试验箱上的步进电机的启动停止、转速和旋转方向。3. 实验原理1.8251控制字说明在准备发送数据和接收数据之前必须由CPU把一组控制字装入8251。控制字分两种:方式指令和工作指令,先装入方式指令,后装入工作指令。另外,在发送和接收数据时,要检查8251状态字,当状态字报告“发送准备好”/“接收准备好”时,才能进行数据的发送或接收。2.8251方式指令(端口地址2B9H)3.8251工作指令(端口地址2B9H)4. 8251状态字(端口地址2B9H)5.8253控制字(283H)6.8253计数初值(283H)计数初值=时钟频率/(波特率 波特率因子)本实验:脉冲源=1MHz 波特率=1200 波特率因=16计数初值= /1200*16=52NYYN读入字符显示在屏幕上为ESC?接收准备好?NY发送字符接收字符从键盘接收一字符发送准备好?接收字符显示在屏幕上初始化8253,设置工作方式和计数初值初始化8251,先后传方式和工作命令字结束开始7.程序流程框图4.程序代码Fxc.asm;*;*8251串行通讯(自发自收)*;*;data segment io8253a equ 280h ;8253计数0端口地址 io8253b equ 283h ;8253控制端口地址 io8251a equ 2b8h ;8251数据端口地址 io8251b equ 2b9h ;8251控制端口地址 mes1 db you can play a key on the keybord!,0dh,0ah,24h mes2 dd mes1data endscode segment assume cs:code,ds:datastart: mov ax,data mov ds,ax mov dx,io8253b ;设置8253计数器0工作方式 mov al,16h ;控制字为B out dx,al mov dx,io8253a mov al,52 ;给8253计数器0送初值 out dx,al mov dx,io8251b ;初始化8251 ;xor al,al ;mov cx,03 ;向8251控制端口送3个0 ;delay: call out1 ;loop delay mov al,40h ;向8251控制端口送40H,使其复位 call out1 mov al,4eh ;设置为1个停止位,8个数据位,波特率因子为16 call out1 mov al,27h ;向8251送控制字允许其发送和接收 call out1 lds dx,mes2 ;显示提示信息 mov ah,09 int 21hwaiti: mov dx,io8251b in al,dx test al,01 ;发送是否准备好 jz next mov ah,0bh int 21h test al,0ffh ;检测是否有键盘输入 jz next mov dl,0ffh ;有键盘输入,读入字符 mov ah,06h int 21h cmp al,27 ;若为ESC,结束 jz exit mov dx,io8251a ;inc al out dx,al ;发送 ; mov cx,40h;s51: loop s51 ;延时next: mov dx,io8251b in al,dx test al,02 ;检查接收是否准备好 jz waiti ;没有,等待 mov dx,io8251a in al,dx ;准备好,接收 mov dl,al mov ah,02 ;将接收到的字符显示在屏幕上 int 21h jmp waitiexit: mov ah,4ch ;退出 int 21hout1 proc near ;向外发送一字节的子程序 out dx,al ;push cx ;mov cx,40h;gg: loop gg ;延时 ; pop cx retout1 endpcode endsend startSend .asm ;*;*8251串行通讯(自发自收)*;*;data segment io8253a equ 280h ;8253计数0端口地址 io8253b equ 283h ;8253控制端口地址 io8251a equ 2b8h ;8251数据端口地址 io8251b equ 2b9h ;8251控制端口地址buf3 byte 0 mes1 db you can play a key on the keybord!,0dh,0ah,24h mes2 dd mes1data endscode segment assume cs:code,ds:datastart: mov ax,data mov ds,ax mov dx,io8253b ;设置8253计数器0工作方式 mov al,16h ;控制字为B out dx,al mov dx,io8253a mov al,52 ;给8253计数器0送初值 out dx,al mov dx,io8251b ;初始化8251mov dx,28bh ;8255控制口初始化 mov al,81h ;1000,0001 out dx,al ;xor al,al ;mov cx,03 ;向8251控制端口送3个0 ;delay: call out1 ;loop delay mov al,40h ;向8251控制端口送40H,使其复位 call out1 mov al,4eh ;设置为1个停止位,8个数据位,波特率因子为16 call out1 mov al,27h ;向8251送控制字允许其发送和接收 call out1 lds dx,mes2 ;显示提示信息 mov ah,09 int 21hwaiti: mov dx,io8251b in al,dx test al,01 ;发送是否准备好 jz next mov ah,0bh int 21h test al,0ffh ;检测是否有键盘输入 jz next ; mov dl,0ffh ;有键盘输入,读入字符 ;mov ah,06h ; int 21hmov dx,28ahin al,dx cmp al,27 ;若为ESC,结束 jz exit mov dx,io8251a ;inc al out dx,al ;发送 ; mov cx,40h;s51: loop s51 ;延时next: mov dx,io8251b in al,dx test al,02 ;检查接收是否准备好 jz waiti ;没有,等待 mov dx,io8251a in al,dx ;准备好,接收 mov dl,al mov ah,02 ;将接收到的字符显示在屏幕上 int 21h jmp waitiexit: mov ah,4ch ;退出 int 21hout1 proc near ;向外发送一字节的子程序 out dx,al ;push cx ;mov cx,40h;gg: loop gg ;延时 ; pop cx retout1 endpcode endsend start步进电机: 1.K0=0,逆时针转;K0=1,顺时针转 2.K1=0,慢转;K1=1,快转data segment buf1 db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh ;LED显示 buf2 byte 0 ;步进电机数据 buf3 byte 0 ;保存开关数据 buf4 byte 0 ;保存顺转数据 buf5 byte 9 ;保存反转数据 buf6 byte 0 ;开关机data endscode segment assume cs:code,ds:datastart: mov ax,data mov ds,ax mov buf2,b ;步进电机数据 mov dx,28bh ;8255控制口初始化 mov al,81h ;1000,0001 out dx,al;-逆转控制-R0: mov dx,28ah ;读C口 in al,dx mov buf3,al ;保存C口数据 test al,04 ; jnz kai ;转反转 test al,01 ;测试K0=1? jnz L0 ;转反转 mov al,buf4 ;走马灯开始一步顺转 cmp al,9 jnz S1 call change9_0S1: inc al ;数据加1 mov buf4,al mov bx,offset buf1 xlat mov dx,289h ;B口输出 out dx,al ;数据完成加1 mov al,buf2 ;电机开始一步逆转 ror al,1 ;数据左移 mov buf2,al mov dx,288h ;A口输出 out dx,al ;电机完成一步逆转 mov al,buf3 ;回复C口数据 test al,02 jnz R1 ;转快转 call delay_s ;否则慢转 jmp R0 R1: call delay_q ;快转 jmp R0;-顺转控制-L0: mov al,buf5 ;走马灯开始一步顺转 cmp al,0 jnz S2T2: test al,03 ;测试K2=1? jnz T2 call change0_9 S2: dec al ;数据减1 mov buf5,al ; mov bx,offset buf1 xlat mov dx,289h ;B口输出 out dx,al ;走马灯结束一步顺转 mov al,buf2 ;电机开始一步顺转 rol al,1 ;数据右移 mov buf2,al mov dx,288h ;A口输出 out dx,al ;电机结束一步顺转 mov al,buf3 ;回复C口数据 test al,02 jnz L1 ;转快转 call delay_s ;否则慢转 jmp R0T3: test al,03 ;测试K2=1? jnz T3 L1: call delay_q ;快转 jmp R0kai: mov dx,28ah ;读C口 in al,dx mov buf3,al ;保存C口数据 test al,04 ; jz L0 ;转反转 jmp kaiexit: mov ah,4ch int 21hdelay_s proc near ;长延时 mov bx,20h lp1: mov cx,0ffffh lp2: loop lp2 dec bx jnz lp1 retdelay_s endpdelay_q proc near ;短延时 mov bx,1 lp11: mov cx,0ffffh lp22: loop lp22 dec bx jnz lp11 retdelay_q endpchange9_0 proc near mov buf4,-1 mov al,buf4 retchange9_0 endpchange0_9 proc near mov buf5,10 mov al,buf5 retchange0_9 endpcode ends end
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年神经内科临床实践模拟考试答案及解析
- 关于烟草新质生产力的建议
- 工程力学 课件 力的性质
- 2025年产科妇科妇科护理常见问题考察试卷答案及解析
- 2025年病理科白细胞计数的实验操作模拟考试答案及解析
- 2025年麻醉药理学专业知识检测答案及解析
- 2025年护理学基本技能实操考核答案及解析
- 2025年消化内科十二指肠溃疡并发症预防评估试卷答案及解析
- 2025年病毒学HIV病毒的抗病毒治疗模拟考试卷答案及解析
- 2025年麻醉科无痛分娩操作技能考核模拟试卷答案及解析
- 新麻醉记录单
- 社区合理用药讲课
- 2022 CSCO胃癌诊疗指南
- GB/T 26955-2011金属材料焊缝破坏性试验焊缝宏观和微观检验
- 马克思主义基本原理概论 第六章
- 大学预算绩效管理办法(试行)模板
- 急诊急救护理教学课件
- 最新医疗安全十八项核心制度课件
- 住宅小区供配电系统设计课件
- 社保费和非税收入课件
- “三高”讲座-课件
评论
0/150
提交评论