KEIL C51的应用 C语言是一种编译型程序设计语言,它兼顾了多种高级语言的特点,并具备汇编语言的功能。目前,使用C语言进行程序设计已经成为软件开发的一个主流。用C语言开发系统可以大大缩短开发周期,明显增强程序的可读性,便于改进和扩充。而针对8051的C语言日趋成熟,成为了专业化的实用高级语言。

Slides:



Advertisements
Similar presentations
现代电子技术实验 ——综合实验之单片机部分
Advertisements

第7章 AT89S51单片机的 串行口 1.
2017/3/22 如何用C 来完成SN8系列芯片的程序设计 2017/3/22.
本章内容: 中断的概念 MCS-51单片机中断系统 外部事件中断及应用
第四章 指令系统及汇编语言程序设计.
任务1: 点亮你的LED----初识单片机.
8051 指令.
第四章 指令系统及汇编语言程序设计.
本章分为四节,主要介绍: 4.1 程序编制的方法和技巧 4.2 源程序的编辑和汇编 4.3 基本程序结构 4.4 常用程序举例.
项目2 2个LED发光二极管控制 知识与能力目标 熟悉单片机的I/O口功能与特性。
本章小结 C51单片机指令系统概述 C51单片机寻址方式 C51单片机指令系统
单片机原理与应用.
第2章 MCS-51单片机指令系统与汇编语言程序设计
報告者:朱耿育 紀翔舜 組員:詹以群 張永傑 指導老師:梁新潁
复 习 一. 计算机中的数和编码 1. 2,10,16进制数及其之间的转换(整数) 按权展开,除x取余 2
单片机应用技术 项目一 循环彩灯装置 第6讲 指令功能及汇编语言程序设计(一) 《单片机应用技术》精品课程组 湖北职业技术学院机电工程系.
本章内容: 中断的概念 MCS-51单片机中断系统 外部事件中断及应用
第8章 模拟接口 8.1 模拟接口概述 8.2 DAC及其接口 8.3 ADC及其接口.
第二部分 微机原理 第3章 MCS-51的 指令系统 主讲教师:喻红.
一、任务描述 二、任务分析 三、任务演示 四、相关知识 五、任务布置. 一、任务描述 二、任务分析 三、任务演示 四、相关知识 五、任务布置.
第3章 AT89C51指令系统 3.1基本概念内部结构和引脚功能 指令、指令系统、机器代码
单片机原理及应用 MCS-51系列单片机的基本硬件结构 MCS-51指令系统 MCS-51单片机的系统扩展与应用.
第五章 单片机的C语言程序设计及仿真调试.
第七章 MCS-51并行口的扩展 MCS51单片机内部有4个并行口,当内部并行口不够用时可以外扩并行口芯片。可外扩的并行口芯片很多,分成2类:不可编程的并行口芯片(74LS3734和74LS245)和可编程的并行口芯片(8255)。 7.1 不可编程并行口芯片的扩展 7.2 可编程并行口芯片的扩展.
第五章 单片机的C语言程序设计及仿真调试.
单片机原理及应用 ——基于Proteus与Keil C 哈工大出版社
第2章 单片机的结构原理与 简单应用 (课时:10学时).
本 章 重 点 单片机的简单I/O扩展 8255A可编程并口芯片 8279可编程键盘/显示器接口芯片 单片机键盘接口技术
单片机原理 单 片 机 单片机接口技术 单片机应用技术.
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
第三章 指令系统.
第3章 指令系统及程序设计举例 3.1 指令格式与寻址方式 一、指令格式 1. 指令 操作码 目标操作数,源操作数
AVR单片机软硬件设计教程-入门篇 ——学单片机就要学AVR!
周国运 Keil C51应用 主 页:
第二章 Java语言基础.
逆向工程-汇编语言
6.1 输入/输出 6.2 CPU与外设数据传送方式 6. 3 MCS-51中断系统 6. 4 中断应用举例
本 章 重 点 单片机的结构特点 单片机的存储器特点 I/O端口的特点 CPU时序 课时安排:3个课时.
本 章 重 点 单片机的C程序设计基础 单片机内部资源的C编程 课时安排:6个课时.
電子音樂 通訊系 B 楊穎穆.
第四章 指令系统及汇编语言程序设计.
第1章 概述 本章要点: C语言程序结构和特点 C语言程序的基本符号与关键字 C语言程序的编辑及运行 学习方法建议:
C语言程序设计 主讲教师:陆幼利.
第4章 80C51系列指令系统 教学目的:熟悉80C51系列单片机的寻址方式及 每一种寻址方式对应的寻址空间;掌 握每一条指令功能。
本章内容 MCS-51单片机指令系统的格式 MCS-51单片机寻址方式 指令系统的分析
单片机原理与应用 主讲人:张荣刚 福建师范大学福清分校.
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年11月13日.
C语言程序设计 李祥 QQ:
3.1 指令系统简介 一、几个概念 二、汇编语言指令格式 三、指令的分类 四、指令的符号说明 主讲:吴政江 下一页.
<编程达人入门课程> 本节内容 为什么要使用变量? 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ:
第三章 计算机系统的组成与工作原理.
第二章 类型、对象、运算符和表达式.
单片机原理及应用 实践部分 主讲人:刘 强 四川工商学院单片机教学团队 单片机原理及应用 实践部分 主讲人:刘 强
第二章 基本数据类型 ——数据的表示.
四、手工汇编 完成汇编的方法有两种:手工汇编和汇编程序汇编 1.手工汇编步骤 A
本节内容 C语言的汇编表示 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
第二节 C语言的特点.
3. 逻辑运算指令 A、简单逻辑操作指令 CLR A. (不影响CY、AC、 OV标志) CPL A
单片机原理及应用 (C语言版) 第8章 单片机系统扩展
单片机应用技术 (C语言版) 第4章 C51程序设计入门
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
循环程序设计 在程序中包含重复执行的程序段称为循环程序设计。循环程序可以使程序结构性强、可读性好,从而大大提高了程序质量。
第4章 汇编语言程序设计基础 §4-1 汇编语言程序设计基本概念 §4-2 汇编语言程序设计 §4-3 C语言程序设计.
基本知识 数据类型、变量、常量、运算符.
4.3 汇编语言程序设计 顺序程序设计 顺序程序设计是最基本的程序设计。它是按照指令排列的先后顺序依次执行,每条指令都必须执行,且只执行一遍。顺序程序设计一般比较单一、简单,常常作为复杂程序的一部分。
单片机应用技术 (C语言版) 第3章 MCS-51指令系统及 汇编程序设计
第二章 MCS-51单片机程序设计 第一章 8086程序设计 第三章 微机基本系统的设计 第四章 存贮器与接口 第五章 并行接口
第4章 MCS-51汇编语言程序设计 教学基本要求: (1)、了解MCS-51汇编语言程序设计的特点;
第1章 微型计算机基础.
主讲教师:廉哲 QQ: 电话: 办公室:综合楼C318
Presentation transcript:

KEIL C51的应用 C语言是一种编译型程序设计语言,它兼顾了多种高级语言的特点,并具备汇编语言的功能。目前,使用C语言进行程序设计已经成为软件开发的一个主流。用C语言开发系统可以大大缩短开发周期,明显增强程序的可读性,便于改进和扩充。而针对8051的C语言日趋成熟,成为了专业化的实用高级语言。

㈠ C-51的特点 C语言作为一种非常方便的语言而得到广泛的支持,国内最通用的是Keil C51.

C-51与ASM-51相比,有如下优点: 1.  对单片机的指令系统不要求了解,仅要求对8051 的存贮器结构有初步了解; 2.  寄存器分配、不同存贮器的寻址及数据类型等细节可由编译器管理; 3.  程序有规范的结构,可分成不同的函数,这种方式可使程序结构化; 4.  具有将可变的选择与特殊操作组合在一起的能力,改善了程序的可读性; 5.  提供的库包含许多标准子程序,具有较强的数据处理能力; 6.  由于具有方便的模块化编程技术,使已编好程序可容易地移植;

C51存储类型 存储类型 寻址空间 数据长度 值域范围 data 片内直接寻址 RAM 8 0~127 idata 片内间接寻址 RAM 0~255 pdata 分页寻址 片外 RAM

存储类型 寻址空间 数据长度 值域范围 xdata 片外数据存储 (64K) 16 0~65535 code 片内统一编址ROM(64K) bdata 片内可位寻址的RAM(16byet) 1 0~127

C51的数据声明的一般格式如下 [类型说明符][修饰符] 标识符[=初值]…… 例如:unsigned char code Flag = 0x0f; 就是声明一个无符号的char型变量Flag,并给他赋初值为0x0f;并且声明他所在的存储空间在片内统一编址的ROM中。 声明中,如果没有修饰符,则数据默认的存储空间为data型,也就是在片内RAM中。

与一般C语言的结构相同,以main()函数为程序人口,程序体中包含若干语句还可以包含若干函数。 类型 函数名(参数表) { 数据说明部分 语句执行部分 }

㈢ C-51的数据类型 基本数据类型 类型 符号 关键字 所占位数 数的表示范围 (signed) int 16 -32768~32767 有 (signed) short 16 -32768~32767 (signed) long 32 -2147483648~2147483647 整型 16 unsigned int 0~65535 无 16 unsigned short int 0~65535 unsigned long int 32 0~4294967295 有 float 32 3.4e-38~3.4e38 实型 有 double 64 1.7e-308~1.7e308 字符型 有 char 8 -128~127 无 unsigned char 8 0~255

C语言中的基本数据类型 类型 符号 关键字 所占位数 数的表示范围 (signed) int 16 -32768~32767 有 (signed) short 16 -32768~32767 (signed) long 32 -2147483648~2147483647 整型 16 unsigned int 0~65535 无 16 unsigned short int 0~65535 unsigned long int 32 0~4294967295 有 float 32 3.4e-38~3.4e38 实型 有 double 64 1.7e-308~1.7e308 字符型 有 char 8 -128~127 无 unsigned char 8 0~255

㈢(续) C-51的数据类型扩充定义 sfr:特殊功能寄存器声明 sfr16:sfr的16位数据声明 sbit:特殊功能位声明 例:sfr SCON = 0X98; sfr16 T2 = 0xCC; sbit OV = PSW^2;

㈣ C-51数据的存储类型 名 存储空间位置 长度 数据范围 data 直接寻址片内RAM 8位 0~255 名 存储空间位置 长度 数据范围 data 直接寻址片内RAM 8位 0~255 bdata 可位寻址片内RAM 1位 0/1 idata 间接寻址片内RAM 8位 0~255 pdata 片外页RAM 8位 0~255 xdata 片外RAM 16位 0~65535 code 程序ROM 16位 0~65535

㈣ C-51数据的存储类型 ㈣ C-51数据的存储类型(续) 例: 数据类型 存储类型 变量 char data var1; bit data flags; unsigned char xdata vextor[10];

㈤ C-51的包含的头文件 通常有:reg51.h math.h ctype.h stdio.h stdlib.h absacc.h 常用有:reg51.h (定义特殊功能寄存器和位寄存器); math.h (定义常用数学运算);

㈥ C-51的运算符 与C语言基本相同: + - * / (加 减 乘 除) + - * / (加 减 乘 除) > >= < <= (大于 大于等于 小于 小于等于) == != (测试等于 测试不等于) && || ! (逻辑与 逻辑或 逻辑非 ) >> << (位右移 位左移) & | (按位与 按位或) ^ ~ (按位异或 按位取反)

㈦ C-51的基本语句 与标准C语言基本相同: if 选择语言 switch/case 多分支选择语言 while 循环语言 do-while 循环语言 for 循环语言

㈧ 中断服务程序 函数名()interrupt n { } ㈨ I/O口定义 #include <absacc.h> #define prot xbyte[0x1000] 或 用指针定义

CJNE R0,#00H,LOO1 ;不到FF个字节再清 LOOP: SJMP LOOP 例:清零程序 (将2000H—20FFH的内容清零) ★ 汇编语言程序 ORG 0000H SE01: MOV R0,#00H MOV DPTR,#2000H ;(0000H)送DPTR LOO1: CLR A MOVX @DPTR,A ;0送(DPTR) INC DPTR ;DPTR+1 INC R0 ;字节数加1 CJNE R0,#00H,LOO1 ;不到FF个字节再清 LOOP: SJMP LOOP

清零程序 (将2000H—20FFH的内容清零) ★ C-51程序 #include <reg51.h> main( ) { int i; unsigned char xdata *p=0x2000; /* 指针指向2000H单元 */ for(i=0;i<256;i++) {*p=0; p++;} /*清零2000H-20FFH单元*/ }

例:查找零的个数(在2000H--200FH中查出有几个字 节是零,把个数放在2100H单元中) ★ 汇编语言程序 ORG 0000H L00: MOV R0,#10H ;查找16个字节 MOV R1,#00H MOV DPTR,#2000H L11: MOVX A,@DPTR CJNE A,#00H,L16 ;取出内容与00H相等吗? INC R1 ;取出个数加1 L16: INC DPTR DJNZ R0,L11 ;未完继续 MOV DPTR,#2100H MOV A,R1 MOVX @DPTR,A ;相同数个数送2100H L1E: SJMP L1E

★查找零的个数C-51程序 #include <reg51.h> main ( ) { unsigned char xdata *p=0x2000;/*指针p指向2000H单元*/ int n=0,i; for(i=0;i<16;i++) { if(*p==0) n++; /* 若该单元内容为零,则n+1 */ p++; /* 指针指向下一单元 */ } p=0x2100; /* 指针p指向2100H单元 */ *p=n; /* 把个数放在2100H单元中 */

KEIL的使用 掌握KEIL工程的建立和软件的开发; 掌握KEIL中软件仿真的基本应用;