单片机的C语言程序设计及调试_第1页
单片机的C语言程序设计及调试_第2页
单片机的C语言程序设计及调试_第3页
单片机的C语言程序设计及调试_第4页
单片机的C语言程序设计及调试_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第三章单片机的

C语言程序设计及调试单片机的C语言程序设计及调试全文共22页,当前为第1页。C语言编程特点:编写简单、直观易读、便于维护、通用性好、可移植性强、更符合人们的思考习惯但同学们一定会有这样的疑问,我们学过了C语言,该如何用它操作单片机呢?单片机的C语言程序设计及调试全文共22页,当前为第2页。不要着急,接下来,让我们一起学习单片机的C语言程序设计与调试。限于篇幅,本章不介绍标准C语言的语句及语法规则,只介绍C语言在IAP15W4K58S4单片机程序设计中的特殊性问题,包括C51编程语言(简称C51)与ANSIC的区别、单片机C语言程序的设计等内容。单片机的C语言程序设计及调试全文共22页,当前为第3页。关系运算符关系运算符用于比较两个常数或者表达式的大小。关系运算的结果只能是0或1。关系运算符的值为真时,结果值为1;关系运算符的值为假时,结果值为0。<><=>===!=特别注意,判断两个常数或者表达式相等时,使用“==”,不要使用单个的“=”。否则,判断两个数是否相等就变成了赋值语句。单片机的C语言程序设计及调试全文共22页,当前为第4页。逻辑运算符逻辑运算符包括与(&&)、或(||)、非(!)三种,用于对包含关系运算符的表达式进行合并或取非。使用逻辑运算符的表达式,返回0表示“假”,返回1表示“真”。单片机的C语言程序设计及调试全文共22页,当前为第5页。位运算符按位与(&)、按位或(|)、按位异或(^)、取反(~)、左移(<<)和右移(>>)应用:按位与运算通常用来对某些位清0按位或运算通常用来对某些位置1按位异或运算通常用来对某些位取反单片机的C语言程序设计及调试全文共22页,当前为第6页。预处理-宏定义(define)在C语言源程序中允许用一个标识符来表示一个字符串,称为宏。无参宏定义的一般形式如下:#define标识符字符串带参宏定义的一般形式如下:#define宏名(形参表)字符串如要终止宏定义,可使用#undef命令。单片机的C语言程序设计及调试全文共22页,当前为第7页。预处理-文件包含(include)文件包含的一般形式如下:#include"文件名"◎你知道吗?包含命令中的文件名可以用双引号括起来,也可以用尖括号括起来。两者有何不同呢?#include"math.h"#include<math.h>单片机的C语言程序设计及调试全文共22页,当前为第8页。预处理-条件编译(1)条件编译就是按不同的条件去编译不同的程序部分,从而产生不同的目标代码文件。1)第一种形式 #ifdef标识符 程序段1 #else 程序段2 #endif

单片机的C语言程序设计及调试全文共22页,当前为第9页。预处理-条件编译(2)2)第二种形式

#ifndef标识符 程序段1 #else 程序段2 #endif单片机的C语言程序设计及调试全文共22页,当前为第10页。预处理-条件编译(3)3)第二种形式 #if常量表达式 程序段1 #else 程序段2 #endif单片机的C语言程序设计及调试全文共22页,当前为第11页。KeilC51扩展关键字C51有以下19个扩展关键字:_at_、sbit、sfr、bit、sfr16、idata、bdata、xdata、pdata、data、code、alien、small、compact、large、using、reentrant、interrupt、_task_单片机的C语言程序设计及调试全文共22页,当前为第12页。常见的关键字-内存区域的指定1)程序存储器code:程序存储区。可以使用code定义表格常数2)内部RAMdata:直接寻址区,内部RAM的低128字节,地址范围为00H~7FHidata:间接寻址区,包括整个内部RAM区256字节,地址范围为00H~0FFHbdata:可位寻址区,地址范围为20H~2FH单片机的C语言程序设计及调试全文共22页,当前为第13页。常见的关键字-内存区域的指定3)外部数据存储器xdata:可指定多达64KB的外部直接寻址区,地址范围0000H~0FFFFH4)特殊功能寄存器(SFR)sfr:字节寻址sfrsfr_name=int_constant;sfr16:字寻址sfr16DPTR=0x82;sbit:位寻址

sbitbitname=sfr_name^bit_number;单片机的C语言程序设计及调试全文共22页,当前为第14页。常见的关键字-变量或数据类型C51提供以下几种扩展数据类型:bit:位变量,值为0或1sbit:从字节中定义的位变量(0或1)sfr:sfr字节地址(0x80~0xff)sfr16:sfr字地址(0x80~0xff,其实是占用两个连续的地址)其余的数据类型如char、enum、short、int、long、float等与ANSIC相同单片机的C语言程序设计及调试全文共22页,当前为第15页。常见的关键字-KeilC51指针KeilC51支持一般指针(GenericPointer)和存储器指针(MemorySpecificPointer)。一般指针的声明和使用均与标准C相同,同时还可以说明指针的存储类型。例如:unsignedcharxdata*pt;

//pt本身依存储模式存放unsignedcharxdata*datapt;

//pt被保存在内部RAM中unsignedcharxdata*xdatapt;

//pt被保存在外部RAM中单片机的C语言程序设计及调试全文共22页,当前为第16页。常见的关键字-KeilC51指针除了和标准C语言一样使用指针外,指针还可以用来访问外部并行扩展的器件。例如:为了方便地访问外部存储器及I/O端口,在C51中的absacc.h头文件做了如下定义,利用这些定义可以方便地访问外部I/O端口。#defineCBYTE((unsignedcharvolatilecode*)0)#defineDBYTE((unsignedcharvolatiledata*)0)#definePBYTE((unsignedcharvolatilepdata*)0)#defineXBYTE((unsignedcharvolatilexdata*)0)单片机的C语言程序设计及调试全文共22页,当前为第17页。KeilC51函数-中断函数声明中断函数通过使用interrupt关键字和中断号(0~31)来声明。中断号告诉编译器中断服务程序的入口地址。IAP15W4K58S4单片机的中断号及中断服务程序入口地址见教材58页表3-3。中断函数具体是哪个中断的函数,与中断号有关,而与函数名无关。单片机的C语言程序设计及调试全文共22页,当前为第18页。KeilC51函数-中断函数声明例如:串行口1的中断函数可以声明如下 voidUART1_ISR(void)interrupt4[using1] { /*中断服务程序的代码*/ }单片机的C语言程序设计及调试全文共22页,当前为第19页。【例

3-1】

编程实现通过延时函数,由P2.0输出方波信号,并通过示波器观察程序输出波形的周期。#include“stc15.h”

sbitP20=P2^0; //定义P2.0引脚voiddelay(unsignedlongcnt); //延时函数声明voidmain(void){P2M1=0;P2M0=0; //将整个P2口所有口线设置为准双向口模式 P20=1;单片机的C语言程序设计及调试全文共22页,当前为第20页。【例

3-1】

while(1)//主程序循环

{delay(60000);P20=~P20;}}voiddelay(unsignedlongcnt) //延时函数{while(cnt>0)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论