单片机的C语言程序设计及调试课件

上传人:29 文档编号:241694594 上传时间:2024-07-16 格式:PPT 页数:22 大小:212.57KB
返回 下载 相关 举报
单片机的C语言程序设计及调试课件_第1页
第1页 / 共22页
单片机的C语言程序设计及调试课件_第2页
第2页 / 共22页
单片机的C语言程序设计及调试课件_第3页
第3页 / 共22页
点击查看更多>>
资源描述
第三章第三章 单片机的单片机的 C C语言程序设计及调试语言程序设计及调试第三章 单片机的 C语言程序设计及调试C C语言言编程程特特点点:编写写简单、直直观易易读、便便于于维护、通通用用性性好好、可可移移植性植性强、更符合人、更符合人们的思考的思考习惯但同学们一定会有这样的疑问,我们学过了C语言,该如何用它操作单片机呢?C语言编程特点:编写简单、直观易读、便于维护、通用性好、可移不不要要着着急急,接接下下来来,让我我们一一起起学学习单片片机机的的C C语言言程程序序设计与与调试。限限于于篇篇幅幅,本本章章不不介介绍标准准C C语言言的的语句句及及语法法规则,只只介介绍C C语言言在在IAP15W4K58S4IAP15W4K58S4单片片机机程程序序设计中中的的特特殊殊性性问题,包包括括C51C51编程程语言言(简称称C51C51)与与ANSI ANSI C C的的区区别、单片片机机C C语言程序的言程序的设计等内容。等内容。不要着急,接下来,让我们一起学习单片机的C语言程序设计与调试关系运算符关系运算符关关系系运运算算符符用用于于比比较两两个个常常数数或或者者表表达达式式的的大大小小。关关系系运运算算的的结果果只只能能是是0 0或或1 1。关关系系运运算算符符的的值为真真时,结果果值为1 1;关系运算符的;关系运算符的值为假假时,结果果值为0 0。=!=!=特特别注注意意,判判断断两两个个常常数数或或者者表表达达式式相相等等时,使使用用“=”,不不要要使使用用单个个的的“=”。否否则,判判断断两两个个数数是是否否相相等等就就变成了成了赋值语句句。关系运算符关系运算符用于比较两个常数或者表达式的大小。关系运逻辑运算符运算符逻辑运运算算符符包包括括与与(&)、或或(|)、非非(!)三三种种,用用于于对包含关系运算符的表达式包含关系运算符的表达式进行合并或取非。行合并或取非。使使用用逻辑运运算算符符的的表表达达式式,返返回回0 0表表示示“假假”,返返回回1 1表表示示“真真”。逻辑运算符逻辑运算符包括与(&)、或(|)、非(!)三种位运算符位运算符按按位位与与(&)、按按位位或或(|)、按按位位异异或或()、取取反反()、左移(左移()应用:应用:按位与按位与运算通常用来运算通常用来对某些某些位清位清0 0按位或按位或运算通常用来运算通常用来对某些某些位置位置1 1按位异或按位异或运算通常用来运算通常用来对某些某些位取反位取反位运算符按位与(&)、按位或(|)、按位异或()、取反(预处理理-宏定宏定义(define)(define)在在语言言源源程程序序中中允允许用用一一个个标识符符来来表表示示一一个个字字符符串串,称称为宏。宏。无参无参宏定宏定义的一般形式如下:的一般形式如下:#define#define 标识符标识符 字符串字符串带参参宏定宏定义的一般形式如下:的一般形式如下:#define#define 宏名宏名(形参表形参表)字符串字符串如要如要终止宏定止宏定义,可使用,可使用#undef#undef命令。命令。预处理-宏定义(define)在语言源程序中允许用一个标识预处理理-文件包含(文件包含(includeinclude)文件包含的一般形式如下:文件包含的一般形式如下:#include#include 文件名文件名 你知道吗?包包含含命命令令中中的的文文件件名名可可以以用用双双引引号号括括起起来来,也也可可以以用用尖尖括括号号括起来。括起来。两者有何不同呢?两者有何不同呢?#include math.h#include math.h#include#include 预处理-文件包含(include)文件包含的一般形式如下:预处理理-条件条件编译(1 1)条条件件编译就就是是按按不不同同的的条条件件去去编译不不同同的的程程序序部部分分,从从而而产生不同的目生不同的目标代代码文件。文件。1 1)第一种形式)第一种形式#ifdef#ifdef 标识符标识符 程序段程序段1 1#else#else 程序段程序段2 2#endif#endif 预处理-条件编译(1)条件编译就是按不同的条件去编译不同的程预处理理-条件条件编译(2 2)2 2)第二种形式)第二种形式#ifndef#ifndef 标识符标识符 程序段程序段1 1#else#else 程序段程序段2 2#endif#endif预处理-条件编译(2)2)第二种形式预处理理-条件条件编译(3 3)3 3)第二种形式)第二种形式#if#if 常量表达式常量表达式 程序段程序段1 1#else#else 程序段程序段2 2#endif#endif预处理-条件编译(3)3)第二种形式KeilC51KeilC51扩展关展关键字字C51C51有以下有以下1919个个扩展关展关键字:字:_at_at_、sbitsbit、sfrsfr、bitbit、sfr16sfr16、idataidata、bdatabdata、xdataxdata、pdatapdata、datadata、codecode、alienalien、smallsmall、compactcompact、largelarge、usingusing、reentrantreentrant、interruptinterrupt、_task_task_Keil C51扩展关键字C51有以下19个扩展关键字:常常见的关的关键字字-内存区域的指定内存区域的指定1 1)程序存)程序存储器器codecode:程序存程序存储区。可以使用区。可以使用codecode定定义表格常数表格常数2 2)内部)内部RAMRAMdatadata:直直接接寻址址区区,内内部部RAMRAM的的低低128128字字节,地地址址范范围为00H00H7FH7FHidataidata:间接接寻址址区区,包包括括整整个个内内部部RAMRAM区区256256字字节,地址范地址范围为00H00H0FFH0FFHbdatabdata:可位可位寻址区,地址范址区,地址范围为20H20H2FH2FH常见的关键字-内存区域的指定1)程序存储器常常见的关的关键字字-内存区域的指定内存区域的指定3 3)外部数据存)外部数据存储器器xdataxdata:可可指指定定多多达达64KB64KB的的外外部部直直接接寻址址区区,地地址址范范围0000H0000H0FFFFH0FFFFH4 4)特殊功能寄存器()特殊功能寄存器(SFRSFR)sfrsfr:字字节寻址址 sfr sfr_name=int_constant;sfr sfr_name=int_constant;sfr16sfr16:字字寻址址 sfr16 DPTR=0 x82;sfr16 DPTR=0 x82;sbitsbit:位:位寻址址 sbit bitname=sfr_namebit_number;sbit bitname=sfr_namebit_number;常见的关键字-内存区域的指定3)外部数据存储器常常见的关的关键字字-变量或数据量或数据类型型C51C51提供以下几种提供以下几种扩展数据展数据类型:型:bitbit:位位变量,量,值为0 0或或1 1sbitsbit:从字从字节中定中定义的位的位变量(量(0 0或或1 1)sfrsfr:sfrsfr字字节地址(地址(0 x800 x800 xff0 xff)sfr16sfr16:sfrsfr字字地地址址(0 x800 x800 xff0 xff,其其实是是占占用用两两个个连续的地址)的地址)其其余余的的数数据据类型型如如charchar、enumenum、shortshort、intint、longlong、float float 等与等与ANSI CANSI C相同相同常见的关键字-变量或数据类型C51提供以下几种扩展数据类型:常常见的关的关键字字-KeilC51-KeilC51指指针Keil Keil C51C51支支持持一一般般指指针(Generic Generic PointerPointer)和和存存储器器指指针(Memory Memory Specific Specific PointerPointer)。一一般般指指针的的声声明明和和使使用用均均与与标准准C C相同,同相同,同时还可以可以说明指明指针的存的存储类型。型。例如:例如:unsigned char xdata*pt;unsigned char xdata*pt;/pt/pt本身依存本身依存储模式存放模式存放unsigned char xdata*data pt;unsigned char xdata*data pt;/pt/pt被保存在内部被保存在内部RAMRAM中中unsigned char xdata*xdata pt;unsigned char xdata*xdata pt;/pt/pt被保存在外部被保存在外部RAMRAM中中常见的关键字-Keil C51指针Keil C51支持一般指常常见的关的关键字字-KeilC51-KeilC51指指针除除了了和和标准准C C语言言一一样使使用用指指针外外,指指针还可可以以用用来来访问外外部并行部并行扩展的器件。展的器件。例例如如:为了了方方便便地地访问外外部部存存储器器及及I/OI/O端端口口,在在C51C51中中的的absacc.habsacc.h头文文件件做做了了如如下下定定义,利利用用这些些定定义可可以以方方便便地地访问外部外部I/OI/O端口。端口。#define CBYTE(unsigned char volatile code *)0)#define CBYTE(unsigned char volatile code *)0)#define DBYTE(unsigned char volatile data *)0)#define DBYTE(unsigned char volatile data *)0)#define PBYTE(unsigned char volatile pdata*)0)#define PBYTE(unsigned char volatile pdata*)0)#define XBYTE(unsigned char volatile xdata*)0)#define XBYTE(unsigned char volatile xdata*)0)常见的关键字-Keil C51指针除了和标准C语言一样使用指KeilC51KeilC51函数函数-中断函数声明中断函数声明中中断断函函数数通通过使使用用interruptinterrupt关关键字字和和中中断断号号(0 03131)来来声明。声明。中中 断断 号号 告告 诉 编 译 器器 中中 断断 服服 务 程程 序序 的的 入入 口口 地地 址址。IAP15W4K58S4IAP15W4K58S4单片片机机的的中中断断号号及及中中断断服服务程程序序入入口口地地址址见教材教材5858页表表3-33-3。中中断断函函数数具具体体是是哪哪个个中中断断的的函函数数,与与中中断断号号有有关关,而而与与函函数名无关数名无关。Keil C51函数-中断函数声明中断函数通过使用interKeilC51KeilC51函数函数-中断函数声明中断函数声明例如:例如:串行口串行口1 1的中断函数可以声明如下的中断函数可以声明如下void UART1_ISR(void)interrupt 4 using 1void UART1_ISR(void)interrupt 4 using 1/*/*中断服务程序的代码中断服务程序的代码*/*/Keil C51函数-中断函数声明例如:串行口1的中断函数可【例3-1】编程程实现通通过延延时函函数数,由由P2.0P2.0输出出方方波波信信号号,并通并通过示波器示波器观察程序察程序输出波形的周期。出波形的周期。#include#include“stc15.hstc15.h”sbit P20=P20;sbit P20=P20;/定义定义P2.0P2.0引脚引脚void delay(unsigned long cnt);void delay(unsigned long cnt);/延时函数声明延时函数声明void main(void)void main(void)P2M1=0;P2M1=0;P2M0=0;P2M0=0;/将将整整个个P2P2口口所所有有口口线线设设置置为为准准双双向向口口模式模式P20=1;P20=1;【例3-1】编程实现通过延时函数,由P2.0输出方波信号【例3-1】while(1)while(1)/主程序循环主程序循环 delay(60000);delay(60000);P20=P20;P20=P20;void delay(unsigned long cnt)void delay(unsigned long cnt)/延时函数延时函数 while(cnt0)cnt-;while(cnt0)cnt-;【例3-1】IAP15W4K58S4IAP15W4K58S4单片机片机C C语言程序言程序调试编写写好好程程序序代代码并并编译成成功功(没没有有错误和和警警告告)后后,可可以以使用集成开使用集成开发环境(境(IDEIDE)对单片机程序片机程序进行行调试。调试的的方方法法分分为两两种种,一一种种是是使使用用开开发环境境本本身身提提供供的的软件模件模拟仿真器仿真器调试;另一种是使用;另一种是使用仿真器仿真仿真器仿真调试。IAP15W4K58S4单片机C语言程序调试编写好程序代码
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 教学培训


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!