- 2
- 0
- 约3.62千字
- 约 36页
- 2026-01-30 发布于广东
- 举报
图2.16单步调试方法返回图2.17内存窗口返回图2.18内存窗口查询结果返回图2.19查询中间结果(1)返回图2.20查询中间结果(2)返回2.18051的编程语言C语言作为一种非常方便的语言而得到广泛的应用,C语言程序本身并不依赖于机器硬件系统,基本上不做修改就可根据单片机的不同较快地移植过来。最好的单片机编程者应是由汇编语言转用C语言而不是原来用过标准C语言的人。与汇编语言相比,C语言有如下优点:(1)对单片机的指令系统不要求了解,仅要求对8051的存储器结构有初步了解;(2)对寄存器的分配、不同存储器的寻址及数据类型等细节可由编译器管理;下一页返回2.18051的编程语言
(3)程序有规范的结构,可分为不同的函数,这种方式可使程序结构化;(4)具有将可变的选择与特殊操作组合在一起的能力,改善了程序的可读性;(5)关键字及运算函数可用近似人的思维过程方式使用;(6)编程及程序调试时间显著缩短,从而提高效率;(7)提供的库包含许多标准子程序,具有较强的数据处理能力;(8)已编好的程序容易植入新程序,因为C语言具有方便的模块化编程技术。上一页下一页返回2.18051的编程语言
2.1.1C51编译器各公司的编译器各有特点,其整体特性对照如表2.1所示。C51程序的开发过程如图2.1所示。2.1.2C51程序结构上一页下一页返回2.18051的编程语言
1.C语言程序的一般组成结构上一页下一页返回2.18051的编程语言
2.C51程序的编程要点(1)C语言是由函数构成的。一个C源程序至少包含一个函数(main),也可以包含一个main函数和若干其他函数。(2)一个函数由两部分组成。①函数说明部分。包括函数名、函数类型、函数属性、函数参数(形参)名、形式参数类型。一个函数名后面必须跟一个圆括号,但可以没有参数。上一页下一页返回2.18051的编程语言
②函数体:{a:变量定义;b:执行部分;}(3)一个C程序总是从main函数开始执行,而无论main函数在整个程序中的位置如何。(4)C程序书写格式自由。一行内可以写几个语句,一个语句可以分写在多行上。C程序无行号。上一页下一页返回2.18051的编程语言
(5)每个语句和数据定义的最后必须有一个分号。分号是C语句的必要组成部分。分号不可少,即使是程序中最后一个语句也应包含分号。(6)C语言本身没有输入、输出语句。输入和输出的操作是由函数sanf和printf等函数来完成的。(7)可以用“/*......*/”或“//”对C程序中的任何部分做注释。一个好的、有使用价值的源程序都应加上必要的注释,以增加程序的可读性。上一页下一页返回2.18051的编程语言
2.1.3单片机调试应用下面举两个例子,分别用汇编语言和C语言实现一个相同的功能。例2.1把内部RAM30H中的一个数据转换为压缩的BCD码,百位放入内部31H中,十位、个位放入32H中,编程实现之。(1)汇编语言程序为:(注意:汇编语言程序不区分大小写)Movr0,#30hMova,@r0Movb,#100Divab上一页下一页返回2.18051的编程语言
Mov31h,aMova,bMovb,#10DivabSwapaAdda,bMov32h,aEnd上一页下一页返回2.18051的编程语言
(2)C语言程序为:(注意:C语言程序严格区分大小写)#includereg51.h//对51中寄存器的定义的头函数#includeabsacc.h//对绝对地址的定义的头函数voidmain(){unsignedintdataa[20];a[0]=0xab;a[1]=a[0]/100;//百位DBYTE[0x31]=a[1];//百位存放入内部RAM31H中上一页下一页返回2.18051的编程语言
a[2]=a[0]?a[1]*100;a[3]=a[2]/10;//十位a[4]=a[2]?a[3]*10;//个位a[2]=a[3]4;//左移4次a[2]=a[2]|a[4];//得十位与个位值DBYTE[0x32]=a[2];//十位?个位的BCD码存放入内部RAM32H中while(1);}用Keil软件运行,其结果如图2.2所示。
原创力文档

文档评论(0)