8250串口实验
a7 8250串口
线路控制寄存器(LCR):
LCR用来设定通讯所需的一些基本参数。Bit7为1指定波特率因子寄 存器有效,为0则指定发送/接收及IER有效。Bit6置1会将发送端置为 0,这将会使接收端产生一个“间断”。Bit3-5用来设定是否使用奇偶
线路控制寄存器(LCR):
校验以及奇偶校验的类型,Bit3=1时使用校验,Bit4为0则为奇校验, 1为偶校验,而Bit5则强制校验为1或0,并由Bit4决定具体为0或1。 Bit2用来设定停止位的长度,0表示1位停止位,为1则根据数据长度 的不同使用1.5-2位停止位。Bit0:1用来设定数据长度。
程序清单
ORG 39A0 PDATA EQU 8000H MSB EQU 8001H LINE EQU 8003H LSTAT EQU 8005H START:MOV SP,#50H;堆栈指针初始化 MOV A,#80H ;(A)=1000 0000B MOV DPTR, #LINE;通讯线控制寄存器地址送DPTR MOVX @DPTR, A;第七位为1,设置波特率 MOV A,#18H ;波特率为4800时的低8位值为18H MOV DPTR, #8000H; 由于DLAB=1,所以此时8000H为设置低8位波 ;特率地址 MOVX @DPTR , A;高波特率的低8位数据为18H MOV DPTR , #MSB;8001H送DPTR,送波特率的高8位地址给DPTR MOV A, #00H;波特率高8位数据为00H MOVX @DPTR ,A ;设波特率高8位数据为00H MOV A,#03H ;(A)=0000 0011B MOV DPTR,#LINE ; MOVX @DPTR, A ;字符码长充为8位,1位停止位 MOV A,#00H ;(A)=0000 0000B
《微机原理与接口技术》实验指导书
《微机原理与接口技术》课程实验指导书实验内容EL-8086-III微机原理与接口技术教学实验系统简介使用说明及要求✧实验一实验系统及仪器仪表使用与汇编环境✧实验二简单程序设计实验✧实验三存储器读/写实验✧实验四简单I/0口扩展实验✧实验五8259A中断控制器实验✧实验六8253定时器/计数器实验✧实验七8255并行口实验✧实验八DMA实验✧实验九8250串口实验✧实验十A/D实验✧实验十一D/A实验✧实验十二8279显示器接口实验EL-8086-III微机原理与接口技术教学实验系统简介使用说明及要求EL-8086-III微机原理与接口技术教学实验系统是为微机原理与接口技术课程的教学实验而研制的,涵盖了目前流行教材的主要内容,该系统采用开放接口,并配有丰富的软硬件资源,可以形象生动地向学生展示8086及其相关接口的工作原理,其应用领域重点面向教学培训,同时也可作为8086的开发系统使用。
可供大学本科学习《微机原理与接口技术(8086)》,《单片机应用技术》等课程提供基本的实验条件,同时也可供计算机其它课程的教学和培训使用。
为配合使用EL型微机教学实验系统而开发的8086调试软件,可以在WINDOWS 2000/XP等多种操作系统下运行。
在使用本软件系统调试程序时,可以同时打开寄存器窗口、内存窗口、反汇编窗口、波形显示窗口等等,极大地方便了用户的程序调试。
该软件集源程序编辑、编译、链接、调试与一体,每项功能均为汉字下拉菜单,简明易学。
经常使用的功能均备有热键,这样可以提高程序的调试效率。
一、基本特点EL型微机教学实验系统是北京精仪达盛科技有限公司根据广大学者和许多高等院校实验需求,结合电子发展情况而研制的具有开发、应用、实验相结合的高科技实验设备。
旨在尽快提高我国电子科技发展水平,提高实验者的动手能力、分析解决问题能力。
系统具有以下特点:1、系统采用了模块化设计,实验系统功能齐全,涵盖了微机教学实验课程的大部分内容。
8250串口实验
1)先设置波特率把分频系数写入除数寄存器(3F8H/3F9H),方法:80H->3FBH(通信线控制寄存器,D7=1访问合用口寄存器)设置波特率=9600bps,分频系数= 1.8432MHz/(16*9600) = 12所以:12->3F8H(除数低8位) ,00->3F9H(除数高8位)2)设置通信格式把格式控制字->3FBH(通信线控制器)8位数据位,1位停止位,无校验,正常通信模式0000 0011->3FBH3)不采用中断0->3F9H(中断允许寄存器)4)设置MODEM控制寄存器0AH = 0000 1010 -> 3FCH ;正常收发模式5)发送字符3F8H(发送缓冲区)(1)先取按键查询键盘缓冲区MOV AH,1,INT 16H出口:ZF=0,有键入,AL=ASCII,AH=键入字符的扩展码ZF=1,无键入键盘输入单字符功能调用MOV AH,1 , INT 21H(或用无回显功能调用,8号)出口:AL=ASCII(2)将键值送3F8H (AL)-> 3F8H6)接收字符3F8H(接收缓冲区)(1)先查询3FDH(通信线状态寄存器),D0=1 表示接收缓冲区有数据未取走(2)读取接收缓冲区3F8H –> AL(3)显示输入字符2号功能调用g tv gtf参考程序:CODE SEGMENTASSUME CS:CODESTART PROC FARMOV DX,3FBHMOV AL,80HOUT DX,ALMOV DX,3F8HMOV AL,12OUT DX,ALMOV DX,3F9HMOV AL,0OUT DX,ALMOV DX,3FBHMOV AL,03OUT DX,ALMOV DX,3F9HMOV AL,0OUT DX,ALMOV DX,3FCHMOV AL,0AHOUT DX,0ALLP1: MOV AH,1INT 16HJZ PPMOV AH,1 ;(或8,无回显)INT 21HMOV DX,3F8HOUT DX,ALPP: MOV DX,3FDHIN AL,DXTEST AL,01HJZ QQMOV DX,3F8HIN AL,DXMOV DL,ALMOV AH,2INT 21HQQ: JMP LP1RETSTART ENDP CODE ENDSEND START。
实验单机串行通信
实验六、单机串行通信一、实验目的1、熟悉微机接口实验装置的结构及使用方法2、掌握通信接口芯片8251和8250的功能和使用方法3、学会串行通信程序的编制方法二、实验仪器1、PC实验箱及连接线2、9针接头串行电缆三、芯片介绍本实验中用PC机中的8250和实验装置上的8251芯片作数据的传送和接收。
8250是一种通用的异步串行通信收发器(UART),而8251同时支持同步通信(USART),它们都是可编程的接口芯片。
1、UART-8250简介PC机自带两个串口,分为COM1和COM2,地址分别在3F8-3FFH和2F8-2FFH,接口芯片选用8250。
8250片内有10个寄存器,其中有几个是共用地址的,其识别由线路控制寄存器(LCR)的最高位DLAB来决定。
各寄存器的地址和格式如下所示:.表 4.9 8250寄存器地址DLAB A2 A1 A0 I/O口地址对应寄存器0 0 0 0 3F8H(2F8H)发送端数据寄存器0 0 0 0 3F8H(2F8H)接受端数据寄存器1 0 0 0 3F8H(2F8H)波特率因子寄存器(低8位)1 0 0 1 3F9H(2F9H)波特率因子寄存器(高8位)0 0 0 1 3F9H(2F9H)中断允许寄存器(IER)X 0 1 0 3FAH(2FAH)中断识别寄存器(IIR)X 0 1 1 3FBH(2FBH)线路控制寄存器(LCR)X 1 0 0 3FCH(2FCH)MODEM控制寄存器(MCR)X 1 0 1 3FDH(2FDH)线路状态寄存器(LSR)X 1 1 0 3FEH(2FEH)MODEM状态寄存器X 1 1 1 3FFH(2FFH)保留IER: D7 D0IIR: D7 D00:有中断中断识别 1:无中断 00:MODEM状态变化 01:发送缓冲器空10:接收器数据就绪 11:接收字符错或接收中止状态LCR: D7 D00:该位无效校验时附加位 1:偶 1:有 1:2位 10:7 11:81:强迫8250连 0:该位无效续输出低电平 1:奇偶校验位恒为0(对偶校验)或恒为1(对奇校验)LSR: D7 D0发送器保持寄存器空奇偶错[注:上面在各位为1时状态存在]MCR: D7 D0该位为可由用户指定的输出信号MSR: D7 D08250在正常通信之前,需要先设定波特率因子寄存器,它决定传输数据的速率。
可编程串行通信接口8250A自发自收实验
可编程串行通信接口8250A自发自收实验一、实验目的和要求1.了解并行通信的工作原理;2.掌握8250的编程方法。
二、实验内容和原理1.实验内容:对8250编程,实现下列功能:(1)主机键盘输入一个字符,并将字符的ASCⅡ码加1,指向ASCⅡ表中的下一个字符,通过SOUT引脚发送出去;(2)通过SIN引脚接受字符;(3)在屏幕上显示键盘输入的字符和接收到的字符。
这样就实现了CPU自发自收的功能。
线路连接:8250的D7~D0、A2~A0和DISTR、DOSTR引脚与系统数据线、地址线和读写控制线对应连接;片选线CS2接地址译码器输出端;INTRPT引脚与中断请求输入IRQ2端相连;2MHz的时钟信号送到XTIL1;BAUDOUT与RCLK连接;8250数据接收线SIN 与输出线SOUT相连接,是先自发自收。
线路连接如图1所示。
编程提示:8250采用查询方式进行数据通信,一桢数据格式为7位数据位位数据位,一位停止位,奇校验,波特率为2400bps,输入的基准时钟频率为2MHz。
流程图程序:DA TA SEGMENTMES1 DB 'IT WILL DISPLAY ON THE TERMINAL_SCREEN!!',0AH,0DH DB 'PLAY Q KEY EXIT TO DOS',0AH,0DH,0AH,0DH,'$'IOPORT EQU 0D880H-0280HIO8250CS EQU IOPORT+290H ;8250地址IO8250ZD EQU IOPORT+291HIO8250ZS EQU IOPORT+292HIO8250XK EQU IOPORT+293HIO8250MO EQU IOPORT+294HIO8250XZ EQU IOPORT+295HDA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TASTART: MOV AX,DATAMOV DS,AXMOV DX,OFFSET MES1 ;显示提示信息MOV AH,09INT 21HMOV AL,80H ;使DLAB=1,允许写除数寄存器MOV DX,IO8250XK ;线路控制寄存器OUT DX,ALMOV AX,30H ;除数值MOV DX,IO8250CS ;除数寄存器低8位OUT DX,ALMOV AL,AHINC DX ;除数寄存器高8位OUT DX,ALMOV AL,0AH ;7位数据、1位停止位,奇校验MOV DX,IO8250XK ;线路控制寄存器OUT DX,ALMOV AL,10H ;使自检控制位LOOP=1,自检MOV DX,IO8250MO ;MODEM控制寄存器OUT DX,ALMOV AL,00H ;屏蔽中断MOV DX,IO8250ZD ;写中断允许寄存器OUT DX,ALWA T: MOV DX,IO8250XZ ;读线路状态寄存器IN AL,DXTEST AL,00011110B ;出错否?JNZ ERROR ;转到ERRORTEST AL,00000001B ;接受数据就绪否?JNZ RCEVE ;转接收TEST AL,00100000B ;发送寄存器空否?JZ WAT ;不空,返回等待MOV AH,01H ;读键盘INT 21HMOV DX,IO8250CS ;发送下一个字符INC ALOUT DX,ALJMP WAT ;返回RCEVE: MOV DX,IO8250CS ;读接收数据IN AL,DXAND AL,01111111B ;保留7位CHAR: MOV DL,AL ;显示MOV AH,02HINT 21HDEC DLCMP DL,51H ;键入字符是吗‘Q’?JZ QUITCMP DL,71HJZ QUIT ;是,退出JMP WAT ;不是,继续QUIT: MOV AX,4C00H ;退出INT 21HERROR: MOV DX,IO8250XZ ;清除线路状态寄存器IN AL,DXMOV DL,'?' ;显示字符'?'MOV AH,02HINT 21HJMP WAT ;返回继续CODE ENDSEND START2.实验原理8250内部有三种寄存器,8250初始化编程为:a、将80H写入通信线路控制寄存器使最高位为1,建立寄存器和中断允许寄存器的标志。
linux设备驱动之8250串口驱动
linux设备驱动之8250串口驱动一:前言前一段时间自己实践了一下8250芯片串口驱动的编写。
今天就在此基础上分析一下linux kernel自带的串口驱动。
毕竟只有对比专业的驱动代码才能更好的进步,同以往一样,基于linix kernel2.6.25.相应驱动代码位于:linux-2.6.25/drivers/serial/8250.c。
二:8250串口驱动初始化相应的初始化函数为serial8250_init().代码如下:static int __init serial8250_init(void){int ret, i;if (nr_uarts > UART_NR)nr_uarts = UART_NR;printk(KERN_INFO "Serial: 8250/16550 driver $Revision: 1.90 $ ""%d ports, IRQ sharing %sabled\n", nr_uarts,share_irqs ? "en" : "dis");for (i = 0; i < NR_IRQS; i++)spin_lock_init(&irq_lists[i].lock);ret = uart_register_driver(&serial8250_reg);if (ret)goto out;serial8250_isa_devs = platform_device_alloc("serial8250",PLAT8250_DEV_LEGACY);if (!serial8250_isa_devs) {ret = -ENOMEM;goto unreg_uart_drv;}ret = platform_device_add(serial8250_isa_devs);if (ret)goto put_dev;serial8250_register_ports(&serial8250_reg, &serial8250_isa_devs->dev);ret = platform_driver_register(&serial8250_isa_driver);if (ret == 0)goto out;platform_device_del(serial8250_isa_devs);put_dev:platform_device_put(serial8250_isa_devs);unreg_uart_drv:uart_unregister_driver(&serial8250_reg);out:return ret;}这段代码涉及到的知识要求,如platform ,uart等我们在之前都已经做过详细的分析。
实验七 串口实验
[实验名称] 实验七串口实验--双机串口通讯(查询方式)[实验目的]1、掌握8250初始化的步骤;2、掌握在查询方式下利用串口进行数据传输的编程方法。
[实验要求]在计算机关机状态下用串口联机线把两台计算机的串口联接起来;开机后编写串口发送字符与接收字符程序,分别在两台机器上运行,完成字符发收的通讯。
●通讯参考参数:♦波特率:1200波特♦数据格式:1位停止符、8位数据位、奇校验●程序功能:♦发送程序运行后可由用户输入字符(串),回车退出;♦接收程序接收串口中收到的字符,接收到回车符后退出。
[实验原理]1、PC机上常用9针串口,其引脚定义如下:9针串口功能一览表针脚功能针脚功能1载波检测 6 数据准备完成2接收数据7发送请求3发送数据8发送清除4数据终端准备9振铃指示完成5 信号地线2、联机线的制作方法联机线用于直接连接两台电脑的串口,联机线应该选用带屏蔽的多芯线,把多余未用的芯全部接在接头的金属壳(地线)作为屏蔽用。
连线方法如下表所示:[实验步骤]1实验前编好上机程序(发送和接收共2个程序,均为查询方式);2在关机状态下连接好联机线;3开机,输入编好的程序并编译、连接、调试得到正确程序;4选一台机运行发送程序并输入字符,另一台机运行接收程序,进行通讯实验,能成功收发信息则请老师检查结果;5实验结束时先关机,再将联机线取下。
[实验报告要求]1、报告内容包括:实验目的、实验要求、原理摘要、实验程序、运行结果、思考题2、思考题:为什么在联机线的制作方法中,有多根引脚要交叉连接?比如2脚和3脚、6脚和4脚等等。
实验四接口实验
实验四接口实验一、实验目的1.熟悉8253、8259、8250的使用方法2.掌握中断管理程序、中断服务程序的编程方法3.了解串行通信的原理与方法二、实验内容1.读懂并调通下面的硬件时钟程序硬件时钟程序利用微机现有资源,不外接任何电路进行硬件实验的例子。
本程序通过修改实时时钟(中断类型号08H)的中断向量使之指向用户的中断服务程序,程序中重新设置8253的计数器0,使它每1/100秒产生一次中断,100次中断后秒量加1,然后调整时、分、秒并显示之。
程序从按下非空格键开始显示数据区中存放的时间值,然后每秒更新一次显示。
运行中若按下空格键即退出程序返回DOS。
STACK SEGMENT PARA STACK 'STACK'DB 256 DUP(0)STACK ENDSDA TA SEGMENTSEG8 DW ?OFF8 DW ?IMR DB ?COUNT DB 100TENH DB '2'HOUR DB '3:'TENM DB '5'MINUTE DB '9:'TENS DB '5'SECOND DB '0', 0DH, '$'DA TA ENDSCODE SEGMENTSTART PROC FARASSUME CS:CODE, DS:DA TAMOV DS, AXMOV AH, 0 ;等待键按下,并读出到AX中INT 16HMOV AL, 08H ;取8H中断的中断向量并保存MOV AH, 35HINT 21HMOV SEG8, ESMOV OFF8, BXCLI ;用户中断服务程序装载PUSH DSMOV AX, SEG TIMERMOV DS, AXMOV DX, OFFSET TIMERMOV AH, 25HINT 21HPOP DSMOV AL, 00110110B ;8253初始化,10MS中断一次OUT 43H, ALMOV AX, 11932OUT 40H, ALMOV AL, AHOUT 40H, ALIN AL, 21H ;读8259的IMRMOV IMR, AL ;保存IMRMOV AL, 0FCH ;重写IMR,开放时钟和键盘中断,;不改变其他位OUT 21H, ALSTIFOREVER:MOV AH, 1 ;检测键盘而不等待INT 16HCMP AL, 20H ;有空格按下吗?JZ EXIT ;有空格按下退出MOV DX, OFFSET TENH ;无空格按下,显示时间MOV AH, 09HINT 21HMOV AL, SECOND ;取秒值WAITCHA:CMP AL, SECOND ;秒值变否JZ WAITCHA ;秒值不变等待JMP FOREVEREXIT: CLIMOV AL, IMR ;恢复保存的IMRMOV AL, 36H ;重新设置8253,55MS中断一次OUT 43H, ALMOV AL, 0OUT 40H, ALOUT 40H, ALCLI ;恢复原中断向量PUSH DSMOV AX, SEG8MOV DS, AXMOV DX, OFF8MOV AH, 25HMOV AL, 08HINT 21HSTIMOV AH, 43HINT 21HTIMER PROC FARPUSH AXDEC COUNTJNZ L2MOV COUNT, 100INC SECONDCMP SECOND, '9'JLE TIMEXTMOV SECOND, '0'INC TENSCMP TENS, '6'JL TIMEXTMOV TENS, '0'INC MINUTECMP MINUTE, '9'JLE TIMEXTMOV MINUTE, '0'INC TENMCMP TENM, '6'JL TIMEXTMOV TENM, '0'JMP L3L2: JMP TIMEXTL3: MOV AL, HOURAND AL, 0FHMOV AH, TENHAND AH, 0DHMOV CL, 4ROL AH, CLOR AL, AHADD AL, 1DAACMP AL, 24JL L1MOV TENH, '0'MOV HOUR, '0'JMP TIMEXTL1: MOV AH, ALAND AL, 0FHOR AL, 30HMOV HOUR, ALMOV CL, 4ROR AH, CLAND AH, 0FHOR AH, 30HMOV TENH, AHTIMEXT: MOV AL, 20HOUT 20H, ALPOP AXIRETTIMER ENDPSTART ENDPCODE ENDSEND START2.参考教材P. 260的程序,编写完整的8250通信口自测程序。
微机实验_可编程串行通信(8250)
微型计算机本身配置了两个串行通信接口,分别为串行口1(COM1)和串行口2(COM2),I/O端口地址分别为3F8H~3FFH和2F8H~2FFH,对外接口采用9针插座。串行通信接口采用8250。
8250寄存器的端口地址如表10-1所示。
表10-1
I/O端口
IN/OUT
DLAB
寄存器名称
60H
1200
00H
30H
2400
00H
18H
4800
00H
0CH
9600
3.中断允许寄存器IER(3F9H)如图10-2所示。
图10-2
4.MODEM控制寄存器MCR(3FCH)如图10-3所示。
图10-3
5.9针串口插座(DB-9)外形如图10-4所示,引脚说明如表10-3所示。
图10-4
表10-3
EXIT:MOVAH,4CH;返回DOS
INT21H
STARTENDP
CODEENDS
ENDSTART
五、实验结论与心得
成绩
教师签名
批改时间
年月日
;内部输出输入反接,中断禁止
MOVAL,13H
OUTDX,AL
MOVDX,3F9H;设中断允许寄存器为0,使4种中断被屏蔽
MOVAL,0H
OUTDX,AL;把接收到的字符显示出来,把键盘输入的字符发
;送出去
FOREVER:MOVDX,3FDH;输入线状态寄存器内容,测试接收是否出错
INAL,DX
TESTAL,1EH
3F8H
OUT
0
数据发送寄存器
3F8H
IN
0
数据接收寄存器
3F8H
《计算机接口技术实验指导书》
《计算机接口技术》实验指导书2012-04-26目录实验环境简介 (3)实验一简单I/O口扩展实验 (5)实验二8255并行口实验 (7)实验三8250串口实验 (9)实验四8253定时器/计数器接口实验 (12)实验五8259中断控制器实验 (15)实验六存储器读写实验 (18)实验七A/D实验 (20)实验八D/A实验 (22)实验报告要求 (23)实验环境简介一、实验硬件环境实验采用北京精仪达盛科技有限公司的CPU挂箱,如下图所示。
并通过串口与PC机相连,进行程序的下载和调试。
二、实验软件环境8086集成开发环境是为INTEL8086系列程序开发的多窗口程序级开发调度软件,它的友好的WINDOWS的界面使用户的使用简单快捷,极大的提高了程序的开发效率。
安装程序:MCS 8086/ Setup.exe。
生成如下图标。
进行串口连接的配置如下。
三、实验注意事项实验之前认真阅读实验指导书的实验要求,进行前期知识的复习和实验内容的预习。
实验时要遵守实验室的规章制度,听从实验室老师的指导,禁止操作与本次实验无关的设备。
进行硬件连接和断开时应切断电源,禁止带电操作,以免损坏元件。
使用连线进行端口的连接时,要拧入、拧出,一次只连接或拔出一根线的一端。
四、实验要求要求按照实验指导书介绍,完成基本实验内容。
并能够在基本实验的基础上,改变实验参数,如:改变硬件线路设计,修改相应的实验程序,创新性地实现新实验的方案设计和实验内容。
实验一简单I/O口扩展实验一、实验目的1.熟悉74LS273,74LS244的应用接口方法。
2.掌握用锁存器、三态门扩展简单并行输入、输出口的方法。
3.通过本实验,掌握嵌入式系统的基础开发方法,掌握本实验平台的基本开发步骤,熟悉开发软、硬件平台的使用,学会程序的单步调试运行。
二、实验设备CPU挂箱、8086CPU模块三、实验内容逻辑电平开关的状态输入74LS244,然后通过74LS273锁存输出,利用LED显示电路作为输出的状态显示。
电子科技大学中山学院学生实验报告
电子科技大学中山学院学生实验报告学院:机电工程专业:课程名称:微机原理与应用实验电子科技大学中山学院学生实验报告学院:机电工程专业:课程名称:微机原理与应用实验电子科技大学中山学院学生实验报告学院:机电工程专业:课程名称:微机原理与应用实验电子科技大学中山学院学生实验报告学院:机电工程专业:课程名称:微机原理与应用实验班级:姓名:学号:组别:实验名称:实验四可编程并行接口8255(方式0)实验时间:成绩:教师签名:批改时间:一、实验目的和任务掌握8255方式0的工作原理及使用方法。
二、实验内容1.实验电路如图4-1,8255C口接逻辑电平开关K0~K7,A口接LED显示电路L0~L7。
2. 编程从8255C口输入数据,再从A口输出。
图4-1 图4-2编程提示:1)8255控制寄存器端口地址28BHA口的地址288HC口的地址28AH2)参考流程图(见图4-2)三、实验过程和数据记录1.源程序:电子科技大学中山学院学生实验报告学院:机电工程专业:课程名称:微机原理与应用实验班级:姓名:学号:组别:实验名称:实验五七段数码管实验时间:成绩:教师签名:批改时间:一、实验目的和任务掌握数码管显示数字的原理。
二、实验内容1.静态显示:按图5-1连接好电路,将8255的A口PA0~PA6分别与七段数码管的段码驱动输入端a~g相连,位码驱动输入端S1接+5V(选中),S0、dp接地(关闭)。
编程从键盘输入一位十进制数字(0~9),在七段数码管上显示出来。
2.动态显示:按图5-2连接好电路,七段数码管段码连接不变,位码驱动输入端S1,S0接8255 C口的PC1,PC0。
编程在两个数码管上显示“56”。
3.动态显示:使用图5-2的电路,编程在两个数码管上循环显示“00-99”。
图5-1 图5-2编程提示:1)实验台上的七段数码管为共阴型,段码采用同相驱动,输入端加高电平选中的数码管亮,位码加反相驱动器,位码输入端高电平选中。
实验一 基本串口通信程序设计
实验一基本串口通信程序设计实验要求:用TC对计算机的串口进行编程,并作一个简单的串口查询通讯程序。
实验方案:用RS-232串口通讯线将两台计算机A、B的串口相连。
实验步骤:1、首先对计算机串口通讯控制芯片8250的控制寄存器进行初始化和设置;2、对计算机B的串口发送一个数据前,查询计算机A的串口的发送移位寄存器是否为空,如果是则发送数据,如果为否则继续查询,直到条件成立;执行完发送指令后,再次查询计算机A的口的发送移位寄存器是否为空,如果是则结束发送;如果为否,则继续查询,直到条件成立。
3、从计算机A的串口接受刚才从计算机B的串口发送的数据前,先查询计算机A的口的接收数据标志位是否为1,如果是则表示计算机A的口接收数据准备就绪,执行接收指令,即从计算机A的口读入数据,若否则表示没有准备好接收,继续查询计算机A的口的接收数据标志位,直到为1;接收完数据后,再次查询计算机A的串口的接受寄存器是否为空的标志位的状态,如果为1则程序转入计算机B的串口的数据发送程序;如果否,则继续查询等待,直到接收。
实验内容:1.在COMDEBUG中针对串口通信各寄存器进行设置,掌握各寄存器在串口通信中的作用及各参数的含义。
Com1口中的10各可编程寄存器地址寄存器名称备注3F8H 发送保持寄存器(THR)DLAB=03F8H 接收缓冲寄存器(RBR)DLAB=03F8H 波特率因子寄存器[低](DLL)DLAB=13F9H 波特率因子寄存器[高](DLM)DLAB=13F9H 中断允许寄存器(IER)DLAB=03FAH 中断识别寄存器(IIR)3FBH 线路控制寄存器(LCR)3FCH Modem控制寄存器(MCR)3FDH 线路状态寄存器(LSR)3FEH Modem状态寄存器(MSR)注:com1口的基地址为:3F8; com2口的基地址为:2F8。
在上表中,10个可编程寄存器,使用了7个地址,其中部分寄存器共用一个地址,由DLAB=0/1来区分,在DLAB=1,用于设定通讯所需的波特率;8250的控制寄存器控制/状态字:1)接收缓冲寄存器(RBR)和发送保持寄存器(THR)RBR暂存从线路上接收到的有效字符,等待本地读取。
北理工微机原理与接口技术之AD,8250实验报告
微机原理与接口技术实验报告———8250串行接口ADC0809A/D转换器实验四8250串行接口实验一,实验目的(1)熟悉串行通信的一般原理和8250的工作原理。
(2)了解RS—232串行接口标准及连接方法。
(3)掌握8250芯片的编程方法。
二,实验设备微机实验教学系统实验箱,8086CPU模块三、实验内容在实验箱与PC机(上位机)之间实现串行通信,主机每下传一个字符,若通讯正确,则下位机返回一个同样的字符;若不正确,则无返回值或者返回值不同。
四,实验步骤(1)无须接线,内部已经连好。
8250的端口地址为0480H起始的偶地址单元。
(2)编写下位机程序,编译链接后,全速运行。
(3)退出“8086实验系统”,运行“串口调试助手”上位机程序。
(4)将“串口调试助手”程序输入和输出都调整为16进制格式,发送一个16进制数,观察返回的是否是同样一个16进制数。
五,实验程序程序流程图:实验源程序:CODE SEGMENT PUBLICASSUME CS:CODEORG 100HSTART:MOV DX,486H ;写通信线路控制寄存器D7=1MOV AX,80HOUT DX,AXMOV DX,480H ;设置波特率低字节MOV AX,12OUT DX,AXMOV DX,482H ;设置波特率高字节MOV AX,0OUT DX,AXMOV DX,486HMOV AX,3OUT DX,AXMOV DX,482H ;中断允许寄存器MOV AX,0OUT DX,AXMOV DX,48AH ;清除原始错误状态IN AX,DXMOV DX,480H ;清除原始状态IN AX,DXLOOP1:CALL RECVCALL SENDJMP LOOP1 ;循环发送SEND: ; 发送子函数PUSH AXMOV DX,48AHIN AX,DXTEST AX,20HJNZ SEND2 ;发送数据寄存器空,则跳转至SEND2,发送字符POP AX ;发送数据寄存器不是空,不可发送JMP SENDSEND2:POP AXMOV DX,480H ;指向发送接收数据寄存器,发送字符OUT DX,AXRETRECV: ;接收子函数MOV DX,48AHIN AX,DXTEST AX,1JZ RECV ;未接到到一个字符,则跳转至RECV,若接收到字符,则顺序往下执行。
基本接口技术实验—825016550串行接口应用实验
8250\16550串行接口应用实验1、实验目的a)掌握8250\16550的工作方式及应用编程。
b)掌握8250\16550的典型应用电路接法。
c)学习有关串行通信的知识和PC机串口的操作方法。
d)掌握使用16550实现双机通信的软件编制和硬件连接技术。
e)2、实验设备PC机2台,TD-PIT/B实验装置一套。
3、关于8250\16550应用程序的说明a)使用PCI_BIOS.EXE获取实验用PCI总线扩展卡分配的地址空间:16550使用BASE2,偏移地址为80H~87H;PC机COM1的端口地址为03F8H~03FEH。
b)串行通信的数据格式可设定如下:传输波特率为9600Baud,每个字节由一个起始位、8位数据位、1位停止位、偶校验。
4、实验内容a)串口自环收发应用实验。
采用PC机的串口1,编写自环收发程序,完成A~Z 字母的发送再接收回来显示。
程序:b)串口自发自收应用实验。
完成硬件电路设计,并编写程序,完成实验平台的自发自收实验,发送A~Z字母到串口,再接收回来显示(硬件连接:TXD与RXD相连)。
程序:code segmentassume cs:code start:mov dx,0ea83hmov al,80hout dx,almov dx,0ea80hmov al,12out dx,alinc dxmov al,0out dx,almov al,1bhmov dx,0ea83hout dx,almov al,03hmov dx,0ea84hout dx,alrev: call breakmov dx,0ea85hin al,dxtest al,01hjz revmov dx,0ea80hin al,dxcmp al,31hjz exitmov ah,14int 10htr:mov ah,1int 21hmov dx,0ea80hout dx,aljmp rev break proc nearmov ah,06hmov dl,0ffhint 21hje returnmov ax,4c00hint 21h return:ret break endpexit:mov ax,4c00hint 21hcode endsend startc)串口双机通讯应用实验。
微机原理实验+PC机串行通讯(8250)
PC机串行通讯实验一、实验目的1.进一步了解串行通信的基本原理。
2.掌握串行接口芯片8250的工作原理和编程方法。
3.熟悉PC机串行口的基本连接方法。
二、实验内容1.PC机RS-232串口自发自收。
按照PC机串口自发自收的连接方法连线。
编写PC机自发自收串行通信程序,要求:从键盘输入一个字符,将字符通过串口发送出去,再由次串口将字符接收回来并在屏幕上显示,实现自发自收。
要求:键盘输入一个字符,将字符通过串口发送出去,再由此串口将字符接收回来并在屏幕上显示,实现自发自收。
2.两台PC机间RS-232串口通信按照PC机RS-232串口直接互连的方法连接两台PC机。
编写PC机直接互联串行通信程序。
要求:由甲机键盘键入字符经串口发送给乙机,再由乙机通过串口接收字符并显示再屏幕上。
当键入感叹号“!”,结束收发过程。
要求:由甲机键盘键入字符经串口发送给乙机,再由乙机通过串口接收字符并显示在屏幕上。
当键入感叹号“!”,结束收发过程。
三、实验电路自发自收只需要将本机的2和3号端口短路即可。
以下是双机近距离通信连接图:四、程序设计及实验调试首先是8250芯片的初始化,初始化流图如下:按照书上的通信程序,采用查询方式编自发自收程序。
初始化之后,先读线路状态寄存器,再检测发送寄存器是否为空,出错则清除线路状态寄存器,接收就绪否,接收数据等。
若自发自收未做好准备,则显示’?’。
除数=1.8432M/(2400*16)=48=30H实验1 自发自收:CODE SEGMENTASSUME CS:CODESTART: MOV AL,10000000B ;8250初始化,设DLAB=1MOV DX,3FBHOUT DX,ALMOV AX,30H ;波特率为2400,基准时钟频率为1.8432MHz,除数为30HMOV DX,3F8HOUT DX,AL ;写入除数低字节MOV AL,AHMOV DX,3F9HOUT DX,AL ;写入除数高字节MOV AL,0AH ;7位数据,1位停止,奇校验MOV DX,3FBHOUT DX,AL ;写入线路控制寄存器MOV AL,00001111BMOV DX,3FCHOUT DX,AL ;写入Modem控制寄存器MOV AL,0MOV DX,3F9HOUT DX,AL ;写入中断允许寄存器,屏蔽中断WAIT_FOR: MOV DX,3FDH ;读线路状态寄存器,屏蔽中断IN AL,DXTEST AL,00011110B ;出错否JNZ ERRORTEST AL,00000001B ;接收数据就绪否JNZ RECEIVE ;转接收TEST AL,01000000B ;发送寄存器空否,不空,返回等待JZ W AIT_FORMOV AH,1INT 21H ;读键盘MOV DX,3F8H ;发送OUT DX,ALJMP W AIT_FORRECEIVE: MOV DX,3F8H ;读接收数据IN AL,DXAND AL,01111111B ;保留7位数据CMP AL,21H ;是”!”?JNZ CHARMOV AH,4CH ;返回DOSINT 21HCHAR: PUSH AXMOV DL,ALMOV AH,02H ;显示接收字符INT 21HPOP AXJMP W AIT_FORERROR: MOV DX,3FDH ;出错则清除线路状态寄存器IN AL,DXMOV DL,'?' ;显示’?’MOV AH,02HINT 21HJMP W AIT_FORCODE ENDSEND START实验中遇到问题及分析:在软件编程的过程中,因为是参考书上的程序,所以没有报错。
实验八 8250可编程通信实验
实验八8250可编程通信实验(与微机)一、实验目的了解8250的内部结构、工作原理;了解8250与PCI9052的接口逻辑;掌握对8250的初始化编程方法,学会使用8250实现设备之间的串行通信。
二、实验内容及要求1、编写程序:通过初始化8250,设置波特率为4800bps(或其它,但与微机部分一致),数据格式为8数据位,1停止位,偶校验;然后打开PC机的串行通信测试软件,向8250发送一批数据,8250接收完数据之后,再将数据依次发送回去。
MSR DW00f6H ;MODEM状态寄存器DLL DW 00f0H;波特率除数锁存器低位DLM DW00f1H;波特率除数锁存器高位ADR DW 00E0H ;用于清除PCI9052上一次写操作产生的地址IO_Bit8_BaseAddress DW?msg0 DB ‘BIOS不支持访问PCI $’msg1 DB ‘找不到Star PCI9052板卡 $’msg2 DB ‘读8位I/O空间基地址时出错$’.CODESTART: MOV AX,@DATAMOV DS,AXNOPCALL InitPCICALL ModifyAddress ;根据PCI提供的基地址,将偏移地址转化为实地址CALL INIT8250START2: MOV CX,10 ;接收数据(接收完设定的数据个数) CALL RECEIVE_GROUPMOV CX,10 ;发送数据(发完设定的数据个数)CALL SEND_GROUPJC WARNING1CALL IfExitJZ START2JMP ExitWARNING1: JMP Exit;*************发送一组字符子程序,个数在CX中***********Send_Group PROC NEARLEA SI,Send_BufferSend_Group1: LODSBCALL Send_ByteJC Send_Group2LOOP Send_Group1CLCSend_Group2: RETSend_Group ENDP;*************接收一组字符子程序,存放首地址在DPTR中,个数在R6R7中*********** Receive_Group PROC NEARMOV DX,ADROUT DX,AL ;用于清除PCI9052上一次写操作产生的地址LEA DI,Receive_BufferReceive_Group1: CALL Receive_ByteSTOSBLOOP Receive_Group1CLCRETReceive_Group ENDPINIT8250 PROC NEARMOV DX,ISRMOV AL,06HOUT DX,ALMOV DX,LCRMOV AL,83H ;允许访问波特率因子寄存器OUT DX,ALMOV DX,DLLMOV AL,40 ;除法除数低位寄存器,波特率设为;4800=(3.072*1000000/16)/DLMDLLOUT DX,ALMOV DX,DLM ;00H送高字节寄存器MOV AL,00HOUT DX,ALMOV DX,LCR ;不允许访问波特率因子寄存器MOV AL,1BH ;数据格式为8数据位,1停止位,偶校验OUT DX,ALRETINIT8250 ENDP;*********发送一个字节子程序,发送A中的数,失败置1CY*********Send_Byte PROC NEARPUSH CXPUSH AXMOV CX,1000MOV DX,LSRREP11: IN AL,DXTEST AL,20HJNZ OUTPORT1LOOP REP11POP AXSTCJMP EXIT8250OUTPORT1: POP AXMOV DX,RHROUT DX,ALMOV DX,ADROUT DX,AL ;清除PCI9052产生的RHR地址CLCEXIT8250: POP CXRETSend_Byte ENDP;*********接收一个字节子程序,接收字节在A中,接收失败置1CY*********Receive_Byte PROC NEAR MOV DX,LSR Receive1: IN AL,DX TEST AL,1 JZ Receive1 Receive2: MOV DX,RHR IN AL,DX Receive3: RET Receive_Byte ENDP Exit: MOV AH,4CH INT 21H; IfExit 、InitPCI 、ModifyAddress 子程序请参阅实验二 END START五、实验过程 12、运行程序3、运行“串口助手(ComPort.EXE)”,设置串口(波特率4800,8个数据位,一个停止位,偶校验),打开串口,选择“HEX发送”、“HEX显示”,向8250发送10个字节数据(输入数据之间用空格分隔),是否能接收到10个字节数据,接收到的数据是否与发送数据一致。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验七 8250串口实验
一、实验目的
1、熟悉串行通信的一般原理和8250的工原理。
2、了解RS--232串行接口标准及连接方法。
3、掌握8250芯片的编程方法。
二、实验设备
MUT—Ⅲ型实验箱、8086CPU模块。
三、实验原理介绍
1.实验原理图见8250串行接口电路。
由MAX232完成RS232
电平和TTL电平的转换,由8250完成数据的收发。
8250内部有
10个寄存器,分别对应着不同的IO口地址。
对不同的寄存器进
行初始化或读出写入操作就可以完成与计算机的通信。
由于不能
同时收发数据,所以8250又称为通用串行异步收发器,简写为:UART。
8250实验电路的所有信号均已连好。
8250串行接口电路
(1)电路原理:该电路由一片8250,一片MAX232组成,该电路所有信号线均已接好。
原理图如下:
(2)电路测试:见整机测试
2.程序框图(8250.ASM)
3.程序代码
;*******************************************
code segment ;define data segment
assume cs:code
org 0100h
start:
mov bx,0480h
mov dx,bx
add dx,6
mov ax,80h
out dx,ax
mov dx,bx
mov ax,0ch ;000ch---9600 ,clk=4.77MHZ/4 ; AL=4770000/16/9600/4=8
out dx,ax
add dx,2
mov ax,0h
out dx,ax
add dx,4
mov ax,07 ;no pe,8 bit, 1 stop
out dx,ax
mov dx,bx
add dx,2 ;no interupt
mov ax,0
out dx,ax
add dx,8h
in ax,dx
mov dx,bx
in ax,dx
crd: call recv
call send
jmp crd
send: push ax
mov bx,0480h
mov dx,bx
add dx,0ah
in ax,dx
test ax,20h
jnz recv2
pop ax
jmp send
recv2: pop ax
mov dx,bx
out dx,ax
ret
recv: mov bx,0480h
mov dx,bx
add dx,0ah
in ax,dx
test ax,01h
jnz recv1
jmp recv
recv1: mov dx,bx
in ax,dx
ret
code ends ;end of code segment
end start ;end assembly
3.实验提示
实验中,通讯波特率选用9600bps。
上下位机均采用查询方式。
8250的端口地址为0480起始的偶地址单元。
实验中,上位机向下位机发送一个字符,下位机将接收到的字
符返回。
事实上这就实现了串口通信的基本过程。
掌握了此实验
中的编程方法再编制复杂的串行通信程序也就不难了。
串行通信和并行通信是计算机与外围设备进行信息交换的基本方法,二者有不同的特点。
简而言之,前者电路及连线简单,最少用三根线就可以实现串口通信,但通信速率慢,适用于长距离慢速通信;后者电路及连线复杂,成本较高,但通信速率快,适用于短距离高速通信。
四、实验内容及步骤
在实验箱与PC机(上位机)之间实现串行通信,主机每下传
一个字符,如通讯正确则下位机返回一个同样的字符,如果不正
确,则无返回或不相同。
1.将实验箱与电脑相连。
实验箱连线:利用串口电缆连接实验箱
的串口和计算机的串口(COM1或COM2)。
2.将CPU-8086芯片固定住,打开“EL教学实验箱”电源,实验
箱先显示"1996_7",过一会儿显示"P_"。
3.打开实验软件,设置串口如下图。
导入程序8250.ASM。
在“运
行”菜单中选择“系统复位”并立即按实验箱上的PRESET按钮。
实验箱的数码管显示"C_"。
桌面显示。
4.选择“编译”菜单中的“编译与连接”。
5.选择“运行”菜单中的“全速运行”。
.
6.实验箱退出86编译系统,启动实验六的上位机驱动程序T6UP.EXE,首先选择串行端口(COM1或COM2),端口与步骤1一致,键入串口号即可,然后从键盘上输入字符,看返回字符是否正确。
欲退出T6UP.EXE,按回车键。
五、实验结果。