当前位置:文档之家› 广工计算机接口与通信实验报告(原创)

广工计算机接口与通信实验报告(原创)

接口与通讯实验报告1、8253定时/计数器实验2、8255并行接口实验3、数字式时钟(电子钟)4、D/A(数/模)转换实验5、A/D(模/数)转换实验学生学院计算机学院专业班级学号 311000学生姓名指导教师2013年1 月1日__计算机__学院__2010级计算机科学与技术_专业__四___班___组、学号3110006015姓名张法光协作者_________ 教师评定_________________实验题目 8253定时/计数器实验一、实验目的与要求学习8253可编程定时器/计时器定时方法。

学习8253多级串联实现大时间常数的定时方法。

学习8086/86控制8253可编程定时器的方法。

二、实验内容用8253对标准脉冲信号进行计数,就可以实现定时功能。

用板上的1MHz作为标准信号,将8253可编程计数器/定时器的时间常数设在1000000次,就可以在定时器的管脚上输出1秒针高/1秒钟低得脉冲信号。

因为8253每个计数器只有十六位,要用两个计数器才能实现一百万次的技术,实现每一秒输出状态发生一次反转。

1、实验电路2、实验连线8253的CS,接地址译码CS4,8253_GATEO,接VCC(是+5V),8253_GATE1,也接VCC(是+5V)。

8253_CLK1,接1MHz。

具体连线见下表:3、实验原理8253即可做定时器又可作计数器:(1)计数:计数器装入初值后,当GATE为高电平时,可用外部事件为CLK,脉冲对计数值进行减1计数,每来一个脉冲减1,当计数值减至0时,在OUT端输出一个标志信号。

(2)定时:计数器装入初值后,当GATE为高电平时,由CLK脉冲触发开始自动计数,当计数到零时,发计数结束定时信号。

8253控制字4、实验程序框图三、实验程序与注释CONTROL equ 0c003h ;控制口地址COUNT0 equ 0c000h ;计数器0地址COUNT1 equ 0c001h ;计数器1地址COUNT2 equ 0c002h ;计数器2地址code segmentassume cs:codestart proc nearmov al, 36H(00110110B) ; 计数器0,16位,方式3,二进制 mov dx, CONTROLout dx, al; 将控制字写入控制寄存器mov ax, 1000 ;在计数器0中写入初值mov dx, COUNT0out dx, al ; 计数器低字节mov al, ahout dx, al ; 计数器高字节mov al, 76H(01110110B); 计数器1,16位,方式3,二进制 mov dx, CONTROLout dx, al ;将控制字写入控制寄存器mov ax, 1000 ;在计数器1中写入初值mov dx, COUNT1out dx, al ; 计数器低字节mov al, ahout dx, al ; 计数器高字节jmp $start endpcode endsend start若改用方式2,并改变时间常数。

如何修改程序。

(程序段加粗为修改部分)CONTROL equ 0c003h ;控制口地址COUNT0 equ 0c000h ;计数器0地址COUNT1 equ 0c001h ;计数器1地址COUNT2 equ 0c002h ;计数器2地址code segmentassume cs:codestart proc nearmov al, 34H(00110100B) ; 计数器0,16位,方式2,二进制mov dx, CONTROLout dx, al; 将控制字写入控制寄存器mov ax, 5000 ;在计数器0中写入初值mov dx, COUNT0out dx, al ; 计数器低字节mov al, ahout dx, al ; 计数器高字节mov al, 74H(01110110B); 计数器1,16位,方式2,二进制mov dx, CONTROLout dx, al ;将控制字写入控制寄存器mov ax, 200 ;在计数器1中写入初值mov dx, COUNT1out dx, al ; 计数器低字节mov al, ahout dx, al ; 计数器高字节jmp $start endpcode endsend start__计算机__学院__2010级计算机科学与技术_专业__四___班___组、学号3110006015姓名张法光协作者_________ 教师评定_________________实验题目 8255并行接口实验一、实验目的与要求1.了解8255芯片结构及编程方法。

2.了解8255输入/输出实验方法。

二、实验内容利用8255可编程并行口芯片,实现输入/输出实验,实验中用8255PA口作输出,PB口作输入。

1、实验电路2、实验连线8255的CS,接地址译码/CS0。

PA0-PA7(PA口)接LED0-LED7(LED),PB0-PB7(PB口)接K0-K7(开关量)。

数据线、读/写控制、地址线、复位信号板上已接好。

连接孔1 连接孔2连接孔1 连接孔2连接孔1 连接孔2CS0 → 8255_CS 注:若8255的CS接地址孔8000H。

则PA口地址为8000HPB口地址为8001HPC口地址为8002H控制口地址为8003H L0 → 8255-PA0L1 → 8255-PA1L2 → 8255-PA2L3 → 8255-PA3L4 → 8255-PA4L5 → 8255-PA5L6 → 8255-PA6L7 → 8255-PA7K0 → 8255-PB0K1 → 8255-PB1K2 → 8255-PB2K3 → 8255-PB3K4 → 8255-PB4K5 → 8255-PB5K6 → 8255-PB6K7 → 8255-PB73、实验原理可编程通用接口芯片8255A有三个八位的并行I/O口,它有三种工作方式。

本实验采用是方式0:PA,PC口输出,PB口输入。

*8255控制字4.实验程序框图三、实验程序与注释mode equ 82H ; 10000010B; 方式0,PA,PC输出,PB输入 PortA equ 8000h ; Port APortB equ 8001h ; Port BPortC equ 8002h ; Port CCAddr equ 8003h ; 控制字地址code segmentassume cs:codestart proc nearStart:mov al, modemov dx, CAddrout dx, al ; 输出控制字mov dx, PortCout al, dx ; 输出到PortCmov dx, PortBin dx, al ; 输入PortBmov dx, PortAout dx, al ; 输出到PortAmov ah, 200call delayjmp Startendpdelay proc near ; 入栈保护现场push axmov al,0push cxmov cx,axloop $ ; 出栈恢复现场pop cxpop axretdelay endpcode endsend start若将B口和C口的功能对调(连线对调),如何编写程序。

(程序段加粗为修改部分)mode equ 89H ; 10001001B, 方式0,PA,PB输出,PC输入 PortA equ 8000h ; Port APortB equ 8001h ; Port BPortC equ 8002h ; Port CCAddr equ 8003h ; 控制字地址code segmentassume cs:codestart proc nearStart:mov al, modemov dx, CAddrout dx, al ; 输出控制字mov dx, PortCin al, dx ; 读入PortCmov dx, PortBout dx, al ; 输出到PortBmov dx, PortAout dx, al ; 输出到PortAmov ah, 200call delayjmp Startendpdelay proc nearpush axmov al,0push cxmov cx,axloop $pop cxpop axretdelay endpcode endsend start__计算机__学院__2010级计算机科学与技术_专业__四___班___组、学号3110006015姓名张法光协作者_________ 教师评定_________________实验题目数字式时钟(电子钟)一、实验目的与要求进一步掌握定时器的使用和编程方法。

进一步掌握中断处理程序的编程方法。

进一步掌握数码显示电路的驱动方法。

二、实验内容利用CPU的定时器和试验仪上提供的数码显示电路,设计一个电子时钟。

格式如下:XX XX XX 由左向右分别为:时、分、秒。

1、实验电路连接孔1 连接孔2 连接孔1 连接孔2CS4 → 8253_CSVCC → 8253_GATE1 1MHz → 8253_CLK1 CS0 → KEY/LED_CS CS5 → 8259CS8253_OUT1 → 8259_INT03、实验原理对于8088的实验,8255做定时器,用定时器输出的脉冲控制8259产生中断,在8259中断处理程序中,对时、分、秒进行计数,在等待中断的循环中用LED显示时间。

8253用定时/计数器1,8253片选接CS4,地址为0C000H,8253时钟源CLK1接时钟信号1MHz。

8253的GATE1接VCC。

8259中断INTO接8253的OUT1,片选接CS5,地址为0D000H。

显示电路的KEY/LED CS 接CS0,地址为08000H。

定时器没100us中断一次,在中断服务程序中,对中断次数进行技术,100us计数10000次就是1秒。

然后再对秒计数得到分和小时值,并送入显示缓存区。

4、实验程序框图三、实验程序与注释; 本实验利用8253做定时器,用定时器输出的脉冲控制8259产生中断; 在8259中断处理程序中,对时、分、秒进行计数,在等待中断的循; 环中用LED显示时间。

; 8253用定时器/计数器1,8253片选接CS4,地址为0C000H。

8253时钟; 源CLK1接分频电路的F/16输出。

分频器的Fin接1MHz时钟。

8253的; GATE1接VCC。

; 8259中断INT0接8253的OUT1,片选接CS5,地址为0D000H。

; 显示电路的KEY/LED CS 接CS0,地址为08000H。

;CONTROL equ 0c003hCOUNT0 equ 0c000hCOUNT1 equ 0c001hCOUNT2 equ 0c002hmd8255 equ 82h ; 8255 工作方式PA8255 equ 8000h ; 8255 PA口输出地址CTL8255 equ 8003h ; 8255 控制口地址OUTBIT equ 08002h ; 位控制口OUTSEG equ 08004h ; 段控制口ICW1 equ 13H ;(00010011B) ,单片8259, 上升沿中断, 要写ICW4 ICW2 equ 20H ;(00100000B) ,中断号为20HICW4 equ 01H ;(00000001B) ,工作在8086/88 方式OCW1 equ FEH ;(11111110B) ,只响应INT0 中断CS8259A equ 0d000h ; 8259的基地址和偶地址CS8259B equ 0d001hdata segmentCNT db 0LEDBuf db 6 dup(?) ; 显示缓冲Num db 1 dup(?) ; 显示的数据DelayT db 1 dup(?)Hour db 0Minute db 0Second db 0LEDMAP: ; 八段管显示码db 3fh, 06h, 5bh, 4fh, 66h, 6dh, 7dh, 07h db 7fh, 6fh, 77h, 7ch, 39h, 5eh, 79h, 71h data endscode segmentassume cs:code, ds: dataDelay proc nearpush ax ; 延时子程序push cxmov al, 0mov cx,axloop $pop cxpop axretDelay endpDisplayLED proc nearmov bx, offset LEDBufmov cl, 6 ; 共6个八段管mov ah, 20h ; 00100000b , 从左边开始显示DLoop:mov dx, OUTBITmov al, 0out dx,al ; 关所有八段管mov al, [bx]mov dx, OUTSEGout dx,almov dx, OUTBITmov al, ahout dx, al ; 显示一位八段管push axmov ah, 1call Delaypop axshr ah, 1inc bxdec cljnz DLoopmov dx, OUTBITmov al, 0out dx,al ; 关所有八段管retDisplayLED endpIEnter proc nearpush axpush dxinc Secondmov al, Secondcmp al, 60jne Exitmov Second, 0inc Minutemov al, Minutecmp al, 60jne Exitmov Minute, 0inc Hourmov al, Hourcmp al, 24jne Exitmov Hour, 0Exit:mov dx, CS8259Amov al, 20h ; 中断服务程序结束指令 out dx, alpop dxpop axiretIEnter endpIInit procmov dx, CS8259Amov al, ICW1out dx, almov dx, CS8259Bmov al, ICW2out dx, almov al, ICW4out dx, almov al, OCW1out dx, alretIInit endpstart proc nearmov ax, datamov ds, axmov Hour, 0mov Minute, 0mov Second, 0climov ax, 0mov ds, axmov al, 76H ; 01110110B, 计数器1,16位,方式3,二进制mov dx, CONTROLout dx, almov ax, 62500 ; 设定计数值,16us计数62500次就是一秒mov dx, COUNT1out dx, al ; 计数器低字节mov al, ahout dx, al ; 计数器高字节mov al, MD8255 ;设定8255工作方式mov dx, CTL8255out dx, almov bx, 4*ICW2 ; 中断号mov ax, codeshl ax, 4 ; x 16add ax, offset IEnter ; 中断入口地址(段地址为0)mov [bx], ax ; 以段地址加上中断处理程序偏移地址注册中断向量表mov ax, 0inc bxinc bxmov [bx], ax ; 代码段地址为0call IInitmov ax, datamov ds, axmov CNT, 0 ; 计数值初始为0mov al, CNTmov dx, PA8255out dx, alstiLP: ; 等待中断,并计数。

相关主题