大连理工大学:《单片机系统及应用》课程教学资源(PPT课件)第5章 单片机的C语言程序设计

第5章单片机的C语言程序设计
第5章 单片机的C语言程序设计

单片机的编程语言1.常用的编程语言:汇编语言、C语言2.两类语言的特点汇编语言:利用助记符代替2进制数,依靠硬件进行程序设计:C语言:可读性好,易于理解;3.KEILμvision2集成开发环境基于Windows操作系统的MCS-51系列单片机的集成开发环境之一,集项目管理、源程序的编辑、汇编、编译、连接、程序的仿真、运行调试功能于一体,应用广泛
单片机的编程语言 1. 常用的编程语言:汇编语言、C语言 2. 两类语言的特点 汇编语言:利用助记符代替2进制数,依靠硬件进行 程序设计; C语言:可读性好,易于理解; 3. KEIL µVision2集成开发环境 基于Windows操作系统的MCS-51系列单片机的集成开 发环境之一,集项目管理、源程序的编辑、汇编、编译、 连接、程序的仿真、运行调试功能于一体,应用广泛

5.1单片机的C语言51系列单片机C语言:全称C51语言,专用于51系列单片机软件程序开发的一种高级语言。1.C51与汇编语言相比的优势编程效率高:程序的可移植性好、可读性好、可维护性好;便于应用程序的模块化设计:相对于汇编语言简单易学、便于使用。2.C51与ANSIC的差异C51可直接对单片机的硬件进行操作C51增加了数据类型变量的存储模式:C51具有较强的位操作功能:C51对库函数进行了扩充;开发工具齐全
5.1 单片机的C语言 51系列单片机C语言:全称C51语言,专用于51系列单片机 软件程序开发的一种高级语言。 1. C51与汇编语言相比的优势 编程效率高; 程序的可移植性好、可读性好、可维护性好; 便于应用程序的模块化设计; 相对于汇编语言简单易学、便于使用。 2. C51与ANSI C的差异 C51可直接对单片机的硬件进行操作; C51增加了数据类型; 变量的存储模式; C51具有较强的位操作功能; C51对库函数进行了扩充; 开发工具齐全

C51的数据类型和存储类型5.21.C51的数据类型名称长度值域数据类型单字节无符号字符型unsigned char0~255单字节有符号字符型signed char-128~+127双字节无符号整型0~65535unsigned int有符号整型双字节signed int32768~+32767四字节无符号长整型unsigned long0~4294967295四字节有符号长整型signed long-2147483648~+2147483647浮点型四字节float±1.175494E-38~±3.402823E+381位位变量0或1bit单字节sfr0~2558位特殊功能寄存器双字节sfr1616位特殊功能寄存器0~655351位0或1sbit特殊功能位
5.2 C51的数据类型和存储类型 1.C51的数据类型 数据类型 名称 长度 值域 unsigned char signed char unsigned int signed int unsigned long signed long float bit sfr sfr 16 sbit 无符号字符型 单字节 0~255 有符号字符型 单字节 -128~+127 无符号整型 有符号整型 无符号长整型 有符号长整型 浮点型 位变量 8位特殊功能寄存器 16位特殊功能寄存器 特殊功能位 双字节 双字节 四字节 四字节 四字节 1位 单字节 双字节 1位 -32 768~+32 767 0~4 294 967 295 -2 147 483 648~+2 147 483 647 ±1.175 494E-38~±3.402 823E+38 0或1 0~255 0~65 535 0或1 0~65 535

表5-280C51单片机的特殊功能寄存器的地址符号地址符号注释地址注释IPPO并口PO0xD8中断优先控制寄存器0x80P1并口P1PCON0x900x87波特率选择寄存器P2OxA0并口P2SCON0x98串行口控制器P3并口P3OxBO串行数据缓冲器SBUF0x99PSW0x88OxD0程序状态字TCON定时器控制寄存器累加器ACCOxEO0x89TMOD定时器方式选择寄存器BOxFO乘除法寄存器0x8A定时器0低8位TLO堆栈指针SP0x81TL1Ox8B定时器1低8位0x82数据指针低8位0x8C定时器0高8位DPLTHO0x83数据指针高8位Ox8D定时器1高8位DPHTH1IE0xA8中断充允许控制寄存器
表5-2 80C51单片机的特殊功能寄存器的地址 符号 地址 注释 符号 地址 注释 P0 IP P1 PCON P2 SCON P3 SBUF PSW TCON ACC TMOD B TL0 SP TL1 DPL TH0 DPH TH1 IE 0x80 0x90 0xA0 0xB0 0xD0 0xE0 0xF0 0x81 0x82 0x83 0xA8 0xD8 0x87 0x98 0x99 0x88 0x89 0x8A 0x8B 0x8C 0x8D 并口P0 并口P1 并口P2 并口P3 程序状态字 累加器 乘除法寄存器 堆栈指针 数据指针低8位 数据指针高8位 中断允许控制寄存器 中断优先控制寄存器 波特率选择寄存器 串行口控制器 串行数据缓冲器 定时器控制寄存器 定时器方式选择寄存器 定时器0低8位 定时器1低8位 定时器0高8位 定时器1高8位

例5.1:用C51控制并口输出,使并口P0的第0位引脚交替0和1变化#include<reg5l.h)/包含特殊功能寄存器声明头文件sbitP10=Po0特殊功能位声明1/延时函数delay()funsignedinti=o:声明变量i为无符号整形数,初值赋为0while(i<10000)i++:以为循环计数器进行循环//主程序main()while(1)P10=0;//置P1.0=0delay();调用延时函数P10-1;置P1.0=1delay();调用延时函数
例5.1:用C51控制并口输出,使并口P0的第0位引脚交替0和1变化。 #include // 包含特殊功能寄存器声明头文件 sbit P10=P0^0 // 特殊功能位声明 delay( ) // 延时函数 { unsigned int i=0; // 声明变量i为无符号整形数,初值赋为0 while( i<10000 ) i++; // 以i为循环计数器进行循环 } main( ) // 主程序 { while(1) { P10=0; // 置P1.0=0 delay( ); // 调用延时函数 P10=1; // 置P1.0=1 delay( ) ; // 调用延时函数 } }

2.C51中变量的存储类型每一人类型的格式及所在的存储器区如下:C51共有6个存储类型,①data存储类型为什么要使定义在片内RAM的OOH~7FH区用存储类型?处理速度最快的内存空间;bdata存储类型定义在片内RAM的20H~2FH区,即片内RAM的位寻址区,共有16字节128个位,该区可按字节(字节单元的地址是20H~2FH)进行寻址,也可按位(位地址是0OH7FH)进行寻址:idata存储类型3可以进行间接寻址,定义在整个片内RAM区(对80C51而言是00H~FFH的空间):
C51共有6个存储类型,每个类型的格式及所在的存储器区如下: ① data存储类型 定义在片内RAM的00H~7FH区,该区是单片机处理速度最快的内存空 间; ② bdata存储类型 定义在片内RAM的20H~2FH区,即片内RAM的位寻址区,共有16字节 128个位,该区可按字节(字节单元的地址是20H~2FH)进行寻址,也 可按位(位地址是00H~7FH)进行寻址; ③ idata存储类型 可以进行间接寻址,定义在整个片内RAM区(对80C51而言是00H~ FFH的空间); 2.C51中变量的存储类型 为什么要使 用存储类型?

xdata存储类型定义在片外RAM区(最大64K,地址从O00OH~FFFFH):?pdata存储类型也是定义在整个片外RAM区,它按页(256字节/页)寻址,最大256页,按此存储类型定义的变量要比按xdata存储类型定义的变量处理速度快;code存储类型定义ROM区(最大64K,地址从O000OHFFFFH),该区域的变量只能读取不能改写。由此也可以看出,单片机的存储器采用哈佛结构
④ xdata存储类型 定义在片外RAM区(最大64K,地址从0000H~FFFFH); ⑤ pdata存储类型 也是定义在整个片外RAM区,它按页(256字节/页)寻址,最大 256页,按此存储类型定义的变量要比按xdata存储类型定义的变量 处理速度快; ⑥ code存储类型 定义ROM区(最大64K,地址从0000H~FFFFH),该区域的变量只 能读取不能改写。 由此也可以看出,单片机的存储器采用哈佛结构

pdataC51中变量的存储类型OOOOHOOOOHOOHOOOOH工作pdata片内片外256B寄存器ROMROM4个组1FH20HEA=1EA=0eiRpe位寻OFFFHOFFFH和ae址区30Haeeiepx片外用户RAM1000HRAM-片外7FHROM80HFFFFHSFR25616FFFFHFFHcodepdata图5.1典型MCS-51系列单片机的内存组织示意图
C51中变量的存储类型 图5.1 典型MCS-51系列单片机的内存组织示意图 工作 寄存器 4个组 位寻 址区 用户 RAM SFR 00H 1FH 20H 2FH 30H 7FH 80H FFH pdata 256B pdata 256B 片外 RAM 0000H FFFFH bdata data idata xdata 片内 ROM EA=1 0000H 0FFFH 片外 ROM EA=0 0000H 0FFFH 片外 ROM 1000H FFFFH code pdata pdata

声明变量存储类型的格式//在片内RAM区定义整型变量aD int data a;unsignedchardatavector://在片内RAM区定义一个无符号字符型变量//在片内RAM位寻址区定义一个位bit bdata flags;S变量flags①unsignedcharxdata sum=o;//声明无符号字符型变量sum的存储类型为xdata,且赋初值为o,存放在片外数据存储区
声明变量存储类型的格式 ① int data a; //在片内RAM区定义整型变量a ② unsigned char data vector; //在片内RAM区定义一个无符号字 符型变量 ③ bit bdata flags; //在片内RAM位寻址区定义一个位 变量flags ④unsigned char xdata sum=0; //声明无符号字符型变量sum的存 储类型为xdata,且赋初值为0, 存放在片外数据存储区
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 大连理工大学:《单片机系统及应用》课程教学资源(PPT课件)第9章 单片机应用中模拟量的输入输出.pptx
- 大连理工大学:《单片机系统及应用》课程教学资源(PPT课件)第4章 指令系统与汇编程序设计.pptx
- 大连理工大学:《单片机系统及应用》课程教学资源(PPT课件)第1章 单片机基础知识.pptx
- 大连理工大学:《单片机系统及应用》课程教学资源(PPT课件)第2章 单片机硬件结构.pptx
- 大连理工大学:《单片机系统及应用》课程教学资源(教案讲稿,共二十四讲).pdf
- 大连理工大学:《单片机系统及应用》课程教学资源(实验讲义,共十二个).pdf
- 大连理工大学:《C语言程序设计》课程教学课件(PPT讲稿)第23讲 文件深入.pptx
- 大连理工大学:《C语言程序设计》课程教学课件(PPT讲稿)第22讲 文件初步.pptx
- 大连理工大学:《C语言程序设计》课程教学课件(PPT讲稿)第21讲 联合与枚举.pptx
- 大连理工大学:《C语言程序设计》课程教学课件(PPT讲稿)第20讲 结构深入.pptx
- 大连理工大学:《C语言程序设计》课程教学课件(PPT讲稿)第19讲 结构类型.pptx
- 大连理工大学:《C语言程序设计》课程教学课件(PPT讲稿)第18讲 函数再深入.pptx
- 大连理工大学:《C语言程序设计》课程教学课件(PPT讲稿)第17讲 函数深入.pptx
- 大连理工大学:《C语言程序设计》课程教学课件(PPT讲稿)第16讲 函数初步.pptx
- 大连理工大学:《C语言程序设计》课程教学课件(PPT讲稿)第15讲 字符串.pptx
- 大连理工大学:《C语言程序设计》课程教学课件(PPT讲稿)第14讲 指针深入.pptx
- 大连理工大学:《C语言程序设计》课程教学课件(PPT讲稿)第13讲 指针初步.pptx
- 大连理工大学:《C语言程序设计》课程教学课件(PPT讲稿)第12讲 二维数组.pptx
- 大连理工大学:《C语言程序设计》课程教学课件(PPT讲稿)第11讲 一维数组.pptx
- 大连理工大学:《C语言程序设计》课程教学课件(PPT讲稿)第10讲 循环嵌套.pptx
- 大连理工大学:《单片机系统及应用》课程教学资源(PPT课件)第6章 MCS-51系列单片机的中断系统与定时计数器.pptx
- 大连理工大学:《单片机系统及应用》课程教学资源(PPT课件)第8章 单片机应用中的人机接口.pptx
- 大连理工大学:《单片机系统及应用》课程教学资源(PPT课件)第7章 单片机串行通信.pptx
- 大连理工大学:《单片机系统及应用》课程教学资源(PPT课件)第10章 存储器与并行接口扩展.pptx
