PIC单片机实验报告Word文档下载推荐.docx

上传人:b****4 文档编号:18021104 上传时间:2022-12-12 格式:DOCX 页数:10 大小:180.24KB
下载 相关 举报
PIC单片机实验报告Word文档下载推荐.docx_第1页
第1页 / 共10页
PIC单片机实验报告Word文档下载推荐.docx_第2页
第2页 / 共10页
PIC单片机实验报告Word文档下载推荐.docx_第3页
第3页 / 共10页
PIC单片机实验报告Word文档下载推荐.docx_第4页
第4页 / 共10页
PIC单片机实验报告Word文档下载推荐.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

PIC单片机实验报告Word文档下载推荐.docx

《PIC单片机实验报告Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《PIC单片机实验报告Word文档下载推荐.docx(10页珍藏版)》请在冰豆网上搜索。

PIC单片机实验报告Word文档下载推荐.docx

(2)编程思路

通过对TRISD赋值“00H”,将PORTD全部设置为输出,首先PORTD赋值为01H,调用延时子程序。

然后PORTD赋值分别为02H--04H--08H--10H--20H--40H--80H,并在这八个数中循环。

流程图:

(3)代码、仿真:

(略)

五,心得与体会:

本实验比较简单,与第二个实验相似,不同的是给PORTD值的时候,一个是分别赋值,而另一个是通过查表的方法。

所以仿真与代码省略。

 

实验二

(1)学习子程序的调用如:

延时和查表子程序;

(2)锻炼编程的思想和提高编程的能力;

(3)了解程序运行过程内存参数的变化情况;

利用延时和查找表的方法,实现8盏LED灯的循环点亮,每次点亮一盏,向左或向右循环点亮,延时时间适当即可。

实验必须达到功能正确,程序编写清晰,而且有适当的注释。

1.设计方案原理与思路:

通过查表,将查表之后的结果送到输出端D口,再循环跳转,让LED灯循环点亮。

2.设计流程图:

3.程序代码:

LISTP=18F452

INCLUDE"

P18F452.INC"

ABC EQU 20H

;

―――――――――――――――――――――

    主程序

ORG0000H

NOP

BSFSTATUS,5;

选择体1

MOVLW00H

MOVWFTRISD ;

D口为输出

BCFSTATUS,5;

返回体0

MAINMOVLW00H

MOVWFABC

MOVWFPORTD;

D口清0

STMOVFABC,W

CALLSHUZH;

调用查表子程序

MOVWF PORTD;

D口显示

CALLDELAY;

延时

INCFABC,F

INCFABC,F

BTFSSABC,4;

循环设置

GOTO  ST

GOTO  MAIN

―――――――――――――――――

SHUZHADDWFPCL,F;

表子程序

RETLW01H

RETLW02H

RETLW04H

RETLW08H

RETLW10H

RETLW20H

RETLW40H

RETLW80H

DELAYNOP;

延时子程序

NOP

RETURN

――――――――――――――――――

END

4.实验步骤

1.在软件上编写代码

2.编译与仿真

3.仿真与结果

5.验证结果的说明

当采用单步运行时,PORT的值每一步由当前状态跳到下一状态,且根据查表子程序里设计的返回值来顺序显示。

实验结果与实验要求一致。

本实验成功

五、问题讨论

 在这次的实验过程中,一开始出现了一些问题,也就是书本上学的单片机“体选”指令是BCF STATUS,RP0,但是在P18F452的体选应该是BCF STATUS,5还有就是取指令和执行,共两个指令时间,开始时按一条的时间去运行,故达不到预定的结果。

在修改后,程序成功的执行并给出了正确的结果。

实验三

一、实验目的

(1)了解TIMER0的定时功能及相关寄存器

(2)利用TIMER0实现定时溢出中断

二,实验内容

利用TIMER0实现定时计数,并将计数结果写入PORTD端口控制LED灯,以二进制计数方式进行点亮。

定时时间适当即可。

三,实验要求

必须能够正确找到并设置与TIMER0相关的寄存器,将TIMER0配置为8bits的定时器。

并通过相关设置另TIMER0利用片内时钟进行计时,溢出时申请中断,完成二进制的一次计数并写入PORTD,中断返回后进入下一次定时的等待。

四,实验内容与步骤

用TMR0L定时器进行定时计数,当TMR0L溢出,中断标志位自动置位,自动跳转到入口地址为0008H的中断服务子程序,中断服务子程序为二进制的一次计数。

从而完成实验。

2..设计流程图

3.程序代码

LISTP=18F452

INCLUDE"

TMR0BEQU0C3H

COUNTEREQU20H

ORG0000H

NOP

GOTOMAIN

----------------------------------------------------------

中断服务子程序

------------------------------------------------------------

ORG0008H

BCFINTCON,T0IF;

将中断标志位寄存器清0

DECFSZCOUNTER;

COUNTER寄存器自减1,为0则间跳

GOTORT

INCFPORTD

MOVLW01H

MOVWFCOUNTER

RTNOP

BANKSELTMR0L

MOVLWTMR0B

MOVWFTMR0L

RETFIE

主程序

MAINNOP

BANKSELTRISD;

选择TRISD寄存器所在的体

MOVLW00H

MOVWFTRISD;

设置PORTD为输出

MOVLW0C0H     ;

使能中断,设置为8位的定时器    

MOVLW T0CON  

MOVLWB'

10100000'

MOVWFINTCON

CLRFPORTD;

输出端清0

MOVLWTMR0B;

将时间常数0FF送到TMR0L

MOVWFTMR0L;

开始定时

LOOPGOTOLOOP

END

4.仿真,观察相关寄存器

4、实验结果

当TMR0L定时器的计数溢出后,中断标志位自动置位,之后开始中断服务子程序,直到COUNTER的值为0时,PORTD的值自加1

5、问题讨论

在此次实验中,中断入口为0008H,而不是0004H,且定时器的相关寄存器的名字与课本上的有出入,需由实际使用芯片在数据手册决定。

通过这次实验,明白了对一片芯片的使用,需根据它的数据手册来使用,每块芯片都有自己的特征。

本次实验主要是对定时器相关寄存器设置,例如设置T0CON来实现TMR0L使用内部时钟、边沿触发,分频等。

只要了解这些寄存器,完成实验就不是难事,但是由于书本上学的是PICF877的单片机,与上机选用的18F452有些不一样,所以开始编程是时候出现了错误,直到查阅芯片手册才知道。

所以,我们应该学会举一反三。

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

当前位置:首页 > 求职职场 > 面试

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

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