广工计算机接口与通信实验报告.docx
《广工计算机接口与通信实验报告.docx》由会员分享,可在线阅读,更多相关《广工计算机接口与通信实验报告.docx(32页珍藏版)》请在冰豆网上搜索。
![广工计算机接口与通信实验报告.docx](https://file1.bdocx.com/fileroot1/2023-1/24/ae752e6f-8d06-43bb-96a5-9eba9a4d204e/ae752e6f-8d06-43bb-96a5-9eba9a4d204e1.gif)
广工计算机接口与通信实验报告
广工计算机接口与通信实验报告
接口与通讯实验报告
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每个计数器只有十六位,要用两个计数器才能实现一百万次技术,实现每一秒输出状态发生一次反转。
实验电路
实验连线
8253CS,接地址译码CS4,8253_GATEO,接VCC(是+5V),8253_GATE1,也接VCC(是+5V)。
8253_CLK1,接1MHz。
具体连线见下表:
3、实验原理
8253即可做定时器又可作计数器:
计数:
计数器装入初值后,当GATE为高电平时,可用外部事件为CLK,脉冲对计数值进行减1计数,每来一个脉冲减1,当计数值减至0时,在OUT端输出一个标志信号。
定时:
计数器装入初值后,当GATE为高电平时,由CLK脉冲触发开始自动计数,当计数到零时,发计数结束定时信号。
8253控制字
4、实验程序框图
三、实验程序与注释
CONTROLequ0c003h;控制口地址
COUNT0equ0c000h;计数器0地址
COUNT1equ0c001h;计数器1地址
COUNT2equ0c002h;计数器2地址
codesegment
assumecs:
code
startprocnear
moval,36H(00110110B);计数器0,16位,方式3,二进制
movdx,CONTROL
outdx,al;将控制字写入控制寄存器
movax,1000;在计数器0中写入初值
movdx,COUNT0
outdx,al;计数器低字节
moval,ah
outdx,al;计数器高字节
moval,76H(01110110B);计数器1,16位,方式3,二进制
movdx,CONTROL
outdx,al;将控制字写入控制寄存器
movax,1000;在计数器1中写入初值
movdx,COUNT1
outdx,al;计数器低字节
moval,ah
outdx,al;计数器高字节
jmp$
startendp
codeends
endstart
若改用方式2,并改变时间常数。
如何修改程序。
(程序段加粗为修改部分)
CONTROLequ0c003h;控制口地址
COUNT0equ0c000h;计数器0地址
COUNT1equ0c001h;计数器1地址
COUNT2equ0c002h;计数器2地址
codesegment
assumecs:
code
startprocnear
moval,34H(00110100B);计数器0,16位,方式2,二进制
movdx,CONTROL
outdx,al;将控制字写入控制寄存器
movax,5000;在计数器0中写入初值
movdx,COUNT0
outdx,al;计数器低字节
moval,ah
outdx,al;计数器高字节
moval,74H(01110110B);计数器1,16位,方式2,二进制
movdx,CONTROL
outdx,al;将控制字写入控制寄存器
movax,200;在计数器1中写入初值
movdx,COUNT1
outdx,al;计数器低字节
moval,ah
outdx,al;计数器高字节
jmp$
startendp
codeends
endstart
__计算机__学院__2010级计算机科学与技术_专业__四___班___组、学号3110006015
姓名张法光协作者_________教师评定_________________
实验题目8255并行接口实验
实验目与要求
了解8255芯片结构及编程方法。
2.了解8255输入/输出实验方法。
实验内容
利用8255可编程并行口芯片,实现输入/输出实验,实验中用8255PA口作输出,PB口作输入。
1、实验电路
2、实验连线
8255CS,接地址译码/CS0。
PA0-PA7(PA口)接LED0-LED7(LED),PB0-PB7(PB口)接K0-K7(开关量)。
数据线、读/写控制、地址线、复位信号板上已接好。
连接孔1连接孔2
连接孔1连接孔2
连接孔1连接孔2
CS0→8255_CS
注:
若8255CS接地址孔8000H。
则PA口地址为8000H
PB口地址为8001H
PC口地址为8002H
控制口地址为8003H
L0→8255-PA0
L1→8255-PA1
L2→8255-PA2
L3→8255-PA3
L4→8255-PA4
L5→8255-PA5
L6→8255-PA6
L7→8255-PA7
K0→8255-PB0
K1→8255-PB1
K2→8255-PB2
K3→8255-PB3
K4→8255-PB4
K5→8255-PB5
K6→8255-PB6
K7→8255-PB7
实验原理
可编程通用接口芯片8255A有三个八位并行I/O口,它有三种工作方式。
本实验采用是方式0:
PA,PC口输出,PB口输入。
*8255控制字
4.实验程序框图
三、实验程序与注释
modeequ82H;10000010B;方式0,PA,PC输出,PB输入
PortAequ8000h;PortA
PortBequ8001h;PortB
PortCequ8002h;PortC
CAddrequ8003h;控制字地址
codesegment
assumecs:
code
startprocnear
Start:
moval,mode
movdx,CAddr
outdx,al;输出控制字
movdx,PortC
outal,dx;输出到PortC
movdx,PortB
indx,al;输入PortB
movdx,PortA
outdx,al;输出到PortA
movah,200
calldelay
jmpStart
endp
delayprocnear;入栈保护现场
pushax
moval,0
pushcx
movcx,ax
loop$;出栈恢复现场
popcx
popax
ret
delayendp
codeends
endstart
若将B口和C口功能对调(连线对调),如何编写程序。
(程序段加粗为修改部分)
modeequ89H;10001001B,方式0,PA,PB输出,PC输入
PortAequ8000h;PortA
PortBequ8001h;PortB
PortCequ8002h;PortC
CAddrequ8003h;控制字地址
codesegment
assumecs:
code
startprocnear
Start:
moval,mode
movdx,CAddr
outdx,al;输出控制字
movdx,PortC
inal,dx;读入PortC
movdx,PortB
outdx,al;输出到PortB
movdx,PortA
outdx,al;输出到PortA
movah,200
calldelay
jmpStart
endp
delayprocnear
pushax
moval,0
pushcx
movcx,ax
loop$
popcx
popax
ret
delayendp
codeends
endstart
__计算机__学院__2010级计算机科学与技术_专业__四___班___组、学号3110006015
姓名张法光协作者_________教师评定_________________
实验题目数字式时钟(电子钟)
实验目与要求
进一步掌握定时器使用和编程方法。
进一步掌握中断处理程序编程方法。
进一步掌握数码显示电路驱动方法。
实验内容
利用CPU定时器和试验仪上提供数码显示电路,设计一个电子时钟。
格式如下:
XXXXXX由左向右分别为:
时、分、秒。
1、实验电路
2、实验连线
连接孔1连接孔2
连接孔1连接孔2
CS4→8253_CS
VCC→8253_GATE1
1MHz→8253_CLK1
CS0→KEY/LED_CS
CS5→8259CS
8253_OUT1→8259_INT0
3、实验原理
对于8088实验,8255做定时器,用定时器输出脉冲控制8259产生中断,在8259中断处理程序中,对时、分、秒进行计数,在等待中断循环中用LED显示时间。
8253用定时/计数器1,8253片选接CS4,地址为0C000H,8253时钟源CLK1接时钟信号1MHz。
8253GATE1接VCC。
8259中断INTO接8253OUT1,片选接CS5,地址为0D000H。
显示电路KEY/LEDCS接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接8253OUT1,片选接CS5,地址为0D000H。
;显示电路KEY/LEDCS接CS0,地址为08000H。
;
CONTROLequ0c003h
COUNT0equ0c000h
COUNT1equ0c001h
COUNT2equ0c002h
md8255equ82h;8255工作方式
PA8255equ8000h;8255PA口输出地址
CTL8255equ8003h;8255控制口地址
OUTBITequ08002h;位控制口
OUTSEGequ08004h;段控制口
ICW1equ13H;(00010011B),单片8259,上升沿中断,要写ICW4
ICW2equ20H;(00100000B),中断号为20H
ICW4equ01H;(00000001B),工作在8086/88方式
OCW1equFEH;(11111110B),只响应INT0中断
CS8259Aequ0d000h;8259基地址和偶地址
CS8259Bequ0d001h
datasegment
CNTdb0
LEDBufdb6dup(?
);显示缓冲
Numdb1dup(?
);显示数据
DelayTdb1dup(?
)
Hourdb0
Minutedb0
Seconddb0
LEDMAP:
;八段管显示码
db3fh,06h,5bh,4fh,66h,6dh,7dh,07h
db7fh,6fh,77h,7ch,39h,5eh,79h,71h
dataends
codesegment
assumecs:
code,ds:
data
Delayprocnear
pushax;延时子程序
pushcx
moval,0
movcx,ax
loop$
popcx
popax
ret
Delayendp
DisplayLEDprocnear
movbx,offsetLEDBuf
movcl,6;共6个八段管
movah,20h;00100000b,从左边开始显示
DLoop:
movdx,OUTBIT
moval,0
outdx,al;关所有八段管
moval,[bx]
movdx,OUTSEG
outdx,al
movdx,OUTBIT
moval,ah
outdx,al;显示一位八段管
pushax
movah,1
callDelay
popax
shrah,1
incbx
deccl
jnzDLoop
movdx,OUTBIT
moval,0
outdx,al;关所有八段管
ret
DisplayLEDendp
IEnterprocnear
pushax
pushdx
incSecond
moval,Second
cmpal,60
jneExit
movSecond,0
incMinute
moval,Minute
cmpal,60
jneExit
movMinute,0
incHour
moval,Hour
cmpal,24
jneExit
movHour,0
Exit:
movdx,CS8259A
moval,20h;中断服务程序结束指令
outdx,al
popdx
popax
iret
IEnterendp
IInitproc
movdx,CS8259A
moval,ICW1
outdx,al
movdx,CS8259B
moval,ICW2
outdx,al
moval,ICW4
outdx,al
moval,OCW1
outdx,al
ret
IInitendp
startprocnear
movax,data
movds,ax
movHour,0
movMinute,0
movSecond,0
cli
movax,0
movds,ax
moval,76H;01110110B,计数器1,16位,方式3,二进制
movdx,CONTROL
outdx,al
movax,62500;设定计数值,16us计数62500次就是一秒
movdx,COUNT1
outdx,al;计数器低字节
moval,ah
outdx,al;计数器高字节
moval,MD8255;设定8255工作方式
movdx,CTL8255
outdx,al
movbx,4*ICW2;中断号
movax,code
shlax,4;x16
addax,offsetIEnter;中断入口地址(段地址为0)
mov[bx],ax;以段地址加上中断处理程序偏移地址注册中断向量表
movax,0
incbx
incbx
mov[bx],ax;代码段地址为0
callIInit
movax,data
movds,ax
movCNT,0;计数值初始为0
moval,CNT
movdx,PA8255
outdx,al
sti
LP:
;等待中断,并计数。
moval,Hour
movah,0
movcl,10
divcl
movch,ah
movah,0
movbx,offsetLEDMAP
addbx,ax
moval,[bx]
movLEDBuf,al
movbx,offsetLEDMAP
moval,ch
movah,0
addbx,ax
moval,[bx]
oral,80h
movLEDBuf+1,al
moval,Minute
movah,0
movcl,10
divcl
movch,ah
movah,0
movbx,offsetLEDMAP
addbx,ax
moval,[bx]
movLEDBuf+2,al
movbx,offsetLEDMAP
moval,ch
movah,0
addbx,ax
moval,[bx]
oral,80h
movLEDBuf+3,al
moval,Second
movah,0
movcl,10
divcl
movch,ah
movah,0
movbx,offsetLEDMAP
addbx,ax
moval,[bx]
movLEDBuf+4,al
movbx,offsetLEDMAP
moval,ch
movah,0
addbx,ax
moval,[bx]
oral,80h
movLEDBuf+5,al
callDisplayLED
jmpLP
startendp
codeends
endstart
若使用IR1做中断源,如何编写程序?
答:
将OCW1控制字改为FDH(11111101B)
将电子钟秒速变慢,如何编写程序?
答:
8253时钟源CLK1接分频电路F/16输出。
分频器Fin接4MHz时钟。
同时把电子时钟实验程序段中8253计数值修改为250000。
四、心得体会
第一次上机是做8253定时计数器实验,所以印象十分深刻。
加上实验老师在上次实验结束后提醒了电子时钟是个综合性实验,难度相对较大,建议我们提前预习。
为了更好地理解实验原理和具体操作,提前复习了定时器使用和编程方法,同时上网查询了8259中断控制处理程序实验原理。
实验关键在于计数实现和中断控制调用,对8253和8259初始化和写入各端口控制字等。
最终在实验课中完成了这看似复杂电子时钟实验,本次实验比想象中做得顺利,得益于实验前预习和实验课程上老师讲解。
其实综合性实验并不是很难,关键在于对实验原理理解和动手操作,逐步付诸实践。
__计算机__学院__2010级计算机科学与技术_专业__四___班___组、学号3110006015
姓名张法光协作者_________教师评定_________________
实验题目D/A(数/模)转换实验
实验目与要求
1、了解D/A转换基本原理。
2、了解D/A转换芯片0832性能及编程方法。
3、了解单片机系统中扩展D/A转换基本方法。
实验内容
利用DAC0832,编制程序产生锯齿波、三角波、正弦波。
三种波轮流显示,用示波器观看。
实验电路
实验连线
实验原理
这是用总线器件做ADC实验,对于MCS196,LPC2103,芯片已经带有ADC转换电路,也可以用片上ADC进行模数转换。
(1)D/A转换是把数字量转换成模拟量变换,试验台上D/A电路输出是模拟电压信号。
要实现实验要求,比较简单方法是产生三个波形表格,然后通过差白哦来实现波形显示。
(2)产生锯齿波和三角波表格只需由数字量增减来控制,同时要注意三角波要封端来产生。
要产生正弦波,较简单方法是造一张正弦数字量表。
即查函数表得到值转换成十六进制数填表。
D/A转换取值范围为一个周期,采样点越多,精度越高些。
本例采用采样点为256点/周期。
(3)3为D/A转换输入数据与输出电压关系为U(0~-5V)=Uref/256*N与U(-5V~+5V)=2*Uref/256*N-5(这里Uref为+5)
实验程序框图
三、实验程序与注释
CS0832equ8000h
datasegment
assumeds:
data
SinData:
;正弦数字量表
DB0C0H,0C3H,0C6H,0C9H,0CCH,0CFH,0D2H,0D5H
DB0D8H,0DBH,0DEH,0E0H,0E3H,0E6H,0E8H,0EAH
DB0EDH,0EFH,0F1H,0F3H,0F5H,0F6H,0F8H,0F9H
DB0FBH,0FCH,0FDH,0FEH,0FEH,0FFH,0FFH,0FFH
DB0FFH,0FFH,0FFH,0FFH,0FEH,0FEH,0FDH,0FCH
DB0FBH,0F9H,0F8H,0F6H,0F5H,0F3H,0F1H,0EFH
DB0EDH,0EAH,0E8H,0E6H,0E3H,0E0H,0DEH,0DBH
DB0D8H,0D5H,0D2H,0CFH,0CCH,0C9H,0C6H,0C3H
DB0C0H,0BCH,0B9H,0B6H,0B3H,0B0H,0ADH,0AAH
DB0A7H,0A4H,0A1H,9FH,9CH,99H,97H,95H
DB92H,90