南京邮电大学单片机实验一:使用集成开发环境Keil进行程序开发


 

实验 报 告

实验名称

使用集成开发环境Keil进行程序开发

指导教师

倪晓军

实验类型

课内实验

实验学时

2

实验时间

2017.10.19

 

一、    实验目的和要求

1.      了解汇编语言程序的设计方法,熟悉单片机汇编语言程序设计过程;

2.      了解C语言程序的设计方法,熟悉单片机C语言程序设计过程;

3.      掌握使用集成开发环境Keil进行单片机程序开发的方法;

4.      掌握使用集成开发环境Keil进行单片机程序跟踪调试的方法。

二、    实验要求

1.       使用汇编语言编写程序,完成1+2+3+…+100的计算;

2.       使用C51编写程序,完成1+2+3+…+100的计算,并通过串口输出计算结果;

三、    实验环境(实验设备)

PC机,Keil C51集成开发环境

四、    实验原理及内容

1.编译,链接,调试汇编代码

汇编代码清单:

Sum 1 to 100

 

HB EQU 30H

LB EQU 31H

LP EQU 32H

 

   ORG 0

   JMP main

   ORG 30H

main:  MOV A,#60H

    MOV SP,A

    CLR A

    MOV HB,A

    INC A

    MOV LB,A

    MOV LP,#2

loop: MOV R7,HB

    MOV R6,LB

    MOV R5,#0

    MOV R4,LP

    CALL add16

    MOV HB,R7

    MOV LB,R6

    INC LP

    MOV R0,LP

    CJNE R0,#101,loop

    JMP $

    ORG 0060H

add16:

    CLR C

    MOV A,R4

    ADD A,R6

    MOV R6,A

    MOV A,R5

    ADDC A,R7

    MOV R7,A

    RET

    END main

① 建立目标,选择Atmel>AT89C52设备


② 设置参数

I.设置芯片频率为11.0592 MHz并勾选Use On-chip Rom(0x0-0x1FFF)


II.勾选Output中的 Create HEX file


③ .添加源程序到 Source Group


④ .编译链接查看结果


⑤ .调试


⑥ .查看内存


2.编译,链接,调试C语言代码:

C语言代码清单:

#include

#include

#define OSC11059200

#define BAUD9600

 

int main(void)

{

    int i, result = 0;

    SCON = 0x50;

    TMOD = 0x20;

    TH1 = TL1 = 256 - (OSC / 12 / 16 / BAUD);

    TR1 = 1;

    TI = 1;

    for (i = 1; i <= 100; i++)

    {

       result += i;

    }

    printf("%d\n", result);

    while (1);

}

① 建立目标,选择Atmel>AT89S51设备

② 设置参数

I.设置芯片频率为11.0592MHz,并勾选Use On-chip ROM(0x0-0xFFF)

II.勾选Output中的Create HEX file

③ 添加STARTUP.A51和C语言代码程序

④ 编译运行结果

⑤ 调试并查看变量变化情况

五、    实验小结(包括问题和解决方法、心得体会、意见与建议等)

这次实验学习使用了Keli µVision软件开发单片机程序,由于之前没有使用过,所有不大熟悉,也出了很多的问题。调试C语言程序的时候,发现result的值一直是把变量i的值附上而没有累加。在同学的帮助下,发现是OSC定义没有和之前设置的芯片频率一致,导致不同步,改成了芯片频率之后终于看到了预期的结果。

第一次尝试单步调试,能观察到内存中每一个单元的变化,感到单片机系统复杂中的严谨。在汇编语言调试和C语言调试的对比中,体会到汇编的繁琐和高级编程语言对编程效率的提高。

 

  

你可能感兴趣的:(单片机)