单片机原理及应用实验教程文档格式.docx

上传人:b****5 文档编号:16341559 上传时间:2022-11-23 格式:DOCX 页数:51 大小:246.40KB
下载 相关 举报
单片机原理及应用实验教程文档格式.docx_第1页
第1页 / 共51页
单片机原理及应用实验教程文档格式.docx_第2页
第2页 / 共51页
单片机原理及应用实验教程文档格式.docx_第3页
第3页 / 共51页
单片机原理及应用实验教程文档格式.docx_第4页
第4页 / 共51页
单片机原理及应用实验教程文档格式.docx_第5页
第5页 / 共51页
点击查看更多>>
下载资源
资源描述

单片机原理及应用实验教程文档格式.docx

《单片机原理及应用实验教程文档格式.docx》由会员分享,可在线阅读,更多相关《单片机原理及应用实验教程文档格式.docx(51页珍藏版)》请在冰豆网上搜索。

单片机原理及应用实验教程文档格式.docx

DJNZR0,RIGHT1

;

*****************************************************************************

/*延时子程序*/

*****************************************************************************

DELAY:

MOVR5,#10

DELAY1:

MOVR6,#50

DELAY2:

MOVR7,#250

DJNZR7,$

DJNZR6,DELAY2

DJNZR5,DELAY1

RET

END

C51语言程序CP1.C:

#include<

reg51.h>

#defineucharunsignedchar

#defineuintunsignedint

ucharrrc(uchara,n);

ucharrrc(uchara,n)//循环右移子程序

{

ucharb,c;

b=a<

<

(8-n);

c=a>

>

n;

a=c|b;

return(a);

}

voidmain()

uchari,temp;

uintj;

P1=0xff;

loop:

temp=0x7f;

for(i=0;

i<

8;

i++)

{

P1=rrc(temp,i);

for(j=0;

j<

30000;

j++);

//延时

}

gotoloop;

【连机调试】

主要步骤如下:

(以项目文件CP1.HPJ和文件CP1.C为例)

1.将微机的串口和单片机的串口连接(单片机的串口在单片机的仿真主机部件区最右边)。

2.连接实验导线。

3.连接单片机电源线并打开单片机电源。

4.在桌面上找图标

,启动。

如果出现

说明单片机电源未开。

5.在“项目菜单”中打开项目文件CP1.HPJ。

6.在“文件菜单”中打开源程序文件CP1.C。

7.在“项目菜单”中编译连接装载。

8.选择“!

”执行,观察发光二极管的变化。

9.关闭项目。

【思考题】

1分析CP2.C,比较CP2.C和CP1.C的差别。

②打开p1.DSN,在仿真软件PROTEUS中观察此实验。

实验二P1P3口输入输出实验

(参考QTH-2008XS系列单片机实验仪说明书1.3节)

P1P3口输入输出实验。

P3口作为输入口读取开关状态,P1口作为输出口,设计电路和程序,使得发光二极管显示开关状态。

学习P1、P3口的使用方法。

①P10~P17分别接L1~L8。

2P30~P33分别接K01~K03,P36~P37分别接K07~K08。

P34(P3.4),P35(P3.5)不接开关,原因见调试部分的说明,也就是说,只使用上图中的6个开关。

P30(P3.0),P31(P3.1),P32(P3.2),P33(P3.3),P34(P3.4),P35(P3.5),P36(P3.6),P37(P3.7)8根线在仿真主机部件区。

K01~K08在手动高低电平输出区。

P1P3.HPJ/CP1P3.HPJ,源程序文件:

P1P3.ASM/CP1P3.C。

汇编语言程序P1P3.ASM:

ORG0000H

AJMPMAIN

ORG0030H

MAIN:

MOVP1,#00H

MOVP1,P3;

把P3口的状态送到P1口

LOOP:

CALLDELAY

/*延时子程序*/

MOVR5,#10

MOVR6,#50

MOVR7,#250

DJNZR7,$

DJNZR6,DELAY2

DJNZR5,DELAY1

RET

END

C51语言程序CP1P3.C:

//P1=0XFF;

P1=P3;

//读取P3口状态送P1口

for(j=0;

5000;

//延时

(以项目文件CP1P3.HPJ和文件CP1P3.C为例)

5.在“项目菜单”中打开项目文件CP1P3.HPJ。

6.在“文件菜单”中打开源程序文件CP1P3.C。

”执行,拨动开关,观察发光二极管的变化。

P34(P3.4)和P35(P3.5)不能接开关,这两个脚悬空,否则下载程序失败,会出现下面的对话框:

1.修改实验程序,当输入为全0或全1时退出程序。

2.修改实验连线和程序,改为以P1口作输入,P3口作输出,测试是否可行。

3.打开p1p3.DSN,在仿真软件PROTEUS中观察此实验。

实验三外部中断实验

(参考QTH-2008XS系列单片机实验仪说明书1.5节)

(方案一)

外部中断实验。

设计电路和程序,利用开关发出中断请求信号,当开关为高电平发光二极管常亮,为低电平时中断处理程序控制发光二极管依此左移变亮。

掌握外部中断技术的基本使用方法及中断程序的编程方法。

K01接P34(P3.4)对应单片机CPU上的INT0。

L1-L8在LED显示区

K01在手动高低电平输出区

P34(P3.4)在仿真主机部件区。

IINT0.HPJ/CIINT0.HPJ,源程序文件:

IINT0.ASM/CIINT0.C

汇编语言文件IINT0.ASM:

ORG0000H

AJMPMAIN

ORG0003H

AJMPIINT0

ORG0030H

MOVIE,#10000001B;

允许中断

CLRIT0;

IT=00低电平触发方式

MOVP1,#00H

AJMPLOOP

IINT0:

MOVR0,#08H;

中断服务程序

IINT01:

RLCA

DJNZR0,IINT01

RETI

C51语言文件CIINT0.C:

#defineucharunsignedchar

#defineuintunsignedint

voidmain()

IE=0x81;

//允许外部中断0

IT0=0;

//电平方式,低电平有效.当IT0或IT1为1时边沿方式

P1=0x00;

//全亮

/*中断服务子程序*/

voidiint0()interrupt0using0

//interrupt0表示使用外部中断0的输入信号,usingn表示向量地址8n+3

ucharb,c,i,temp;

i++)//右移一位

{

b=temp<

(8-i);

c=temp>

i;

P1=c|b;

(以项目文件CIINT0.HPJ和文件CIINT0.C为例)

5.在“项目菜单”中打开项目文件CIINT0.HPJ。

6.在“文件菜单”中打开源程序文件CIINT0.C。

1.打开Iint0.DSN,在仿真软件PROTEUS中观察此实验。

(方案二)

设计电路和程序,利用两个开关发出中断请求信号,当开关1为高电平发光二极管常亮,为低电平时中断处理程序控制发光二极管依此左移变亮。

当开关2为高电平发光二极管常亮,为低电平时中断处理程序控制发光二极管依此右移变亮。

掌握多个外部中断源技术的基本使用方法及中断程序的编程方法。

在方案一连线的基础上加一跟线:

K02接P3.5(P35)对应单片机CPU上的INT1。

K02在手动高低电平输出区。

P3.5(P35)在仿真主机部件区。

INT01.HPJ/CINT01.HPJ,源程序文件:

INT01.ASM/CINT01.C

汇编语言文件INT01.ASM:

ORG0000H

ORG0013H

AJMPIINT1

MOVIE,#10000101B;

允许中断,开放INT0、INT1

CLRIT0;

低电平触发

CLRIT1;

MOVP1,#00H;

发光二极管常亮

外部中断0

RLCA;

左移

IINT1:

外部中断1

IINT11:

RRCA;

右移

DJNZR0,IINT11

END

C51语言文件CINT01.C:

IE=0x85;

//允许外部中断0和外部中断1,当两个信号都有输入时,外部中断0优先

//电平方式,低电平有效.当IT0或IT1为1时边沿方式

IT1=0;

voidiint1()interrupt2using2

//interrupt2表示使用外部中断1的输入信号,usingn表示向量地址8n+3

i++)//右移一位

voidiint0()interrupt0using0

temp=0xfe;

i++)//左移一位

b=temp>

c=temp<

(以项目文件CINT01.HPJ和文件CINT01.C为例)

5.在“项目菜单”中打开项目文件CINT01.HPJ。

6.在“文件菜单”中打开源程序文件CINT01.C。

1.打开Iint01.DSN,在仿真软件PROTEUS中观察此实验。

实验四定时器/计数器实验

(参考QTH-2008XS系列单片机实验仪说明书1.6节)

(方案一定时器实验)

定时器实验

利用单片机定时器T2进行倒计时,并在双位数码管上显示倒计时间。

掌握单片机定时和中断的编程方法。

1DIN-P3.0(P30)

2CLK接P3.1(P31)

DIN和CLK在液晶显示器下方的串并转换电路,P3.0(P30)和P3.0(P31)在仿真主机部件区。

time.HPJ/Ctime.HPJ,源程序文件:

time.ASM/Ctime.C

汇编语言文件time.ASM:

$NOMOD51

NAMETIME

$NOLIST

$INCLUDE(REG52.INC)

$LIST

BUFFDATA50H;

计数值,每100个10MS即1S

SSBUFDATA51H;

秒缓冲区

ORG002BH;

定时器2中断程序入口

AJMPTIME

;

RCAP2H和RCAP2L重装计数初值0D8F0H=55536D,时钟频率12MHZ,10MS定时

MOVRCAP2H,#0D8H;

RCAP2H→TH2

MOVRCAP2L,#0F0H;

RCAP2L→TL2

MOVTH2,#0D8H;

定时时间=(2^16-T0初值)*时钟周期*12

MOVTL2,#0F0H;

(2^16-OD8F0H)*1/(12*10^6)*12=10MS

MOVIE,#10100000B;

MOVT2CON,#00001000B;

允许重新装入(外部允许标志)

MOVSSBUF,#00H;

两个数码管显示的初值

MOVBUFF,#100;

SETBTR2;

启动定时计数器2

ACALLDSUP

DSUP:

MOVA,SSBUF;

取秒的低位

ANLA,#0FH

ACALLSEND;

显示

MOVA,SSBUF

SWAPA

ANLA,#0FH;

取秒的高位

SEND:

MOVDPTR,#SGTB1

MOVCA,@A+DPTR;

取字符

MOVSBUF,A

JNBTI,$

CLRTI;

发送字符

TIME:

CLREA;

关中断

PUSHPSW;

保护工作寄存器

PUSHACC

PUSH01H

CLRTF2

MOVA,BUFF;

取1%秒BUFF缓冲区的内容

DECA;

1%秒BUFF缓冲区内容减1

MOVBUFF,A;

1%秒BUFF缓冲区内容保存

CJNEA,#00H,TIME2;

是否等于0秒?

不等于转出

MOVA,#64H;

1%秒BUFF缓冲区送100

MOVBUFF,A

MOVA,SSBUF;

取秒SSBUF缓冲区的内容

SUBBA,#01H;

秒单元内容减1

JNBPSW.6,TIME1;

是否有辅助借位,若有CF=1

SUBBA,#06H;

有借位进行十进制调整,#00H-1=#0FFH,#0FFH-6-1=0F8H,CF=1

TIME1:

MOVSSBUF,A

CJNEA,#0F8H,TIME2;

是否等于60秒?

MOVA,#59H;

秒缓冲区送59

MOVSSBUF,A

AJMPTIME2

TIME2:

POP01H;

恢复断点

POPACC

POPPSW

SETBEA;

开中断

/*延时子程序*/

MOVR4,#250;

延时

MOVR5,#250

DJNZR5,$

DJNZR4,DELAY1

/*字符编码*/

SGTB1:

DB03H;

DB9FH;

1

DB25H;

2

DB0DH;

3

DB99H;

4

DB49H;

5

DB41H;

6

DB1FH;

7

DB01H;

8

DB09H;

9

DB0FFH;

C51语言文件Ctime.C:

#inclu

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 研究生入学考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1