dickus单片机实验.docx
- 文档编号:12558411
- 上传时间:2023-06-06
- 格式:DOCX
- 页数:71
- 大小:1.20MB
dickus单片机实验.docx
《dickus单片机实验.docx》由会员分享,可在线阅读,更多相关《dickus单片机实验.docx(71页珍藏版)》请在冰点文库上搜索。
dickus单片机实验
数据传送实验
实验项目类型:
设计型
实验时间:
2012.10.15
一、实验目的
1、掌握单片机的汇编指令系统及汇编语言程序设计方法。
2、掌握单片机的存储器体系结构。
3、熟悉Keil软件的功能和使用方法。
4、掌握单片机应用程序的调试方法。
二、设计要求
1、编写程序将00H~0FH16个数据分别送到单片机内部RAM30H~3FH单元中。
2、编写程序将片内RAM30H~3FH的内容传送至片内RAM40~4FH单元中。
3、编写程序将片内RAM40H~4FH单元中的内容传送到外部RAM4800H~480FH单元中。
4、编写程序将片外4800H~480FH单元内容送到外部RAM5800H~580FH单元中。
5、编写程序将片外RAM5800H~580FH单元内容传送回片内RAM50H~5FH单元中。
三、实验程序流程框图和程序清单。
流程图
程序一程序二
程序三程序四程序五
程序清单
ORG0000H
MAIN:
MOVR0,#30H
MOVA,#00H
T1:
MOV@R0,A
INCR0
INCA
CJNEA,#10H,T1
MOVR0,#3FH
MOVR2,#10H
MOVR1,#4FH
T2:
MOVA,@R0
MOV@R1,A
DECR0
DECR1
DJNZR2,T2
MOVR2,#10H
MOVR1,#4FH
MOVDPTR,#480FH
T3:
MOVA,@R1
MOVX@DPTR,A
DECR1
DECA
MOVDPL,A
DJNZR2,T3
MOVDPL,#00H
MOVR2,#10H
T4:
MOVDPH,#48H
MOVXA,@DPTR
MOVDPH,#58H
MOVX@DPTR,A
INCDPTR
DJNZR2,T4
MOVR0,#50H
MOVDPTR,#5800H
MOVR2,#10H
T5:
MOVXA,@DPTR
MOV@R0,A
INCR0
INCA
MOVDPL,A
DJNZR2,T5
END
四、实验总结
通过此次实验,熟悉了kille开发软件的使用,对单片机理解更深刻。
学会了设计简单的程序,把课堂上的理论内容与实践相结合,学习起来更加有效率。
5、实验思考
1、说明MCS-51系列单片机对片内RAM和片外RAM存贮器各有哪些寻址方式?
答:
片内RAM存储器的寻址方式:
1、寄存器寻址2、直接寻址3、寄存器间接寻址4、位寻址方式
片外只能通过累加器A使用间接寻址
2、说明指令MOVA,20H和MOVC,20H中的20H含义有什么不同?
传送指令中的助记符MOV,MOVX,MOVC各适用于访问哪个存储器空间?
答:
1、MOVA,20H把20H单元中的内容送往累加器A中,
MOVC,20H把20H位的状态送往进位C
MOV适用于内部的RAM存储空间
MOVX适用于外部的RAM存储空间
MOVC适用于程序存储空间
实验名称:
单片机并行I/O口的应用实验
实验类型:
设计型
时间:
2012年11月6日
设计性实验
一、实验目的
1、熟悉Proteus软件和Keil软件的使用方法。
2、熟悉单片机应用电路的设计方法。
3、掌握单片机并行I/O口的直接应用方法。
4、掌握单片机应用程序的设计和调试方法
二、设计要求
1、用Proteus软件画出电路原理图。
要求在P1.0至P1.7口线上分别接LED0至LED7八个发光二极管,在P3.0口线上接一蜂鸣器。
2、编写程序:
要求LED0至LED7以秒速率循环右移。
3、编写程序:
要求LED0至LED7以秒速率循环左移。
4、编写程序:
要求在灯移动的同时,蜂鸣器逐位报警
三、电路原理图
4、实验程序流程框图和程序清单
一、循环右移
ORG0000H
MAIN:
MOVP1,#0FFH
MOVA,#7FH
LOOP:
MOVP1,A
CLRP3.0
LCALLDELAY
CPLP3.0
LCALLDELAY
RRA
LJMPLOOP
DELAY:
MOVR7,#17H
DL1:
MOVR6,#98H
DL0:
MOVR5,#46H
DJNZR5,$
DJNZR6,DL0
DJNZR7,DL1
RET
END
二、循环左移
ORG00H
MAIN:
MOVP1,#0FFH
MOVA,#0FEH
LOOP:
MOVP1,A
CLRP3.0
LCALLDELAY
SETBP3.0
LCALLDELAY
RLA
LJMPLOOP
DELAY:
MOVR7,#17H
DL1:
MOVR6,#98H
DL0:
MOVR5,#46H
DJNZR5,$
DJNZR6,DL0
DJNZR7,DL1
RET
END
四、实验总结
通过本次试验,加深了对延时程序的理解,熟练了对keil和protues的使用。
更加熟悉了单片机实验课的节奏,加强了自己的动手能力,收获很多.
五、思考题
1、编程实现LED0至LED7以十六进制计数规律亮灯?
ORG0000H
MOVP1,#0FFH
MOVA,#0FFH
MOVR7,#16
LOOP:
MOVP1,A
LCALLDELAY1S
DECA
DJNZR7,LOOP
LJMPMAIN
DELAY1S:
MOVR7,#0A7H
DL1:
MOVR6,#0ABH
DL0:
MOVR5,#10H
DJNZR5,$
DJNZR6,DL0
DJNZR7,DL1
NOP
RET
END
实验三、定时器/计数器应用实验一
实验性质、设计性实验
一、实验目的
1、掌握中断系统外部中断源的使用方法。
2、掌握延时程序的编程及使用方法。
3、掌握Proteus软件与Keil软件的使用方法。
4、掌握单片机系统的硬件和软件设计方法
二、设计要求
1、用Proteus软件画出电路原理图,在单片机的P1.0口线上接按键K0,作为外部中断源0使用,用于开启波形,在单片机的P1.1口线上接按键K1,作为外部中断源1使用,用于关闭波形。
2、在单片机的P1.2口线上产生周期50mS的连续方波,在P1.2口线上接示波器观察波形。
3、电路原理图。
三、实验程序流程框图和程序清单
`ORG0000H
START:
LJMPMAIN
ORG0030H
MAIN:
MOVTMOD,#10H
MOVTH1,#0FFH
MOVTL1,#9CH
MOVIE,#00H
SETBTR1
LOOP:
JNBTF1,LOOP
MOVTH1,#0FFH
MOVTL1,#9CH
CLRTF1
CPLP1.0LJMPLOOPEND
ORG0000H
LJMPMAIN
ORG001BH
LJMPLOOP1
ORG0030H
MAIN:
MOVSP,#3FH
MOVTMOD,#20H
MOVTH1,#88H
MOVTL1,#88H
SETBEA
SETBET1
SETBTR1
HERES:
LJMP$
LOOP1:
CPLP1.1
RETI
END
四、实验结果(波形图)
实验一
实验二
五、实验总结
通过本次实验,对单片机的定时功能有了更加深刻的认识。
熟练对keil的使用,收获非常大。
6、思考题
在p1.0口线上产生周期为500微妙,占空比为2:
5的连续矩形波。
ORG0000H
SRART:
LJMPMAIN
ORG0030H
MAIN:
MOVSP,#7FH
MOVTMOD,#01H
MOVIE,#00H
SETBTR0
LOOP:
CLRP1.0
CLRTF0
MOVTH0,#0FEH
MOVTL0,#0D4H
LOOP1:
JNBTF0,LOOP1
CLRTF0
CPLP1.0
MOVTH0,#0FFH
MOVTL0,#38H
LOOP2:
JNBTF0,LOOP2
LJMPLOOP
END
ORG0000H
START:
LJMPMAIN
ORG0030H
MAIN:
MOVSP,#2FH
CLREA
MOVTMOD,#22H
MOVTH0,#9CH
MOVTL0,#9CH
SETBTR0
LOOP1:
JNBTF0,LOOP1
CLRTF0
CLRTR0
SETBTR1
CPLP1.0
MOVTH1,#6AH
MOVTL1,#6AH
LOOP2:
JNBTF1,LOOP2
CLRTF1
CLRTR1
SETBTR0
CPLP1.0
LJMPLOOP1
END
ORG0000HSTART:
LJMPMAINORG0100H
MAIN:
MOVSP,#2FH
CLREA
CLRET0
MOVTMOD,#02H
MOVTH0,#09CH
MOVTL0,#09CH
MOVA,#00H
SETBTR0
LOOP0:
JNBTF0,LOOP0
CLRTF0
INCA
CJNEA,#02H,LOOP0
CPLP1.0
LOOP2:
JNBTF0,LOOP2
CLRTF0
INCA
CJNEA,#05H,LOOP2
CPLP1.0
CLRA
LJMPLOOP0
END
定时器/计数器应用实验二
实验项目类型:
设计型
实验时间:
2012.11.15
一、实验目的
1、掌握定时器/计数器计数功能的使用方法。
2、掌握定时器/计数器的中断、查询使用方法。
3、掌握Proteus软件与Keil软件的使用方法。
4、掌握单片机系统的硬件和软件设计方法。
二、设计要求
1、用Proteus软件画出电路原理图,单片机的定时器/计数器以查询方式工作,设定计数功能,对外部连续周期性脉冲信号进行计数,每计满100个脉冲,则取反P1.0口线状态,在P1.0口线上接示波器观察波形。
2、用Proteus软件画出电路原理图,单片机的定时器/计数器以中断方式工作,设定计数功能,对外部连续周期性脉冲信号进行计数,每计满200个脉冲,则取反P1.0口线状态,在P1.0口线上接示波器观察波形。
三、电路原理图。
四、实验程序流程框图和程序清单。
汇编程序1
ORG0000H
LJMPMAIN
ORG0030H
MAIN:
CLREA
MOVTMOD,#06H
MOVTH0,#9CH
MOVTL0,#9CH
SETBTR0
LOOP:
JNBTF0,LOOP
CPLP1.0
CLRTF0
LJMPLOOP
END
C语言程序1
#include
sbitP1_0=P1^0;
voidmain()
{
IE=0;
TMOD=0X06;
TR0=1;
for(;;)
{
TH0=0X9C;
TL0=0X9C;
do{}while(!
TF0);
P1_0=!
P1_0;
TF0=0;
}
}
汇编程序2
ORG0000H
LJMPMAIN
ORG000BH
LJMPTP0
ORG0030H
MAIN:
MOVSP,#2FH
MOVTMOD,#06H
MOVTH0,#38H
MOVTL0,#38H
SETBEA
SETBET0
SETBTR0
SJMP$
TP0:
CPLP1.0
CLRTF0
RETI
END
C语言程序2
#include
sbitP1_0=P1^0;
voidtime()interrupt1
{
P1_0=!
P1_0;
}
voidmain()
{EA=1;
ET0=1;
TMOD=0X06;
TR0=1;
TL0=0X38;
TH0=0X38;
while
(1);
}
五、实验结果(波形图)。
实验一
实验二
六、实验总结。
通过本次实验使我对定时器/计数器中的计数工作方式有了更好的掌握和了解,增强了自己的动手能力。
七、思考题。
利用定时器0在p1.0口线上产生周期为200微秒的连续方波,利用定时器1,对p1.0口线上波形进行计数,满五十个,则取反p1.0口线状态,在p1.0口线上接示波器观察波形。
汇编程序3
ORG0000H
START:
LJMPMAIN
ORG0030H
MAIN:
CLREA
CLRET1
MOVTMOD,#62H
MOVTH1,#0CEH
MOVTL1,#0CEH
MOVTL0,#9CH
MOVTH0,#9CH
SETBTR0
SETBTR1
LOOP:
JNBTF0,LOOP
CPLP1.0
CLRTF0
LOOP1:
JNBTF1,LOOP
CPLP1.1
CLRTF1
LJMPLOOP
END
C语言程序3
#include
sbitP1_0=P1^0;
sbitP1_1=P1^1;
voidtime()interrupt1
{
P1_0=!
P1_0;
}
voidtime_()interrupt3
{
P1_1=!
P1_1;
}
voidmain()
{
TMOD=0X62;
TH0=0X9C;
TL0=0X9C;
TH1=0XCE;
TL1=0XCE;
TR0=1;
TR1=1;
EA=1;
ET0=1;
ET1=1;
while
(1);
}
实验名称:
外部中断应用实验
实验项目类型:
设计型
实验时间:
2012.11.22
一、实验目的
1、掌握中断系统外部中断源的使用方法。
2、掌握延时程序的编程及使用方法。
3、掌握Proteus软件与Keil软件的使用方法。
4、掌握单片机系统的硬件和软件设计方法。
二、设计要求
1、用Proteus软件画出电路原理图,在单片机的P1.0口线上接按键K0,作为外部中断源0使用,用于开启波形,在单片机的P1.1口线上接按键K1,作为外部中断源1使用,用于关闭波形。
2、在单片机的P1.2口线上产生周期50mS的连续方波,在P1.2口线上接示波器观察波形。
三、电路原理图。
四、实验程序流程框图和程序清单。
汇编程序
ORG0000H
AJMPMAIN
ORG0003H
AJMPZD0
ORG0013H
AJMPZD1
ORG0030H
MAIN:
SETBIT0
SETBIT1
MOVTMOD,#01H
MOVIE,#85H
LO:
MOVTH0,#9EH
MOVTL0,#58H
LOOP0:
JBCTF0,LOOP1
AJMPLOOP0
LOOP1:
CPLP1.2
AJMPLO
ZD0:
SETBTR0
RETI
ZD1:
CLRTR0
RETI
END
C语言程序
#include
sbitK0=P1^0;
sbitK1=P1^1;
sbitP1_2=P1^2;
voidINTT0()interrupt0
{
TR0=1;
}
voidINTT1()interrupt2
{
TR0=0;
}
voidT0_time()interrupt1
{
P1_2=~P1_2;
TH0=0X9E;
TL0=0X58;
}
voidmain()
{TMOD=0X01;
EA=1;
ET0=1;
EX0=1;
EX1=1;
IT0=1;
IT1=1;
PX1=1;
TH0=0X9E;
TL0=0X58;
for(;;);
}
五、实验结果(波形图)。
六、实验总结。
通过本次试验,加深了对延时程序的理解,熟练了对keil和protues的使用。
更加熟悉了单片机实验课的节奏,加强了自己的动手能力,收获很多.
七、思考题
1、在P1.2口线上产生周期为100mS,占空比为2:
5的连续矩形波,要求只采用按键K0来控制其开启和关闭。
1汇编程序
ORG0000H
LJMPMAIN
ORG0003H
LJMPZD0
ORG000BH
LJMPZD1
ORG0030H
MAIN:
SETBIT0
MOVTMOD,#01H
MOVIE,#83H
MOVTH0,#0B1H
MOVTL0,#0E0H
MOVR0,#0
LOOP1:
CJNER0,#2,$
CPLP1.2
CJNER0,#5,$
CPLP1.2
MOVR0,#0
LJMPLOOP1
ZD0:
CPLTR0
RETI
ZD1:
INCR0
MOVTH0,#0B1H
MOVTL0,#0E0H
RETI
END
2.C语言程序
#include
sbita=P1^2;
chart;
voidmain()
{
TMOD=0X01;
IE=0X83;
TH0=0XB1;
TL0=0XE0;
IT0=1;
while
(1)
{
if(t==2)
a=0;
if(t==5)
{
a=1;
t=0;
}
}
}
voidzd0()interrupt0
{
TR0=~TR0;
t=0;
}
voidzd1()interrupt1
{
t++;
TH0=0XB1;
TL0=0XE0;
}
可编程并行接口芯片8255的应用实验
实验性质:
设计性
试验时间:
2012年12月3号
一、实验目的和要求
1、掌握单片机与可编程并行接口芯片8255的设计方法。
2、掌握Proteus软件与Keil软件的使用方法。
3、熟悉可编程并行接口芯片8255初始化程序设计方法。
二、设计要求
1、用Proteus软件画出电路原理图,在单片机的外部
扩展片外三总线,并通过片外三总线与8255接口。
2、在8255PA口或PB口的某一口线上产生周期为
500μS的连续方波,接示波器观察波形。
3、在8255PC口的PC0-PC3上接4个按键作输入,
PC4-PC7上接4个发光二极管作输出,编程实现
发光二极管正确指示按键的状态
三、实验原理图
四、实验程序清单和程序流程图
<1>产生500us波形的程序及流程图
汇编编写:
ORG0000H
LJMPMAIN
ORG0200H
MAIN:
MOVSP,#2FH
CLREA
CLRET1
MOVTMOD,#20H
MOVTH1,#06H
MOVTL1,#06H
MOVDPTR,#0003H
LOOP:
MOVA,#80H
LCALLDD
MOVX@DPTR,A
MOVA,#90H
LCALLDD
MOVX@DPTR,A
AJMPLOOP
DD:
SETBTR1
LOOP1:
JNBTF1,LOOP1
CLRTF1
RET
END
C语言编写:
#defineuintunsignedint
#defineucharunsignedchar
#include
#include
#defineA8255XBYTE[0x0003]
voiddely()
{TR1=1;
while(!
TF1);
TF1=0;
}
voidmain()
{TMOD=0x20;
TH1=0x06;
TL1=0x06;
EA=0;
for(;;)
{dely();
A8255=0x80;
dely();
A8255=0x90;
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- dickus 单片机 实验