C语言工程实践第二讲课件_第1页
C语言工程实践第二讲课件_第2页
C语言工程实践第二讲课件_第3页
C语言工程实践第二讲课件_第4页
C语言工程实践第二讲课件_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

C语言工程实践第二讲C语言工程实践第二讲1上节内容回顾C语言作为单片机开发语言的优势兼顾了多种高级语言的特点,并具备汇编语言的功能。C语言开发系统可以大大缩短开发周期,明显增强程序的可读性,便于改进和扩充。针对8051的C语言日趋成熟,成为了专业化的实用高级语言。C语言基础知识上节内容回顾C语言作为单片机开发语言的优势2C-51与ASM-51相比,有如下优点:1.

对单片机的指令系统不要求了解,仅要求对8051的存贮器结构有初步了解;2.

寄存器分配、不同存贮器的寻址及数据类型等细节可由编译器管理;3.

程序有规范的结构,可分成不同的函数,这种方式可使程序结构化;4.

具有将可变的选择与特殊操作组合在一起的能力,改善了程序的可读性;5.

提供的库包含许多标准子程序,具有较强的数据处理能力;6.

由于具有方便的模块化编程技术,使已编好程序可容易地移植;C-51与ASM-51相比,有如下优点:3本节目的掌握单片机开发流程使用KeilC51建立一个C语言工程C语言单片机程序基本框架掌握C语言控制I/O端口跑马灯程序的实现以及派生本节目的掌握单片机开发流程4一、单片机开发流程硬件电路分析程序编写调试修改优化运行分析电路的组成、工作原理针对电路,编写控制程序程序检查分析,提高成功率程序装入单片机,看运行效果整理、记录工作一、单片机开发流程硬件电路分析程序编写调试修改优化运行分析电5本节应用原理示意图本节应用原理示意图6硬件原理图分析LED限流电阻计算:

I(LED)=(电源电压-LED电压降)/限流电阻

AVR电路中电压是5V,LED电压降假定是1.9V,如果电流限制在5mA,那么限流电阻大小为:

R=(5V-1.9V)/5(mA)=0.62

(KΩ)硬件原理图分析LED限流电阻计算:

I(LED)=(电源7C语言工程实践第二讲课件8C语言工程实践第二讲课件9建立一个C语言工程通过以上步骤建立一个C语言成功下一步添加C语言源文件并在原文件中构建C语言基本构架建立一个C语言工程通过以上步骤建立一个C语言成功10C语言工程实践第二讲课件11C语言工程实践第二讲课件12添加源文件通过File=>New新建文件File=>Save保存为C源文件(*.c)AddFilestoGroup将刚才保存的源文件加入工程中添加源文件通过File=>New新建文件13C语言基本构建#include<AT89X51.H>//头文件包含51的基本特殊功能寄存器

voidmain(void){while(1){//所需运行的程序体}}

C语言基本构建#include<AT89X51.H>//14㈢(续)C-51的数据类型扩充定义sfr:特殊功能寄存器声明sfr16:sfr的16位数据声明sbit:特殊功能位声明bit:位变量声明例:sfrSCON=0X98;sfr16T2=0xCC;sbitOV=PSW^2;㈢(续)C-51的数据类型扩充定义sfr:特殊功能寄存器声15㈣C-51数据的存储类型名存储空间位置长度数据范围

data直接寻址片内RAM8位0~255bdata可位寻址片内RAM1位0/1idata间接寻址片内RAM8位0~255pdata片外页RAM8位0~255xdata片外RAM16位0~65535code程序ROM16位0~65535㈣C-51数据的存储类型名存储空间位置16㈣C-51数据的存储类型(续)例:数据类型

存储类型变量char

datavar1;bit

dataflags;unsignedchar

xdatavextor[10];㈣C-51数据的存储类型㈣C-51数据的存储类型(续)㈣C-51数据的存储类型17㈤C-51的包含的头文件通常有:reg51.hmath.hctype.hstdio.hstdlib.habsacc.h常用有:reg51.h(定义特殊功能寄存器和位寄存器);math.h(定义常用数学运算);

㈤C-51的包含的头文件通常有:reg51.hmat18点亮一个发光二极管#include<AT89X51.H>//头文件包含51的基本特殊功能寄存器voidmain(void){while(1){ P1_0=0;//所需运行的程序体}}

点亮一个发光二极管#include<AT89X51.H>19特殊功能寄存器的访问sfrP1=0x90;sbitP1_0=0x90;sbitP1_1=0x91;sbitP1_2=0x92;sbitP1_3=0x93;sbitP1_4=0x94;sbitP1_5=0x95;sbitP1_6=0x96;sbitP1_7=0x97;P1DATA90HP1_0BIT90HP1_1BIT91HP1_2BIT92HP1_3BIT93HP1_4BIT94HP1_5BIT95HP1_6BIT96HP1_7BIT97H特殊功能寄存器的访问sfrP1=0x90;P20发光二极管闪烁#include<AT89X51.H>//头文件包含51的基本特殊功能寄存器voidmain(void){while(1){ P1_0=0;P1_0=1;////所需运行的程序体}}

发光二极管闪烁#include<AT89X51.H>//21指令延时voiddelay(longi){ while(i--);}while循环while(逻辑表达式){循环体}逻辑表达式为真时循环执行循环体指令延时voiddelay(longi)22使用while语句要注意如下几点1.while先判断条件后执行循环体,属于当型循环,即有可能循环体一次也不被执行。2.while适宜结束条件特别明显的情况。3.避免死循环,即循环体内须改变循环结束条件或用if/goto语句判断后转出。4.在循环体内可用break语句终止本层循环,continue语句结束本次循环。5.while循环与for循环一样可以嵌套,即循环体内又可以包含循环结构。使用while语句要注意如下几点1.while先判断条件23发光二极管闪烁#include<AT89X51.H>//头文件包含51的基本特殊功能寄存器voidmain(void){while(1){ P1_0=0;delay(2000);P1_0=1;delay(2000);//所需运行的程序体}}

发光二极管闪烁#include<AT89X51.H>//24发光二极管闪烁#include<AT89X51.H>//头文件包含51的基本特殊功能寄存器#defineLED0P1_0;voidmain(void){while(1){ LED0=0;delay(2000);LED0=1;delay(2000);//所需运行的程序体}}

发光二极管闪烁#include<AT89X51.H>//25流水灯#include<AT89X51.H>//头文件包含51的基本特殊功能寄存器#defineLEDP1voidmain(void){ while(1) { inti; for(i=0;i<8;i++) { LED=(~(0x01<<i)); delay(2000); LED=0xff; delay(2000); }//所需运行的程序体 }}

流水灯#include<AT89X51.H>//头文件包26for循环for(<初始化>;<条件表达式>;<表达式>)初始化总是一个赋值语句,它用来给循环控制变量赋初值;条件表达式是一个关系表达式,它决定什么时候退出循环;增量定义循环控制变量每循环一次后按什么方式变化。for(;;)===while(1)for(i=0;i<8;i++)for(i=8;i>0;i--)for循环for(<初始化>;<条件表达式>;<表达式27C语言位操作位逻辑运算符1.二进制反码或按位取反:~(单目运算符)可用于某些依赖于具体计算机字长的应用中,从而使代码是可移植的如:x=x&~0x7->0x7在内存中放入16bit加8个0,取反之后用&还原2.位与(&)用来对一个数据的某个位置0两个数都为真时才为真,其他未假3.位或(|)用来对一个数据的某些二进制置1两个数都为真或者有一个数位真,那么结果为真4.位异或(^)用来检查两个位是否相等两个都为真(两个都为假)时为假,其他情况都为真C语言位操作位逻辑运算符28C语言位操作5.移位运算符1.<<(左移)左移运算符将其左侧操作数的值的每位向左移动,移动的位数由其右侧操作数指定,空出的为用0填充,丢弃左侧末端的位2.>>(右移)右移操作将其左侧操作数的值的每位向右移动,移动的位数由其右侧操作数指定,丢弃移出左侧操作数右端的位。C语言位操作5.移位运算符29C语言位操作增加位运算的应用应用:(&)a.清零特定位(mask中特定位置0,其

温馨提示

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

评论

0/150

提交评论