计算机硬件.docx
- 文档编号:5225331
- 上传时间:2022-12-14
- 格式:DOCX
- 页数:18
- 大小:80.73KB
计算机硬件.docx
《计算机硬件.docx》由会员分享,可在线阅读,更多相关《计算机硬件.docx(18页珍藏版)》请在冰豆网上搜索。
计算机硬件
实验十一P1口及外部中断
一、实验目的
1.掌握利用MCS-51单片机P1口实现I/O的三种传送方式。
2.掌握MCS-51单片机外部中断源的原理和编程方法。
3.了解MCS-51单片机处理外部中断的全过程。
4.弄懂外部中断触发方式的选择。
二、实验要求
熟练掌握结合DP-51PROC单片机综合仿真实验仪和KielC51集成开发环境进行仿真调试。
三、实验内容及实验电路
1、P1口无条件输出实验,电路图图4-1所示。
图4-1P1口无条件输出
实验参考程序1:
8个LED灯同时闪亮。
ORG8000H
LJMPMain
ORG80F0H
Main:
MOVR7,#0
Loop:
MOVR6,#0
DJNZR6,$
DJNZR6,$
DJNZR6,$
DJNZR6,$
DJNZR7,Loop
CPLP1.0;P1.0取反
CPLP1.1;P1.1取反
CPLP1.2;P1.2取反
CPLP1.3;P1.3取反
CPLP1.4;P1.4取反
CPLP1.5;P1.5取反
CPLP1.6;P1.6取反
CPLP1.7;P1.7取反
SJMPMain
END
2、P1口条件输出实验,电路如图4-2所示。
图4-2P1口条件输出
实验参考程序2:
ORG8000H
LJMPMain
ORG8100H
Main:
JBP1.7,SETLED
CLRLED:
CLRP1.0
CLRP1.1
CLRP1.2
CLRP1.3
CLRP1.4
CLRP1.5
CLRP1.6
SJMPMain
SETLED:
SETBP1.0
SETBP1.1
SETBP1.2
SETBP1.3
SETBP1.4
SETBP1.5
SETBP1.6
SJMPMain
END
3、P1口中断输入/输出实验,电路如图4-3所示。
图4-2P1口中断输入/输出
实验参考程序3:
ORG8000H
LJMPMain
ORG8003H
LJMPINT0SV
Main:
MOVSP,#5FH
SETBEA
SETBIT0
SETBEX0
SJMP$
INT0SV:
MOVP1,#0FFH
MOVA,P1
SWAPA
MOVP1,A
RETI
END
四、实验步骤
实验内容1:
P1口无条件输出实验
1.断开DP-51PROC实验仪的电源,按图3-1接线,使用排线将A2区的J61接口与D1区的J52接口相连。
2.接通DP-51PROC实验仪的电源,将TKSMonitor51仿真器上的工作模式选择开关拨到RUN处。
1、建立名为P1_wtjio工程,按实验参考程序1编辑新文件,文件名为:
p1_wtj.asm。
然后编译,无误转换为调试方式,运行程序,观察并记录运行结果。
实验内容2:
P1口条件输出实验
1、断开DP-51PROC实验仪的电源,按图3-2接线,使用排线将A2区的J61接口与D1区的J52接口相连,使用导线把A2区的P1.7与D1区J54的SW1相连。
2、接通DP-51PROC实验仪的电源,将TKSMonitor51仿真器上的工作模式选择开关拨到RUN处。
3、建立名为P1_tjio工程,按实验参考程序2编辑新文件,文件名为:
p1_tj.asm。
然后编译,无误转换为调试方式,预先将SW1置1或置0,运行程序,观察并记录运行结果。
实验内容3:
P1口中断方式输入/输出实验
1、断开DP-51PROC实验仪的电源,按图3-3接线,使用导线将A2区的P10、P11、P12分别与D1区的SW1、SW2、SW3相连,使用导线将A2区的P14、P15、P15分别与D1区的LED1、LED2、LED3相连,使用导线把A2区INT0与D1区J53的KEY1(图3-3中的K1即为D1区的K1)相连。
2、接通DP-51PROC实验仪的电源,将TKSMonitor51仿真器上的工作模式选择开关拨到RUN处。
3、建立名为P1_zdio工程,按实验参考程序3编辑新文件,文件名为:
p1_zd.asm。
然后编译,无误转换为调试方式,预先置好开关的状态,运行程序,观察中断的执行过程,并记录运行结果。
五、思考题
1、如何将P1口无条件输出的实验,修改为将8个LED发光二极管向左或向右循环点亮?
ORG8000H
MovA,#0FEH
LJMPMain
ORG80F0H
Main:
MOVR7,#0
Loop:
MOVR6,#0
DJNZR6,$
DJNZR6,$
DJNZR6,$
DJNZR6,$
DJNZR7,Loop
RRA
MOVA,P1
SJMPMain
END
2、如何利用INT0中断使P1口控制8个LED发光二极管向左或向右循环点亮?
电路如何修改?
程序如何修改?
ORG8000H
LJMPMain
ORG8003H
MovA,#0FEH
LJMPINT0SV
Main:
MOVSP,#5FH
SETBEA
SETBIT0
SETBEX0
SJMP$
INT0SV:
RRA
MOVP1,A
RETI
END
实验十二定时器及中断(1秒基时)
一、实验目的
1.通过实验了解定时器的工作原理、编程方法。
2.通过实验了解定时器工作方式、定时与计数、单启动与双重启动的选择。
3.掌握通过一个定时器加入软件计数产生1S基时的方法。
4.通过实验了解多个中断源申请中断的处理方法。
二、实验内容及实验电路及步骤
1.产生1S延时的设计:
(11.0592MHZ)
方案1:
定时器0定时加软件计数。
1)采用定时器0,方式1,定时50MS中断。
当1S时间到后,使P1.0闪亮。
一个机器周期为=(1/11.0592Mhz)*12us。
定时器0的定时初值=(65536-50000/(1/11.0592Mhz*12us))=(65536-46080)=19456=4C00H
软件计数:
计数器采用R2,计数20次。
实验电路如图4-4所示:
用导线将A2区的P10与D1区的LED1相连。
图4-4定时器0实验接线图
参考程序:
ORG8000H
AJMPMAIN
ORG800BH
AJMPT0S
MAIN:
MOVSP,#60H
MOVTMOD,#01H
MOVTH0,#4CH
MOVTL0,#00H
MOVR2,#00H
MOVIE,#10000010B
SETBTR0
CLRP1.0
SJMP$
T0S:
MOVTH0,#4CH
MOVTL0,#00H
INCR2
CJNER2,#20,NEXT
CPLP1.0
MOVR2,#00H
NEXT:
RETI
END
2)采用定时器0,方式1,定时50MS,查询方式,当1S时间到后,使P1.0闪亮。
用导线将A2区的P10与D1区的LED1相连。
参考程序:
ORG8000HAJMPMAIN
MAIN:
MOVTMOD,#01H;T/C0定时,方式1。
MOVTH0,#4CH;T0定时50MS。
MOVTL0,#00H
MOVR2,#00H;软件计数器初值SETBTR0
LOOP:
JBCTF0,T0S
SJMPLOOP
T0S:
MOVTH0,#4CH
MOVTL0,#00H
INCR2
CJNER2,#20,NEXT;1S使P1.0取反一次。
CPLP1.0
MOVR2,#00H
NEXT:
SJMPLOOP
END
3)采用GATE=1时,利用信号/INT0与TR0双重启动T/C0,产生1S延时。
用导线将A2区的P10与D1区的LED1相连,用导线将A2区的INT0与D1区的SW1相连,运行相面程序前先将SW1置在0位,程序运行后将SW1置在1位,观察LED1的闪亮情况,然后将SW1再置在0位,LED1将停止闪亮,再SW1置在1位,重复前述步骤,观察GATA与/INT0引脚信号的作用。
注意:
调试前,SW1一定处于0的位置。
参考程序:
ORG8000HAJMPMAINORG800BHAJMPT0S
MAIN:
MOVSP,#60H
MOVTMOD,#09H;T/C0定时,方式1,GATE=1。
MOVTH0,#4CH;T0定时50MS,中断一次。
MOVTL0,#00H
MOVR2,#00H;软件计数器初值MOVIE,#10000010B
SETBTR0
CLRP1.0
SJMP$
T0S:
MOVTH0,#4CH
MOVTL0,#00H
INCR2
CJNER2,#20,NEXT;1S使P1.0取反一次。
CPLP1.0
MOVR2,#00H
NEXT:
RETI
END
方案2:
采用T/C0与T/C1级联加软件计数的方法。
1)电路图如图4-5所示。
2)接线方法:
⑴断开DP-51PROC实验仪的电源,按图3-5接线,
使用排线将A2区的J61接口与D1区的J52接口相连,
⑵使用导线把A2区的P3.0与A2区T1(P3.5)相连。
3)参考程序:
ORG8000H
LJMPMAIN
ORG800BH
LJMPTC0SV
ORG801BH
LJMPtc1SV
ORG8100H
MAIN:
MOVSP,#70H
MOVTMOD,#61H
MOVTH1,#0FBH
MOVTL1,#0FBH
MOVTH0,#4CH;T0定时50MS,中断一次。
MOVTL0,#00H
SETBET1
SETBET0
SETBEA
SETBTR1
SETBTR0
MOVR2,#0
SETBP3.0
MOVA,#0FH
MOVP1,A
SJMP$
TC1SV:
INCR2
CJNER2,#2,NEXT
MOVR2,#0
CPLA
MOVP1,A
NEXT:
RETI
TC0SV:
MOVTH0,#4CH
MOVTL0,#00H
CPLP3.0
RETI
END
2、计数器实验
采用T/C0每计1个数,使8个LED全部点亮。
设计方案:
采用T/C0方式2,计数,每计1个数中断一次,在中断服务程序中,点亮/熄灭8个LED。
使用排线将A2区的J61接口与D1区的J52接口相连,用导线将A2区的T0与D1区的SW1相连,请自行画出电路。
注意:
调试前,SW1一定处于1的位置。
参考程序:
ORG8000H
AJMPMAIN
ORG800BH
AJMPT0S
MAIN:
MOVSP,#60H
MOVTMOD,#06H;T/C0定时,方式2。
MOVTH0,#0FFH;计1个数,中断一次.
MOVTL0,#0FFH
SETBET0
SETBEA
SETBTR0
MOVP1,#0FFH
SETB00H
SJMP$
T0S:
JNB00H,MIEP1
MOVP1,#00H
CLR00H
RETI
MIEP1:
MOVP1,#0FFH
SETB00H
RETI
END
三、思考题
1、将实验十一思考题2的软件延时修改为采用T/C0的硬件延时。
采用T/C0中断与/INT0中断方式实现8个LED循环点亮(左或右)。
ORG8000H
AJMPMAIN
ORG800BH
AJMPT0S
MAIN:
MOVSP,#60H
MOVTMOD,#01H
MOVTH0,#4CH
MOVTL0,#00H
MOVR2,#00H
MOVIE,#10000010B
SETBTR0
MOVA,#01H
SJMP$
T0S:
MOVTH0,#4CH
MOVTL0,#00H
INCR2
CJNER2,#20,NEXT
RRA
MOVA,P1
MOVR2,#00H
NEXT:
RETI
END
2、将实验1中T/C0定时改为25MS,软件计数应该为多少?
修改程序产生1S。
ORG8000H
AJMPMAIN
ORG800BH
AJMPT0S
MAIN:
MOVSP,#60H
MOVTMOD,#01H
MOVTH0,#0A6H
MOVTL0,#00H
MOVR2,#00H
MOVIE,#10000010B
SETBTR0
CLRP1.0
SJMP$
T0S:
MOVTH0,#0A6H
MOVTL0,#00H
INCR2
CJNER2,#40,NEXT
CPLP1.0
MOVR2,#00H
NEXT:
RETI
END
实验十三A/D转换器ADC0809实验
一、实验目的
熟悉外部扩展的A/D转换器ADC0809的工作原理,学习使用并行模数转换芯片进行电压信号的采集和数据处理。
二、实验设备及器件
IBMPC机一台
DP-51PROC单片机综合仿真实验仪一台
数字万用表一台
三、实验内容及实验电路
通过片外总线方式访问并行模拟数字转换器芯片ADC0809,掌握模拟电压的通用采集方法。
可以实现单通道采集或8通道采集。
电路如图4-6所示。
图4-6 ADC0809引脚接线图
四、实验要求
理解掌握ADC009的A/D转换原理和并行A/D转换器接口的编程方法,学会使用ADC0809并行模数转换器实现电压信号采集的方案设计。
五、实验步骤
1、单通道采集接线
⑴使用2×10的排线连接D7区的J28接到A7区的J84;
⑵将D2区10K电位器的左端金属孔通过导线连接到该区的GND金属孔,而右端金属孔通过导线连接到该区的VCC金属孔;
3D2区10K电位器的中间金属孔连接到A7区的P2_IO2金属孔(IN0);
4将A7区的P2_IO3~P2_IO5分别连接到A2区的A2~A0;
5将A7区的P2_CS连接到A2区的A15;
6用排线将A2区的J61与D1区的J52相连。
2、实验步骤
1运行编写好的软件程序,每次跑到断点就会停止,此时观察转换的结果和用数字万用表测量的结果相比较是否正确(所需观察的存储单元或者变量在程序中依照注释执行);
2改变10K电位器的旋钮位置,用数字万用表测量中间金属孔的电压,再次运行程序至断点处,观察转换的结果是否正确。
3扭动电位器,改变IN0模拟输入电压,再次运行程序到断点处,观察30H单元的数值是否随之改变,同时观察8个发光二极管显示的转换结果的二进制数(1亮,0灭),改变的是否正确?
4数据换算成实际电压值是否与万用表的测量结果相等?
3、实验参考程序清单
ORG8000H
LJMPMAIN
ORG8100H
MAIN:
MOVSP,#70H
MAIN1:
MOVR1,#30H;置数据区首地址,用于存放A/D转换结果
MOVDPTR,#7FF8H;P2.0=0,且指向通道0
LOOP:
MOVX@DPTR,A;启动A/D转换
CALLDELAY
MOVXA,@DPTR;读取转换结果
MOV@R1,A;转存
LCALLP1ZH
CPLA
MOVP1,A
LJMPMAIN1
P1ZH:
MOVC,ACC.0
MOV07H,C
MOVC,ACC.1
MOV06H,C
MOVC,ACC.2
MOV05H,C
MOVC,ACC.3
MOV04H,C
MOVC,ACC.4
MOV03H,C
MOVC,ACC.5
MOV02H,C
MOVC,ACC.6
MOV01H,C
MOVC,ACC.7
MOV00H,C
MOVA,20H
RET
DELAY:
MOVR6,#0H;软件延时,等待转换结束
DELAY1:
MOVR5,#0FFH
DJNZR5,$
DJNZR5,$
DJNZR6,DELAY1
RET
END
调试程序的说明:
在标有的指令处设置一个断点,采用连续运行程序,在断点处观察30H单元的内容,30H单元的内容;继续执行程序,观察8个发光二极管显示的采集结果二进制数。
然后,扭动电位器的按钮改变电压,再次执行程序,再次到断点处,30H单元的内容随之改变,继续执行程序,观察8个发光二极管显示的采集结果二进制数也随之改变。
六、实验思考题
本实验采用了延时等待的方式等待ADC0809转换结束,当电压在1—4V之间为正常,当电压低于1V或高于4V时报警,将如何修改程序?
提示:
可以使用导线将A2的P31与B5的BUZZ相连,编写一个延时160uS的程序,使P31每隔160uS取反一次,控制蜂鸣器报警。
ORG8000H
LJMPMAIN
ORG8100H
MAIN:
MOVSP,#70H
MAIN1:
MOVR1,#30H
MOVDPTR,#7FF8H
LOOP:
MOVX@DPTR,A
CALLDELAY
MOVXA,@DPTR
MOV@R1,A
LCALLP1ZH
CPLA
MOVP1,A
CJNZA,#33H,A1
SJMPMAIN1
A1:
JCA2
CLRC
CJNEA,#0CCH,A3
SJMPMAIN1
A3:
JCMAIN1
SJMPA2
A2:
CPLP3.1
MOVR5,#0AH
DAY:
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
DJNZR5,DAY
LJMPA2
LJMPMAIN1
P1ZH:
MOVC,ACC.0
MOV07H,C
MOVC,ACC.1
MOV06H,C
MOVC,ACC.2
MOV05H,C
MOVC,ACC.3
MOV04H,C
MOVC,ACC.4
MOV03H,C
MOVC,ACC.5
MOV02H,C
MOVC,ACC.6
MOV01H,C
MOVC,ACC.7
MOV00H,C
MOVA,20H
RET
DELAY:
MOVR6,#0H
DELAY1:
MOVR5,#0FFH
DJNZR5,$
DJNZR5,$
DJNZR6,DELAY1
RET
END
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机硬件