实验报告1

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验报告

PIC单片机原理、开发方法及实践

云南大学滇池学院

理工学院

电子信息工程系

陈一凡

20112121006

PIC的实验程序

基于MAPLAB的程序设计

一·实验目的简述:

学会用汇编语言控制单片机完成预定的算法,实现对内部各模块的功能,掌握好其指令系统,实现对内部弄块的控制和I/O操作。基于MPLAB IDE,对PIC系列单片机进行源程序文档的创建、编辑和汇编,以至实现目标程序的模拟运行。二·实验要求:

1.将20H---2FH的数据搬迁到30H起始的数据区;

2.设计一个程序交换两个双字节(16bit)的数据X,Y;

3.设计一个程序,将一个长度为16的无符号8bit数据区中的最大的数据找出,并储存到数据区内;

三·实验原理简述:

应用PIC单片机指令集中的绝大部分指令如:数据传送操作、加减法操作、逻辑操作、移位操作等等都是能够在单个指令周期中完成的特定操作,而这些单一的指令就是实现复杂的计算和控制任务的基本。将若干条指令按照一定的规则和要求排列组合在一起,就构成了可以控制的复杂的,能实现一定功能的程序。

四·实验步骤:

针对问题一:将20H---2FH的数据搬迁到30H起始的数据区;实验思路:依次将20H——2FH中的数据存在相应的数

据区,然后对每一个数据进行相加运算,得到从30H起始的数据。

实验程序: LIST P=16F877A

INCLUDE "P16F877A.INC"

y EQU 0x40

x EQU 0x20

temp EQU 0x41

TEST NOP;空操作

GOTO START;汇编开始

ORG 004h;汇编起始点为004h;

START MOVLW 01H;将01H送到W寄存器中

MOVWF x;将W中的内容送到x 中

MOVLW 02H;将02H送到W寄存器中

MOVWF x+1;将W中的内容送到x+1 中

MOVLW 03H;将03H送到W寄存器中

MOVWF x+2;将W中的内容送到x+2 中

MOVLW 04H;将04H送到W寄存器中

MOVWF x+3;将W中的内容送到x+3 中

MOVLW 05H;将05H送到W寄存器中

MOVWF x+4; 将W中的内容送到x+4 中

MOVLW 06H;将06H送到W寄存器中

MOVWF x+5;将W中的内容送到x+5中MOVLW 07H;将07H送到W寄存器中MOVWF x+6;将W中的内容送到x+6 中MOVLW 08H;将08H送到W寄存器中MOVWF x+7;将W中的内容送到x+7 中MOVLW 09H;将09H送到W寄存器中MOVWF x+8;将W中的内容送到x+8 中MOVLW 0AH;将10H送到W寄存器中MOVWF x+9;将W中的内容送到x+9 中MOVLW 0BH;将11H送到W寄存器中MOVWF x+0AH;将W中的内容送到x+10 中MOVLW 0CH;将12H送到W寄存器中MOVWF x+0BH;将W中的内容送到x+1 1中MOVLW 0DH;将13H送到W寄存器中MOVWF x+0CH;将W中的内容送到x+1 2中MOVLW 0EH;将14H送到W寄存器中MOVWF x+0DH;将W中的内容送到x+1 3中MOVLW 0FH;将15H送到W寄存器中MOVWF x+0EH;将W中的内容送到x+1 4中

MOVLW 10H;将10H送到W寄存器中MOVWF y;将W中的内容送到y中

MOVLW 20H;将20H送到W寄存器中

MOVWF FSR;将W中的内容送到FSR目标寄存器中

LOOP MOVF INDF,W;进入循环

MOVWF TEMP ;将W的内容送到TEMP;

MOVLW 10H ;将10H送到W寄存器中

addwf F SR,F;W寄存器中的内容与FSR寄存器中的内容

MOVF TEMP,W;将TEMP的内容传送到目标寄存器

MOVWF INDF;将W的内容传送至F

MOVLW 10H;将10H送到W寄存器中

SUBWF FSR,F;从立即数中减去W的内容

INCF FSR,F;F递增1

DECFSZ y,F;Y递减1,为0则跳过

GOTO LOOP;跳转到循环

END;程序结束

程序分析:见注释

五·实验操作:

1.新建一个工程:project-new-命名工程-保存到工作目录

2.编写源文件并保存到工作目录下

3.加在原文件到工程中

4.程序环境设置

(1)选择器件

(2)调试环境位设置

5.编译工具的选择

6.编译源文件

实验结果如图所示:

程序执行过程:

执行第一条程序时:

逐条执行程序时:

1.开始执行程序时寄存器里的变量

2.汇编起点寄存器变量

3.第一条汇编程序执行时寄存器变量

4.依次执行到loop循环时的寄存器变量

5.进行相加运算之后的寄存器变量

6.进行相减运算之后的寄存器变量

7.最终执行结果

最终实现从20H到30H的搬迁

针对问题二:设计一个程序交换两个双字节(16bit)的数据X,Y;

实验思路:将x存到z中,将z存到y中,将y存到x中,最终使得双字节数进行交换。

实验程序:

LIST P=16F877A

INCLUDE "P16F877A.INC"

x EQU 0x20

相关文档
最新文档