微机原理与接口技术实验报告[交大]_第1页
微机原理与接口技术实验报告[交大]_第2页
微机原理与接口技术实验报告[交大]_第3页
微机原理与接口技术实验报告[交大]_第4页
微机原理与接口技术实验报告[交大]_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、微机实验报告姓名: 章叶满学号:10214021班级:电子1001时间:2012年12月30日实验一 交通灯控制实验一、 实验目的 通过应用接口技术设计十字路口、复杂路口交通灯控制系统,学会应用“微机原理与接口技术”课程所学的x86汇编语言和接口技术掌握可编程并行接口芯片的硬件设计、软件编程,实现十字路口交通灯的模拟控制并思考计算机如何应用在各种控制系统中。(1) 掌握利用x86汇编语言技巧(2) 掌握x86微处理器与可编程并行接口芯片8255a硬件电路设计(3) 熟悉模拟交通灯控制的实现方法并思考如何应用在实际中。二、 实验内容基本功能:设计一个交通控制系统,该控制系统工作后,交通灯按照如下

2、规律变化:(1) 南北路口的绿灯、东西路口的红灯同时亮3秒左右。(2) 南北路口的黄灯闪烁若干次,同时东西路口的红灯继续亮。(3) 南北路口的红、东西路口的绿灯同时亮3秒。(4) 南北路口的红灯继续亮、同时东西路口的黄灯亮闪烁若干次。(5) 返回(1)依次循环。如图5-1,l7、l6、l5作为南北路口的交通灯与pc7、pc6、pc5相连,l2、l1、l0作为东西路口的交通灯与pc2、pc1、pc0相连。编程使六个灯按交通灯变化规律燃灭。 红 黄 绿 红 黄 绿图5-1 硬件连接示意图三、 参考流程图四、 源程序及注释data segment ;定义数据段 x db ?data endsstac

3、k1 segment stack ;定义堆栈段 dw 100h dup(0)stack1 endscode segment ;定义段码段assume cs:code,ds:data,ss:stack1 start: mov ax,data mov ds, ax mov dx,0ec0bh mov al,10000000b ;工作方式0,c口输出 out dx,alfirst: mov dx,0ec0ah mov al,00100100b out dx,al ;南北绿灯亮,东西红灯亮,写入c口 mov cx,0 ;送入初值65536 mov ax,4000h ;软件长延时delay1: dec

4、ax jnz delay1 loop delay1 mov bl,4 ;控制黄灯亮的次数second:mov dx,0ec0ah mov al,01000100b out dx,al ;南北黄灯亮,东西红灯亮,写入c口 mov cx,3000h mov ax,0100h li1: dec ax jnz li1 loop li1 mov dx,0ec0ah ;软件短延时 mov al,00000100b ;南北黄灯灭,东西红灯亮,写入c口 out dx,al mov cx,3000h mov ax,0100hwen1: dec ax jnz wen1 ;软件短延时 loop wen1 dec b

5、l jnz second ;黄灯闪烁4次third: mov dx,0ec0ah mov al,10000001b out dx,al ;南北红灯亮,东西绿灯亮 ,写入c口 mov cx,0 mov ax,4000hdelay2: dec ax ;软件长延时 jnz delay2 loop delay2 mov bl,4 ;控制黄灯亮的次数forth: mov dx, ,0ec0ah mov al,10000010b out dx,al ;南北红灯亮,东西绿灯亮 ,写入c口 mov cx,3000h mov ax,0100hli2: dec ax jnz li2 ;软件短延时 loop li2

6、 mov dx, 0ec0ah mov al,10000000b out dx,al ;南北红灯亮,东西黄灯灭,写入c口 mov cx,3000h mov ax,0100hwen2: dec ax jnz wen2 loop wen2 dec bl jnz forth ;黄灯闪烁4次 mov dl,0ffh mov ah,06h int 21h ;执行键盘输入操作 jz first mov ah,4ch int 21h ;返回操作系统code endsend start五、 总结本次实验为8255a并行接口实验,这次实验在代码编写阶段一开始找到了入手点。我在程序中使用了软件延时,时长取决与循环

7、次数和计算机的速度,一开始编制的程序中短延时采用了两层循环,由于自己没有实践经验,所以最后通过实验结果确定了最后的数据。 通过此次程序设计,我认识到画软件流程图的重要性,画好流程图后可以很清晰的看清逻辑,不仅加快了编写过程,而且有利于出错时查找问题所在。虽然这次实验我是一步一步编程下来的,但是在调试结果时,仍发现了红灯错亮的问题,最后发现时写程序时的粗心所致。实验二 可编程定时器/计数器一、 实验目的通过实验了解可编程定时器/计数器的本质是计数,学会再设计应用系统中如何用接口芯片实现计数和定时功能,通过实验思考并比较标准ttl集成电路实现计数和可编程定时器/计数器有什么不同,各有哪些特点?思考

8、计数器可以用哪些场合。(1) 掌握8253a与x86微机处理硬件连接原理(2) 掌握8253a计数定时应用编程(3) 熟悉掌握8253a在pc机系统中典型应用方法并思考如何应用在其他系统中。二、 实验内容基本功能(1) 利用单脉冲发生器作为8253a可编程计数定时器时钟信号,实现n个脉冲后产生输出高电平信号(2) 利用8253a可编程计数定时器实现产生1s钟定时输出程序设计,输入1mhz1 按图5-2虚线连接电路,将计数器0设置为方式0,计数器初值为n(n0fh),用手动逐个输入单脉冲,编程使计数值在屏幕上显示,并同时用逻辑笔观察out0电平变化(当输入n+1个脉冲后out0变高电平)。图5-

9、2 8253输入连线图2 按图5-3连接电图,将计数器0、计数器1分别设置为方式3,计数初值设为1000,用逻辑笔观察out1输出电平的变化(频率1mhz)。图5-3 8253 输出连线图(3) 实验原理8253具有3个独立的计数通道,采用减1计数方式。在门控信号有效时,每输入1个计数脉冲,通道作1次计数操作。当计数脉冲是已知周期的时钟信号时,计数就成为定时。作计数器时, 要求计数的次数可直接作为计数器的初值预置到减“1”计数器中。8253中各通道可有6种可供选择的工作方式,以完成定时、计数或脉冲发生器等多种功能。本实验用到的是方式0计数结束中断。在写入计数值n之后的第一个clk的下降沿将n装

10、入计数执行单元,待下一个clk的下降沿到来且门控信号gate为高电平时,通道开始启动计数。在计数过程中,out一直保持低电平,直到计数达“0”时,out输出由低电平变为高电平,并且保持高电平。三、 参考流程图四、 源程及注释 (1)实现n个脉冲后产生输出高电平 data segment n equ 06h;计数器初值, chldb 0ah,0dh,$;回车换行data endsstack1 segment stack dw 100 dup(0)stack1 endscode segment assume cs:code,ds:data,ss:stack1start: mov ax,data m

11、ov ds,axmov dx,0ec03h ;控制寄存器地址mov al,00010000b ;计数器0,工作方式0,二进制out dx,al ;写入控制字mov dx,0ec00h ;计数器0地址mov al,nout dx,al ;写入计数初值 mov cl,nl0: mov al,00h ;计数器0锁存mov dx,0ec03hout dx,almov dx,0ec00hin al,dx ;读取当前端口的数值cmp al,cljne l0 ;若al不等于cl,则继续到l0循环dec cl ;cl减1来更改cl值mov dl,alcmp dl,09h ;dl与9比较,小于9跳到l1jle

12、l1add dl,07h ;dl大于9加7变成a-f之间的数li: add dl,30hmov ah,02h ;单字符输出计数器当前值int 21h mov dx,offset chl ;输出字符换行mov ah,09hint 21h mov dl,0ffh ;执行键盘输入操作 mov ah,06h int 21h jz l0 mov ah,4chint 21hcode endsend start(2)计数器定时产生一秒的定时输出data segment x db 100 dup (?)data endsstack1 segment stack dw 100h dup(0)stack1 end

13、scode segmentassume cs:code,ds:data,ss:stack1 start: mov ax,data mov ds, ax mov dx,0ec03h mov al,00110110b ;计数器0,工作方式3,二进制mov dx,al ;写入控制口mov dx,0ec00hmov ax,1000 ;计数值1000out dx,al ;写入计数器0低字节mov al,ahout dx,al ;写入计数器0高字节mov dx,0ec03h mov al,01110110b ;计数器1,工作方式3,二进制mov dx,al ;写入控制口mov dx,0ec01hmov a

14、x,1000 ;计数值1000out dx,al ;写入计数器1低字节mov al,ahout dx,al ;写入计数器1高字节code ends end start五、 总结通过实验,学会8253芯片和微机接口原理和方法,掌握8253定时器/计数器的基本工作原理、工作方式和编程原理,熟悉汇编代码的编写。实验中,连接电路,利用代码控制实验电路,深对课本理论的理解。实验三 可编程中断控制器一、实验目的通过实验了解中断是计算机系统最重要的工作方式之一,理解中断能实现系统协调工作,了解中断在操作系统,工业控制中的应用。通过实验可学会可编程中断控制器8259的结构、中断申请、中断响应、中断处理、中断返

15、回等中断原理,掌握中断系统的编程与应用。(1)掌握pc机8259a可编程中断控制器中断基本原理(2)掌握中断源、中断处理过程、中断向量表的建立、dos的使用(3)熟悉主程序、中断服务程序编写,了解中断相应过程二、实验内容(1)学习pc机系统中断原理(2)利用手动产单脉冲作为中断请求信号 , 要求每按一次开关产生一次中断在屏幕上显示一次 “tpc pci card interrupt” 中断10次后程序退出。实验电路图如下在dos系统下查得中断源地址为000bh,对应的中断源irq11,所对应的中断变量类型号为73h。9054的i/o起始地址为0e800h。8259a主片端口地址为20h、21h

16、8259a从片端口地址为a0h、a1h(3)编程提示1. 由于9054的驱动程序影响直写9054芯片的控制寄存器,中断实验需要在纯dos的环境中才能正常运行。这里指的纯dos环境是指微机启动时按f8键进入的dos环境。windows重启进入msdos方式由于系统资源被重新规划过,所以也不能正常实验。 2. 由于tpc卡使用pci总线,所以分配的中断号每台微机可能都不同,编程时需要了解当前的微机使用那个中断号并进行设置,获取方法请参看汇编程序使用方法的介绍。(也可使用自动获取资源分配的程序取得中断号) 3. 在纯dos环境下,有些微机的bios设置中有将资源保留给isa总线使用的选项,致使在纯d

17、os环境(windows环境下不会出现此问题)下pci总线无法获得系统资源,也就 8253 无法做实验,这时需要将此选项修改为使用即插即用。 4. 在纯dos环境下,有些微机的bios设置中有使用即插即用操作系统的选项,如果在使用即插即用操作系统状态下,bios将不会给tpc卡分配系统资源,致使在纯dos环境(windows环境下不会出现此问题)下pci总线无法获得系统资源,也就无法做实验,这时需要将此选项修改为不使用即插即用操作系统。 5. 由于tpc卡使用9054芯片连接微机,所以在编程使用微机中断前需要使能9054的中断功能,代码如下: mov dx,ioport_cent+68h ;设

18、置 tpc 卡中9054芯片io口,使能中断 in ax,dx or ax,0900h out dx,ax 其中ioport_cent是9054芯片寄存器组的i/o起始地址,每台微机可能都不同,编程时需要了解当前的微机使用哪段并进行设置,获取方法请参看本书结尾部分的介绍。(也可使用自动获取资源分配的程序取得),+68h的偏移是关于中断使能的寄存器地址,设置含义如下: 程序退出前还要关闭9054的中断,代码如下: mov dx,ioport_cent+68h ;设置 tpc 卡中9054芯片io口,关闭中断 in ax,dx and ax,0f7ffh out dx,ax 6. pc机中断控制器

19、8259 的地址为20h、21h,编程时要根据中断类型号设置中断矢量,8259中断屏蔽寄存器imr对应位要清零(允许中断),中断服务结束返回前要使用中断结束命令: mov al,20h out 20h,al 中断结束返回dos时应将imr对应位置1,以关闭中断 。三、参考流程图 流程图如下:四、源程及注释data segment int_vect equ 073h ;中断0-7的向量为:08h-0fh,中断8-15的向量为:70h-77h irq_mask_2_7 equ 11111011b ;中断掩码,中断0-7时从低至高相应位为零,中断8-15时第2位为零 irq_mask_9_15 eq

20、u 11110111b ;中断0-7时全一,中断8-15时从低至高相应位为零 ioport_cent equ 0e800h ;tpc卡中9054芯片的io地址 csreg dw ? ipreg dw ? ;旧中断向量保存空间 ipr_times dw 10h ;中断计数 msg1 db 0dh,0ah,tpc pci card interrupt,0dh,0ah,$ msg2 db 0dh,0ah,press any key to exit!,0dh,0ah,$ msg3 db 0dh,0ah,press dmc to interrupt 10 times and exit!,0dh,0ah,

21、$data endsstack segment stackdb 100 dup (?)stack endscode segment assume cs:code,ds:data,ss:stack,es:datastart:;enable local interrupt input.386climov ax,datamov ds,axmov es,axmov ax,stackmov ss,axmov dx,ioport_cent+68h ;设置 tpc 卡中9054芯片io口,使能中断in ax,dxor ax,0900hout dx,axmov al,int_vect ;保存原中断向量mov

22、ah,35h ;35h功能调用int 21hmov ax,esmov csreg,axmov ipreg,bxmov ax,seg int_proc ;设置新中断向量mov ds,ax ;中断服务程序入口段地址送ds mov dx,offset int_proc ;中断服务程序入口偏移地址送dxmov al,int_vect ;irq11的中断类型号送almov ah,25h ;25h功能调用int 21hin al, 21h ;设置中断掩码,读irmand al, irq_mask_2_7 ;允许主片请求中断out 21h, al ;写中断屏蔽字ocw1in al, 0a1h ;设置中断掩码

23、,读irmand al, irq_mask_9_15 ;允许从片请求中断out 0a1h, al ;写中断屏蔽字ocw1mov ax,datamov ds,axmov dx,offset msg2mov ah,09h ;9号功能,输出给定字符串int 21hmov dx,offset msg3mov ah,09hint 21hmov irq_times,0ahstiloop1:cmp irq_times,0 ;等待中断并判断中断10次后退出jz exitmov ah,1int 16hjnz exit ;按任意键退出jmp loop1exit: climov bl, irq_mzsk_2_7 ;

24、恢复中断掩码not blin al, 21hor al, blout 21h, almov bl, irq_mask_9_15not blin al, 0a1hor al, blout 0a1h,almov dx,ipreg ;恢复原中断向量mov ax,csregmov ds,axmov ah,25hmov al,int_vectint 21hmov dx,ioport_cent+68h ;设置 tpc 卡中9054芯片io口,关闭中断in ax,dxand ax,0e7ffhout dx,axmov ax,4c00h ;结束,返回dos int 21hint_proc proc far ;

25、中断服务程序push ax ;保护现场push dxpush dsdec irq_timesmov ax,data ;中断处理,输出给定字符串mov ds,axmov dx,offset msg1mov ah,09hint 21hmov al,20h ;写ocw2,送中断结束命令eoiout 0a0h,alout 20h,alpop dspop dxpop axstiiretint_porc endpcode ends end start五、总结做实验之前,我预习实验指导书,通过课本第六章的例题6-3,我大体知道怎么样才能实现,但不知道怎样设置tpck卡的中断使能,不知道什么叫做中断掩码,以致

26、编写程序有些困难,通过老师的讲解我明白了中断使能的编写,中断掩码就是编写82599a的0cw1。 通过实验,学会了8259a芯片初始化,掌握8259a基本工作原理、工作方式和编程原理,熟悉汇编代码的编写。实验中,连接电路,利用代码控制实验电路,深对课本理论的理解。实验四 模/数转换器 adc0809一、实验目的了解模/数转换的基本原理,掌握adc0809的使用方法。二、实验内容、实验电路原理图如图下。通过实验台左下角电位器rw1输出05直流电压送入adc0809通道0(in0), 编程采集in0输入的电压,在屏幕上显示出转换后的数据(用16进制数)2、将jp3的1、2短接,使in2处于双极性工

27、作方式,并给in1输入一个低频交流信号(幅度为),编程采集这个信号数据并在屏幕上显示波形。 3、实验提示:adc0809的in0口地址为298h,in1口地址为299h。 in0单极性输入电压与转换后数字的关系为: 其中ui为输入电压,uref为参考电压,这里的参考电压为机的电源。 、一次a/d转换的程序可以为 mov dx,口地址 out dx,al ;启动转换 ;延时 in al,dx ;读取转换结果放在al中三、参考流程图主程序 显示子程序四、源程及注释code segmentassume cs:codestart:mov dx,0ec18h ;启动a/d转换器 out dx,almov

28、 cx,0ffh ;延时 delay: loop delayin al,dx ;从a/d转换器输入数据 mov bl,al ;将al保存到bl mov cl,4shr al,cl ;将al右移四位 call disp ;调显示子程序显示其高四位 mov al,bl and al, 0fhcall disp ;调显示子程序显示其低四位 mov ah,02h ;2号功能mov dl,20h int 21h mov dl,20h ;加空格符int 21h push dx mov ah,06h ;判断是否有键按下 mov dl,0ffh int 21h pop dx je start ;若没有转sta

29、rt mov ah,4ch ;退出 int 21hdisp proc near ;显示子程序 mov dl,alcmp dl,9 ;比较dl是否9 jle ascii ;若不大于则为0-9,加30h为其ascii码 add dl,7 ;否则为a-f,再加7 ascii: add dl,30h ;显示 mov ah,02hint 21hret disp endpcode ends end start五、总结 实验中,开始显示的是满屏数据据,通过在空格符前加mov dl,0ah;mov dl,0dh;即回车换行控制命令,实现了一列显示。 通过实验,基本掌握了adc0809基本工作原理。实验中,连接

30、电路,利用代码控制实验电路,深对课本理论的理解。实验五 双机串行通讯一、实验目的1、 进一步了解串行通信的基本原理。2、 掌握串行接口芯片8250的工作原理和编程方法。3、 熟悉pc机串行口的基本连接方法。二、实验内容1、pc机rs-232串口自发自收。按照pc机串口自发自收的连接方法连线。编写pc机自发自收串行通信程序,要求:从键盘输入一个字符,将字符通过串口发送出去,再由此串口将字符接收回来并在屏幕上显示,实现自发自收。2、 两台pc机间rs-232串口通信。按照pc机rs-232串口直接互连的方法连接两台pc机。 编写pc机直接互连串行通信程序;要求:由甲机键盘键入字符经串口发送给乙机,

31、再由乙机通过串口接收字符并显示在屏幕上。当键入感叹号“!”,结束收发过程。三、实验原理(1)本实验为异步通信:以字符为单位进行传送,每传送一个字符,以起始位作为开始标志,以停止位作为结束标志。异步串行通信的工作过程是:传送开始后,接收设备不断地检测传输线是否有起始位到来,当接收到一系列的“1”(空闲或停止位)之后,检测到第一个“0”,说明起始位出现,就开始接收所规定的数据位、奇偶校验位及停止位。经过接收器处理,将停止位去掉,把数据位拼装成一字节数据,并且经奇偶校验无错误,才算是正确地接收到了一个字符。当一个字符接收完毕,接收设备又继续测试传输线,监视“0”电平的到来(下一个字符的开始),直到全

32、部数据接收完毕。(2)8250各部分功能说明8250片内有10个寄存器,其中有几个是共用地址的,其识别由线路控制寄存器(lcr)的最高位dlab来决定。各寄存器的地址和格式如下所示:3)数据发送和接收:四、源程及注释1自发自收data segment chldb 0ah,0dh,$ ;换行字符串data endsstack1 segment stack dw 100 dup(0)stack1 endscode segment assume cs:code,ds:data,ss:stack1start:mov ax,data mov ds,axmov dx,3fbhmov al,80h ;置线路

33、控制寄存器dlab=1 out dx,al mov ax,30h ;波特率为2400mov dx,3f8h ;写除数寄存器低8位 out dx,almov al,ah ;写除数寄存器高8位inc dx out dx,almov al,03h ;八位数据,1停止,无校验mov dx,3fbh ;线路控制寄存器 out dx,al mov dx,3fch mov al,03h out dx,al ;写modem控制寄存器mov al,0 ;屏蔽全部中断mov dx,3f9h out dx,alwait1: mov dx,3fdh ;读线路状态寄存器in al,dxtest al,1eh ;判断是否

34、有错jnz errortest al,01h ;判断是否收到jnz receivetest al,20h ;判断发送端是否空jz wait1mov dl,0ffh ;六号功能调用读入待发送数据mov ah,06hint 21hjz wait1mov dx,3f8h ;写发送regout dx,aljmp wait1 ;返回 wait1char: push axmov dl,al ;显示接收mov ah,02hint 21hmov dx,offset chl ;输出字符串换行mov ah,09hint 21hpop axjmp wait1error:mov dx,3fdh ;出错则清除线路状态寄

35、存器 in al,dx mov dl,? ;对于错误显示?mov ah,02hint 21hjmp wait1receive: mov dx,3f8hin al,dx ;读数据接收寄存器 cmp al,! ;判断是否结束jne char;- mov ah,4ch int 21hcode ends end start2.双机通信(1)发送端: code segment assume cs:codestart: mov al,80h ;8250初始化,设dlab=1 mov dx,3fbh out dx,al mov ax,30h mov dx,3f8h out dx,al ;写入除数低字节 mo

36、v al,ah inc dx out dx,al ;写入除数高字节 mov al,0ah ;7位数据,1位停止,奇校验 mov dx,3fbh out dx,al ;写入线路控制寄存器 mov al,03h mov dx,3fch out dx,al ;写入modem控制寄存器 mov al,0 mov dx,3f9h out dx,al ;写中断允许寄存器,屏蔽所有中断 wait1: mov dx,3fdh ;读线路状态寄存器 in al,dx test al,1eh ;出错否 jnz error ;test al,01h ;接收数据就绪否 ;jnz send ;发送 test al,20h

37、 ;发送寄存器空否,不空,返回等待 jz wait1 send: mov ah,1 int 21h ;读键盘 cmp al,21h ;是!? jz exit ;是,返回操作系统 mov dx,3f8h ;不是,则发送 out dx,al jmp wait1 ;返回等待 error: mov dx,3fdh ;出错则清除线路状态寄存器 in al,dx mov dl,? ;显示? mov ah,02h int 21h jmp wait1 exit: mov ah,4ch int 21h code ends end start (2)接收端: code segment assume cs:code

38、 start: mov al,80h ;8250初始化 mov dx,3fbh out dx,al mov ax,30h ;写除数 mov dx,3f8h out dx,al ;写入除数低字节 mov al,ah inc dx mov dx,3f9h out dx,al ;写入除数高字节 mov al,0ah mov dx,3fbh out dx,al ;写入线路控制寄存器 mov al,03h mov dx,3fch out dx,al ;写入modem控制寄存器 mov al,0 mov dx,3f9h out dx,al ;写中断允许寄存器,屏蔽所有中断 wait1: mov dx,3fdh ;读线路状态寄存器 in al,dx test al,1eh ;出错否 jnz error test al,01h ;接收数据就绪否 jnz receive ;转接收 ;test al,20h ;发送寄存器空否,不空,返回等待 ;jz wait1 jmp wait1 ;均返回等待 receive: mov dx,3f8h ;读接收数据 in al,dx and al,01111111b ;保留位数据 cmp al,21h ;是!? jnz char mov ah,4ch ;返回操作系统 int 21h char

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论