试验1P1口试验一长春工业大学人文信息学院.docx
- 文档编号:16365573
- 上传时间:2023-07-12
- 格式:DOCX
- 页数:32
- 大小:533.37KB
试验1P1口试验一长春工业大学人文信息学院.docx
《试验1P1口试验一长春工业大学人文信息学院.docx》由会员分享,可在线阅读,更多相关《试验1P1口试验一长春工业大学人文信息学院.docx(32页珍藏版)》请在冰点文库上搜索。
试验1P1口试验一长春工业大学人文信息学院
单片机原理及应用
实验指导书
长春工业大学人文信息学院
电子信息系
2011年9月
实验一指令操作实验
一、实验目的:
掌握汇编语言设计和调试方法,熟悉键盘操作。
二、实验内容:
1、7000H~70FFH的内容清零。
2、7000H的内容拆开,高位送7001H低位,低位送7002H低位,7001H,7002H高位清零。
三、实验程序框图:
四、实验步骤:
1、进入QTH编辑器,建立项目文件。
2、编写实验程序。
3、调试程序,用单步(F8)方法运行实验程序。
4、用存贮器读写方法检查7000H~70FFH中的内容应全是00H。
5、先将7000H单元赋值ABH。
程序运行后7001H的内容为0AH,7002H单元的内容为0BH.
实验二数据区读写实验
一、实际目的:
掌握RAM中的数据操作。
二、实验内容:
把(R2.R3)源RAM区首地址内(R6.R7)个字节数据,传送到(R4.R5)目的RAM区。
三、实验程序框图:
四、实验步骤:
1、在R2.R3中装入源首地址<例如6000H>,R4.R5中装入目的地址<例如7000H>,R6.R7中装入字节数<0FFFH>。
2、用单步、断点方法从起始地址0090H开始运行实验程序(输入0090后按STEP键为单步运行)。
3、检查7000H开始的内容和6000H开始的内容是否完全正确。
实验三P1口实验一
一、实验目的:
1.学习P1口的使用方法。
2.学习延时子程序的编写和使用。
二、实验设备:
CPU挂箱、8031CPU模块
三、实验内容:
1.P1口做输出口,接八只发光二极管,编写程序,使发光二极管循环点亮。
2·P1口做输入口,接八个按纽开关,以实验箱上74LS273做输出口,编写程序
读取开关状态,在发光二极管上显示出来。
四、实验原理:
Pl口为准双向口,P1口的每一位都能独立地定义为输入位或输出位。
作为输入位时,必须向锁存器相应位写入“1”,该位才能作为输入。
8031中所有口锁存器在复位时均置“1”,如果后来在口锁存器写过“0”,在需要时应写入一个“1”,使它成为一个输入。
再来看延时程序的实现。
现常用的有两种方法,一是用定时器中断来实现,一是用指令循环来实现。
在系统时间允许的情况下可以采用后一种方法。
实验系统晶振为6MHZ,
MOVR7,#7FH
DELl:
MOVR6,#200
DEL2:
DJNZR6,DEL2
DJNZR7,DELl
RET
五、实验原理图
图1-2输出指示
图1-3控制键接法
六、实验步骤:
执行程序1(T1-1.ASM)时:
P1.0~P1.7接发光二极管LI~L8。
执行程序2(TI-2.ASM)时:
P1.0~P1.7接平推开关K1~K8;74LS273的00~07接发光二极管LI~L8;74LS273的片选端CS273接CS0(由程序所选择的入口地址而定,与CS0~CS7相应的片选地址)。
七、程序框图
单灯循环左移
通过发光二极管将P1口的状态显示
八、参考程序
T1-1
;P1.0~P1.7接发光二极管L1~L8。
NAMET1_1
CSEGAT0000H
LJMPSTART
CSEGAT4100H
START:
MOVA,#0FEH
LOOP:
RLA;左移以为,点亮下一个发光二极管
MOVP1,A
LCALLDELAY
JMPLOOP
DELAY:
MOVR1,#127;延时子程序
DEL1:
MOVR2,#200
DEL2:
DJNZR2,DEL2
DJNZR1,DEL1
RET
END
T1-2
;P1.0~P1.7接平推开关K1~K8;
;74LS273的O0~O7接发光二极管L1~L8;
;74LS273的片选端CS273接CS0
NAMET1_2;P1口输入实验
OUT_PORTEQU0CFA0H
CSEGAT0000H
LJMPSTART
CSEGAT4100H
START:
MOVP1,#0FFH;复位P1口为输入状态
MOVA,P1;读P1口的状态值入累加器A
MOVDPTR,#OUT_PORT;将输出口地址赋给地址指针DPTR
MOVX@DPTR,A;将累加器A的值赋给DPTR指向的地址
JMPSTART;继续循环监测端口P1的状态
END
实验四P1口实验二
一、实验目的:
1.学习P1口既做输入又做为输出的使用方法。
2.学习数据输入、输出程序的设计方法。
二、实验设备:
cPu挂箱、8031cPu模块
三、实验原理:
P1口的使用方法
N路转移的常用设计方法,该方法利用了JMP@A+DPTR的计算功能实现转移。
该方法的优点是设计简单,转移表短,但转移表大小加上各个程序长度必须小于256字节。
四、实验原理图
五、实验内容
平推开关的输出K1接P1.0;K2接P1.1;
发光二极管的输入L1接P1.2:
L2接P1.3;L5接P1.4;L6接Pl.5。
K1做为左转弯开关,K2做为右转弯开关。
L5、L6做为右转弯灯,L1、L2做为片转弯灯。
结果显示:
1:
K1接高电平K2接低电平时,右转弯灯(L5、L6)灭,左转弯灯(L1、L2)以一定频率闪烁;
2:
K2接高电平K1接低电平时,左转弯灯(L1、L2)灭,右转弯灯(L5、L6)以一定频率闪烁:
.
3:
K1、K2同时接低电平时,发光二极管全灭;
4:
K1、K2同时接高电平时,发光二极管全亮。
六、参考程序
;平推开关的输出K1接P1.0;K2接P1.1;
;发光二极管的输入L1接P1.2;L2接P1.3;L5接P1.4;L6接P1.5。
NAMET2;P1口输实验
CSEGAT0000H
LJMPSTART
CSEGAT4100H
START:
SETBP1.0
SETBP1.1;用于输入时先置位口内锁存器
MOVA,P1
ANLA,#03H;从P1口读入开关状态,取低两位
MOVDPTR,#TAB;转移表首地址送DPTR
MOVCA,@A+DPTR
JMP@A+DPTR
TAB:
DBPRG0-TAB
DBPRG1-TAB
DBPRG2-TAB
DBPRG3-TAB
PRG0:
MOVP1,#0FFH;向P1口输出0FFH,发光二极管全灭
;此时K1=0,K2=0
JMPSTART
PRG1:
MOVP1,#0F3H;只点亮L1、L2,表示左转弯
ACALLDELAY;此时K1=1,K2=0
MOVP1,#0FFH;再熄灭0.5秒
ACALLDELAY;延时0.5秒
JMPSTART
PRG2:
MOVP1,#0CFH;只点亮L5、L6,表示右转弯
ACALLDELAY;此时K1=0,K2=1
MOVP1,#0FFH
ACALLDELAY
JMPSTART
PRG3:
MOVP1,#00H;发光二极管全亮,此时K1=1,K2=1
JMPSTART
DELAY:
MOVR1,#5;延时0.5秒
DEL1:
MOVR2,#200
DEL2:
MOVR3,#126
DEL3:
DJNZR3,DEL3
DJNZR2,DEL2
DJNZR1,DEL1
RET
END
七、程序框图
实验五简单I/O口扩展实验一
——交通灯控制实验
一、实验目的:
1.学习在单片机系统中扩展简单I/0接口的方法。
2.学习数据输出程序的设计方法。
3.学习模拟交通灯控制的实现方法。
二、实验设备:
CPU挂箱、8031CPU模块
三、实验内容:
扩展实验箱上的74LS273做为输出口,控制八个发光二极管亮灭,模拟交通灯管理。
四、实验原理:
要完成小实验,首先必须了解交通路灯的亮灭规律。
l小实验需要用到实验箱上八个发光二极管巾的六个,即红、黄、绿各两个。
不妨将I.1(红)、L2(绿)、I_3(黄)做为东西方向的指示灯,将L5(红)、L6(绿)、L7(黄)做为南北方向的指示灯。
而交通灯的亮灭规律为:
初始态是两个路口的红灯全亮,之后,东西路lq的绿灯亮,南北路口的红灯亮,东西方向通车,延时一段时间后,东西路口绿灯灭,黄灯开始闪烁。
闪烁若干次后,东西路口红灯亮,而同时南北路口的绿灯亮,南北方向开始通车,延时一段时间后,南北路n的绿灯灭,黄灯开始闪烁。
闪烁若干次后,再切换到东两路口方向,重复上述过程。
各发光二极管的阳极通过保护电阻接到十5v的电源上,阴极接到输入端上,因此使其点亮应使相应输入端为低电平。
五、实验原理图
六、实验步骤:
74LS273的输出00~07接发光二极管LI~L8,74LS273的片选CS273接片选信号CS0.运行实验程序,观察LED显示情况是否与实验内容相符。
七、程序框图:
八、参考程序
;74LS273的输出00~07接发光二极管L1~L8
;4LS273的片选CS273接片选信号CS0
NAMET3;I/O口扩展实验一
PORTEQU0CFA0H;片选地址CS0
CSEGAT0000H
LJMPSTART
CSEGAT4100H
START:
MOVA,#11H;两个红灯亮,黄灯、绿灯灭
ACALLDISP;调用273显示单元(以下雷同)
ACALLDE3S;延时3秒
LLL:
MOVA,#12H;东西路口绿灯亮;南北路口红灯亮
ACALLDISP
ACALLDE10S;延时10秒
MOVA,#10H;东西路口绿灯灭;南北路口红灯亮
ACALLDISP
MOVR2,#05H;R2中的值为黄灯闪烁次数
TTT:
MOVA,#14H;东西路口黄灯亮;南北路口红灯亮
ACALLDISP
ACALLDE02S;延时0.2秒
MOVA,#10H;东西路口黄灯灭;南北路口红灯亮
ACALLDISP
ACALLDE02S;延时0.2秒
DJNZR2,TTT;返回TTT,使东西路口;黄灯闪烁五次
MOVA,#11H;两个红灯亮,黄灯、绿灯灭
ACALLDISP
ACALLDE02S;延时0.2秒
MOVA,#21H;东西路口红灯亮;南北路口绿灯亮
ACALLDISP
ACALLDE10S;延时10秒
MOVA,#01H;东西路口红灯亮;南北路口绿灯灭
ACALLDISP
MOVR2,#05H;黄灯闪烁五次
GGG:
MOVA,#41H;东西路口红灯亮;南北路口黄灯亮
ACALLDISP
ACALLDE02S;延时0.2秒
MOVA,#01H;东西路口红灯亮;南北路口黄灯灭
ACALLDISP
ACALLDE02S;延时0.2秒
DJNZR2,GGG;返回GGG,使南北路口;黄灯闪烁五次
MOVA,#03H;两个红灯亮,黄灯、绿灯灭
ACALLDISP
ACALLDE02S;延时0.2秒
JMPLLL;转LLL循环
DE10S:
MOVR5,#100;延时10秒
JMPDE1
DE3S:
MOVR5,#30;延时3秒
JMPDE1
DE02S:
MOVR5,#02;延时0.2秒
DE1:
MOVR6,#200
DE2:
MOVR7,#126
DE3:
DJNZR7,DE3
DJNZR6,DE2
DJNZR5,DE1
RET
DISP:
MOVDPTR,#PORT;273显示单元
CPLA
MOVX@DPTR,A
RET
END
实验六中断实验
—有急救车的交通灯控制实验
一、实验目的:
1.学习外部中断技术的基本使用方法。
2.学习中断处理程序的编程方法。
二、实验设备:
CP[J挂箱、803ICPIJ模块
三、实验内容:
在实验三的内容的基础上增加允许急救车优先通过的要求。
当有急救车到达时,两个方向上的红灯亮,以便让急救车通过,假定急救车通过路口的时间为10秒,急救车通过后,交通灯恢复中断前的状态。
本实验以单脉冲为中断申请,表示有急救车通过。
四、实验原理:
交通灯的燃灭规律见实验三。
本实验中断处理程序的应用,最主要的地方是如何保护进入中断前的状态,使得中断程序执行完毕后能回到交通灯中断前的状态。
要保护的地方,除了累加器A、标志寄存器PSW外,还要注意:
一是主程序巾的延时程序和中断处理程序中的延时程序不能混用,本实验给出的程序中,主程序延时用的是R5、R6、R7,中断断延时用的是R3、R4和新的R5。
第二,主程序巾每执行一步经74LS273的端口输出数据的操作时,应先将所输出的数据保存到一个单元巾。
因为进入中断程序后也要执行往74LS273端口输出数据的操作,中断返回时如果没有恢复中断前74LS273端口锁存器的数据,则显示往往出错,回不到中断前的状态。
还要注意一点,主程序中往端口输出数据操作要先保存再输出,例如有如下操作:
MOVA,#0F0H(0)
MOVX@R1,A
(1)
MOVSAVE.,A
(2)
程序如果止好执行到
(1)时发生巾断,则转入中断程序,假设中断程序返回主程序前需要执行MOVA,SAVE指令,由于主程序没有执行
(2),故SAVE中的内容实际上时前一次放入的而不是(0)语句中给出的0F0H,显示出错,将
(1)、
(2)两句顺序颠倒一下没问题。
发生中断时两方向的红灯一起亮10秒,然后返回到中断前的状态
五、实验原理同一个实验
六、实验步骤
74LS273的输出00~07接发光二极管LI~L8,74LS273的片选cs273\接片选信号CS2,此时74LS273的片选地址为CFB0H~CFB7H之间任选。
单脉冲输出端P一接CPU板上的INT0。
七、程序框图
八、参考程序
;74LS273的输出O0~O7接发光二极管L1~L8
;74LS273的片选CS273\接片选信号CS2,
;单脉冲输出端P-接CPU板上的INT0。
NAMET5;中断控制实验
OUTPORTEQU0CFB0H;端口地址
SAVEEQU55H;保存从端口CFB0输出的数据
CSEGAT0000H
LJMPSTART
CSEGAT0003H;中断向量为0003H
LJMPINT
CSEGAT4100H
START:
SETBIT0
SETBEX0
SETBEA
MOVA,#11H;置首显示码
MOVSAVE,A;保存
ACALLDISP;显示输出
ACALLDE3S;延时3秒
LLL:
MOVA,#12H;东西路口绿灯亮,南北路口红灯亮
MOVSAVE,A
ACALLDISP
ACALLDE10S;延时10秒
MOVA,#10H;东西路口绿灯灭
MOVSAVE,A
ACALLDISP
MOVR2,#05H;东西路口黄灯闪烁5次
TTT:
MOVA,#14H
MOVSAVE,A
ACALLDISP
ACALLDE02S;延时0.2秒
MOVA,#10H
MOVSAVE,A
ACALLDISP
ACALLDE02S;延时0.2秒
DJNZR2,TTT
MOVA,#11H;红灯全亮
MOVSAVE,A
ACALLDISP
ACALLDE02S;延时0.2秒
MOVA,#21H;东西路口红灯亮,南北路口绿灯亮
MOVSAVE,A
ACALLDISP
ACALLDE10S;延时10秒
MOVA,#01H;南北路口绿灯灭
MOVSAVE,A
ACALLDISP
MOVR2,#05H;南北路口黄灯闪烁5次
GGG:
MOVA,#41H
MOVSAVE,A
ACALLDISP
ACALLDE02S
MOVA,#01H
MOVSAVE,A
ACALLDISP
ACALLDE02S
DJNZR2,GGG
MOVA,#11H;红灯全亮
MOVSAVE,A
ACALLDISP
ACALLDE02S;延时0.2秒
JMPLLL;转LLL循环
DE10S:
MOVR5,#100;延时10秒
JMPDE1
DE3S:
MOVR5,#30;延时3秒
JMPDE1
DE02S:
MOVR5,#02;延时0.2秒
DE1:
MOVR6,#200
DE2:
MOVR7,#126
DE3:
DJNZR7,DE3
DJNZR6,DE2
DJNZR5,DE1
RET
INT:
CLREA
PUSHACC;中断处理
PUSHPSW
MOVA,R5
PUSHACC
MOVA,R2
PUSHACC
MOVA,#11H;红灯全亮,绿、黄灯全灭
ACALLDISP
DEL10S:
MOVR3,#100;延时10秒
DEL1:
MOVR2,#200
DEL2:
MOVR5,#126
DEL3:
DJNZR5,DEL3
DJNZR2,DEL2
DJNZR3,DEL1
MOVA,SAVE;取SAVE中保存数据输出到cfa0端口
ACALLDISP
POPACC;出栈
MOVR2,A
POPACC
MOVR5,A
POPPSW
POPACC
SETBEA;允许外部中断
RETI
DISP:
MOVDPTR,#OUTPORT
CPLA
MOVX@DPTR,A
RET
END
实验七定时器实验
——循环彩灯实验
一、实验目的:
1.学习8031内部计数器的使用和编程方法。
2.进一步掌握中断处理程序的编写方法。
二、实验设备:
CPU挂箱、8031CPU模块
三、实验原理:
1.定时常数的确定
定时器/计数器的输入脉冲周期与机器周期一样,为振荡频率的1/12。
本实验的时钟频率为6MHZ,现要采用中断方法来实现0.5秒延时,要在定时器1中设置一个时间常数,使其每隔0.1秒产生一次中断,CPU响应中断后将R0中计数值减一,令R0=05H,即可实现0.5秒延时。
X=3CAFH,故初始值为THl=3CH,TLl=AFH
2.初始化程序
包括定时器初始化和中断系统初始化,主要是对IP、IE、TCON、TMOD的相应位进行正确的设置,并将时间常数送入定时器中。
由于只有定时器中断,IP便不必设置。
3.设计中断服务程序和主程序
中断服务程序除了要完成计数减一工作外,还要将时间常数重新送入定时器中,为下一次中断做准备。
主程序则用来控制发光二极管按要求顺序燃灭。
四、实验要求
由8031内部定时器1按方式1工作,即作为16位定时器使用,每0.1秒钟T1溢出中断一次。
P1口的P1.0~P1.7分别接发光二极管的L1~L8。
要求编写程序模拟一循环彩灯。
彩灯变化花样可自行设计。
例程给出的变化花样为:
①L1、L2、…L8依次点亮;①L1、L2、…L8依次熄灭:
③I_1、L2、…L8全亮、全灭。
各时序间隔为0.5秒。
让发光二极管按以上规律循环显示下去。
五、实验电路
P1口的P1.0~P1.7分别接发光二极管的L1~L8即可。
六、参考程序
;P1.0~P1.7分别接发光二极管L1~L8
NAMET6;定时器实验
OUTPORTEQU0CFB0H
CSEGAT0000H
LJMPSTART
CSEGAT001BH;定时器/计数器1中断程序入口地址
LJMPINT
CSEGAT4100H
START:
MOVA,#01H;首显示码
MOVR1,#03H;03是偏移量,即从基址寄存器到表首的距离
MOVR0,#5H;05是计数值
MOVTMOD,#10H;计数器置为方式1
MOVTL1,#0AFH;装入时间常数
MOVTH1,#03CH
ORLIE,#88H;CPU中断开放标志位和定时器
;1溢出中断允许位均置位
SETBTR1;开始计数
LOOP1:
CJNER0,#00,DISP
MOVR0,#5H;R0计数计完一个周期,重置初值
INCR1;表地址偏移量加1
CJNER1,#31H,LOOP2
MOVR1,#03H;如到表尾,则重置偏移量初值
LOOP2:
MOVA,R1;从表中取显示码入累加器
MOVCA,@A+PC
JMPDISP
DB01H,03H,07H,0FH,1FH,3FH,7FH,0FFH,0FEH,0FCH
DB0F8H,0F0H,0E0H,0C0H,80H,00H,0FFH,00H,0FEH
DB0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,07FH,0BFH,0DFH
DB0EFH,0F7H,0FBH,0FDH,0FEH,00H,0FFH,00H
DISP:
;MOVDPTR,#OUTPORT
;MOVX@DPTR,A
MOVP1,A;将取得的显示码从P1口输出显示
JMPLOOP1
INT:
CLRTR1;停止计数
DECR0;计数值减一
MOVTL1,#0AFH;重置时间常数初值
MOVTH1,#03CH
SETBTR1;开始计数
RETI;中断返回
END
七、程序框图
附录:
EL-MUT-8051-KeilC模块使用指导
1)仿真芯片资源介绍:
1、支持KeilC环境下的汇编、C;
2、完全仿真P0、P1、P2口;
3、可以设置单步全速断点运行方式;
4、可以查阅变量RAM、xdata等数据;
5、仿真器占用了单片机的串行口和定时器2的资源以及部分程序空间。
6、从0地址开始仿真。
用汇编时,注意中断矢量单元为标准设置(如:
外部中断0为0003H,T0溢出中断为000BH)。
2)硬件准备:
1、把EL-MUT-8051-KeilC模块插入EL-MUT-III实验箱或实验台的CPU插座。
(EL-MUT-8051-KeilC模块上的40脚单片机管座上需插有“达盛仿真芯片”,不能换为其它单片机芯片)
2、将交叉串口电缆的一端(针形口)与EL-MUT-8051-KeilC模块左侧的串行插口(孔形口)插座连接,另一端(孔形口)与PC机的COM1连
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 试验 P1 口试 长春 工业大学 人文 信息 学院