广工接口与通讯实验报告.docx
《广工接口与通讯实验报告.docx》由会员分享,可在线阅读,更多相关《广工接口与通讯实验报告.docx(18页珍藏版)》请在冰豆网上搜索。
广工接口与通讯实验报告
接口与通讯实验报告
1、8253定时/计数器实验
2、8255并行接口实验
3、8259中断控制器实验
4、D/A(数/模)转换实验
5、A/D(模/数)转换实验
学生学院
专业班级
学号
学生姓名
指导教师
2013年12月9日
实验题目8253定时器实验
1、实验目的与要求
(1)学习8253可编程定时器/计数器定时方法
(2)学习8253多级串联实现大时间常数的定时方法
(3)学习8088/86控制定时器的方法
2、实验内容
(1)实验原理
8253A既可以作定时器又可作计数器:
(1)计数:
计数器装入初值后,当GATE为高电平时,可用外部事件作为CLK,脉冲对计数值进行减一计数,对每来一个脉冲减一,当计数值减少到0时,OUT端输出一个标志信号。
(2)定时:
计数器装入初值后,当GATE为高电平时,由CLK脉冲触发开始自动计数,计数到零时,发计数结束定时信号。
(2)实验方法
用8253对标准脉冲信号进行计数,就可以实现定时功能。
用板上的1MHz作为标准信号,将8253可编程计数器/定时器的时间常数设在1000000次,就可以在定时器的管脚上输出1秒针高/1秒钟低的脉冲信号。
因为8253每个计数器只有十六位,要用两个计数器才能实现一百万次的计数,实现每一秒输出状态发生一次反转。
(3)实验接线
连接孔1连接孔2
连接孔1连接孔2
连接孔1连接孔2
CS48253_CS
VCC8253_GATE0
L08253_OUT0
8253_OUT18253_CLK0
VCC8253_GATE1
1MHz8253_CLK1
3、实验程序
CONTROLequ0c003h;控制端口地址
COUNT0equ0c000h;计数器0的地址
COUNT1equ0c001h;计数器1的地址
COUNT2equ0c002h;计数器2的地址
codesegment
assumecs:
code
startprocnear
moval,36h;00110100B;计数器0,16位,方式2,二进制
movdx,CONTROL
outdx,al
movax,1000;计数器0的时间常数
movdx,COUNT0
outdx,al;计数器低字节
moval,ah
outdx,al;计数器高字节
moval,76h;01110100B;计数器1,16位,方式2,二进制
movdx,CONTROL
outdx,al
movax,1001;计数器1的时间常数
movdx,COUNT1
outdx,al;计数器低字节
moval,ah
outdx,al;计数器高字节
jmp$
startendp
codeends
endstart
实验题目8255并行接口实验
1、实验目的与要求
(1)了解8255芯片结构以及编程方法
(2)了解8255输入、输出实验方法
2、实验内容
(1)实验原理
可编程输入输出的并行接口芯片8255A,具有三个八位的I/O口,它有三种工作方式。
本实验采用施方式0:
PA,PC口输出,PB口输入。
(2)实验方法
按照实验要求,本实验采用方式0,这种方式不需要任何选通信号,并且采用从C端口读入数据,从A、B端口并行地输出数据,为了效果明显,实验带有一定的延时。
(3)实验接线
连接孔1连接孔2
连接孔1连接孔2
连接孔1连接孔2
CS08255_CS
L08255-PA0
L18255-PA1
L28255-PA2
L38255-PA3
L48255-PA4
L58255-PA5
L68255-PA6
L78255-PA7
K08255-PB0
K18255-PB1
K28255-PB2
K38255-PB3
K48255-PB4
K58255-PB5
K68255-PB6
K78255-PB7
3、实验程序
modeequ082h;方式0,PA,PC输出,PB输入
PortAequ8000h;PortA
PortBequ8001h;PortB
PortCequ8002h;PortC
CAddrequ8003h;控制字地址
codesegment
assumecs:
code
startprocnear
Start:
moval,mode
movdx,CAddr
outdx,al;输出控制字
;实验2:
PortB输入PortA输出
movdx,PortB
inal,dx;读入PortB
movdx,PortC
outdx,al
movdx,PortA
outdx,al;输出到PortA
movah,200
calldelay;调用延时子程序
jmpStart
endp
delayprocnear
pushax
moval,0;设置延时低位为0
pushcx
movcx,ax;设置延时CX的为0C800H
loop$
popcx
popax
ret
delayendp
codeends
endstart
思考题:
movdx,PortC
inal,dx;读入PortC
movdx,PortB
outdx,al
movdx,PortA
outdx,al;输出到PortA
movah,200
calldelay;调用延时子程序
jmpStart
endp
delayprocnear
pushax
moval,0;设置延时低位为0
pushcx
movcx,ax;设置延时CX的为0C800H
loop$
popcx
popax
ret
delayendp
codeends
endstart
实验题目8259中断控制器实验
1、实验目的与要求
(1)学习8088/86与8259的连接方法。
(2)学习8088/86对8259的控制方法.。
2、实验内容
(1)实验原理
8088/8086需要外接中断控制器才能对外部中断进行处理。
8259可外接8个中断源,本实验只响应INTO中断,8259也可以多级连接以影响多个中断源。
将单脉冲信号接到8259的INTO脚。
每次中断时,可看到LED显示会加一。
(2)实验方法
用8088/86控制8259可编程中断控制器,实现对外部中断的响应和处理。
要求程序中对每次中断进行计数,并将计数结果用8255的PA口输出到LED。
(3)实验接线
CS0→8255CSCS1→8259CS单脉冲→8259——INTO
(L0—L7)→(8255PA0—PA7)
3、实验程序
modeequ82h;8255工作方式
PA8255equ8000h;8255PA口输出地址
CTL8255equ8003h
ICW1equ00010011b;单片8259,上升沿中断,要写ICW4
ICW2equ00100000b;中断号为20H
ICW4equ00000001b;工作在8086/88方式
OCW1equ11111110b;只响应INT0中断
CS8259Aequ09000h;8259地址
CS8259Bequ09001h
datasegment
CNTdb0
dataends
codesegment
assumecs:
code,ds:
data
IEnterprocnear
pushax
pushdx
movdx,PA8255
incCNT
moval,CNT
outdx,al;输出计数值
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
movdx,CTL8255
moval,mode
outdx,al
cli
movax,0
movds,ax
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:
;等待中断,并计数。
nop
jmpLP
startendp
codeends
endstart
实验题目D/A(数/模)转换实验
1、实验目的与要求
(1)了解D/A转换的基本原理。
(2)了解D/A转换芯片0832的性能以及编程方法。
(3)了解单片机系统中拓展D/A转换的基本方法
2、实验内容
(1)实验原理
D/A转换:
这是把数字量转换为模拟量的变换,可以将计算机产生的控制量转换为模拟信号,其基本转换原理是把数字量的每一位代码按权的大小转换为相应的模拟分量,然后把各分量相加得到总的模拟量;8位、电流输出型D/A转换芯片,有直通、单缓存以及双缓存三种工作方式。
在外部使用运算放大器后可以转换为电压输出,并且分为单极性输出和双极性输出。
(2)实验方法
利用DAC0832,可以自行编制程序产生锯齿波、三角波、正弦波。
三种波轮流显示,用示波器观看。
(3)实验接线
连接孔1连接孔2
CS2DA_CS
-5V-+5V逻辑波形L3
3、实验程序
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,90H,8EH,8CH,8AH,89H,87H,86H
DB84H,83H,82H,81H,81H,80H,80H,80H
DB80H,80H,80H,80H,81H,81H,82H,83H
DB84H,86H,87H,89H,8AH,8CH,8EH,90H
DB92H,95H,97H,99H,9CH,9FH,0A1H,0A4H
DB0A7H,0AAH,0ADH,0B0H,0B3H,0B6H,0B9H,0BCH
ends
codesegment
assumecs:
code
;延时子程序
procDelaynear
pushcx
movcx,ax
DelayLoop:
nop
nop
nop
nop
nop
nop
loopDelayLoop
popcx
ret
endp
procOutputDAnear
movdx,CS0832
outdx,al
ret
endp
procShowSinnear;0832输出以转换
pushcx
movbx,400H+offsetSinData
movcx,80h
ShowSinLoop:
;正弦波
moval,[bx]
callOutputDA
incbx
movax,40
callDelay
loopShowSinLoop
popcx
ret
endp
procShowTrinear
pushcx
movbx,80h
movcx,80h
ShowTriLoop:
;锯齿波
moval,bl
callOutputDA
incbx
movax,40
callDelay
loopShowTriLoop
popcx
ret
endp
procShowSqnear;方波
pushcx
moval,80h
callOutputDA
movcx,10
D1:
;显示一段0V波形
movax,200
callDelay
loopD1
moval,0ffh
callOutputDA
movcx,10
D2:
;显示一段5V波形
movax,200
callDelay
loopD2
popcx
ret
endp
;主程序
startprocnear
movax,0
movds,ax
moves,ax
MLoop:
movcx,100
MD1:
callShowSin
loopMD1
movcx,100
MD2:
callShowTri
loopMD2
movcx,100
MD3:
callShowSq
loopMD3
jmpMLoop
startendp
codeends
endstart
实验题目A/D(模/数)转换实验
1、实验内容
(1)实验原理
利用实验板上的ADC0809做A/D转换器,实验板上的电位器提供模拟量输入,编制程序,将模拟量转换成二进制数字量,用8255的PA口输出到发光二极管显示。
(2)实验方法
通过电位器提供模拟量输入,利用0809芯片转换为二进制数字量,并通过LED灯管显示出来;0809转换结束后,输出高电平的EOC信号给8259的IN0中断源,并通过中断服务程序利用8255并行地把转换结果输出到LED灯。
(3)实验接线
连接孔1连接孔2
连接孔1连接孔2
CS18255CS
CS0AD_CS
电位器输出IN0
L08255-PA0
L18255-PA1
L28255-PA2
L38255-PA3
L48255-PA4
L58255-PA5
L68255-PA6
L78255-PA7
2、实验程序
modeequ082h;8255工作字10000010B,方式0,A、C口输入,B输入
PAequ09000h;8255A口地址
CTLequ09003h;8255A控制地址
CS0809equ08000h;AD转换器端口
codesegment
assumecs:
code
startprocnear
movbx,0f123h
movax,5678h
mov[bx],ax
movax,[bx]
movax,1234h
movbx,5678h
addax,bx
movbx,400h
mov[bx],ax
moval,mode;送8255方式字
movdx,CTL
outdx,al
again:
moval,0;虚写启动
movdx,CS0809
outdx,al;起动A/D
movcx,40h
loop$;延时>100us
inal,dx;读入结果
movdx,PA;送到A口去
outdx,al
jmpagain
codeends
endstart
思考题:
以中断方式实现数据采集,实现代码如下:
md8255equ82h;8255工作方式,可用PA口方式0输出
pa8255equ9000h;8255PA口输出地址
ctl8255equ9003h;8255控制口地址
cs0809equ08000h;0809芯片地址
icw1equ00010011b;单片8259,上升沿中断,要写ICW4
icw2equ00100000b;中断号为20H
icw4equ00000001b;工作在8086/88方式
ocw1equ11111110b;只响应INT0中断
cs8259aequ0a000h;8259偶地址
cs8259bequ0a001h;8259奇地址
codesegment
assumecs:
code
;中断服务程序
ienterprocnear
pushax
pushdx
;cli
movdx,cs0809
inal,dx;读入转换结果
movdx,pa8255
outdx,al
moval,0
movdx,cs0809
outdx,al;启动A/D转换
;sti
movdx,cs8259a
moval,20h;中断服务程序结束指令
outdx,al
popdx
popax
iret
ienterendp
;8259初始化程序
iinitprocnear
movdx,cs8259a
moval,icw1
outdx,al;向偶地址写入命令
movdx,cs8259b
moval,icw2
outdx,al;向奇地址写入中断类型
moval,icw4
outdx,al;写入工作方式
moval,ocw1
outdx,al;设置中断屏蔽
ret
iinitendp
;主程序段
startprocnear
cli;关中断
movax,0
movds,ax
moval,md8255
movdx,ctl8255
outdx,al;设置8255工作方式
movbx,4*icw2;中断向量
movax,code
shlax,4;x16
addax,offsetienter;
mov[bx],ax;中断服务程序IP
movax,0
incbx
incbx
mov[bx],ax;中断服务程序CS
calliinit
moval,0
movdx,cs0809
outdx,al;启动A/D转换
sti;开中断
lp:
;等待中断
nop
jmplp
startendp
codeends
endstart