




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、.8.9 邱公室:S303 C语言程序设计单片机第1页单片机基本功效单片机能直接做什么?C语言怎么实现?引脚功效1、最小化电路1电源电路:提供能量2晶振电路:推进 CPU工作3复位电路:规范CPU工作起点2、IO端口功效一、数据输入和输出功效1输入状态时电气标准:(1)输入端高阻(1-10M欧)(2)逻辑数据:3.5V-1; 0.4V-0(3)安全电压:5.5V2输出信号电气标准:(1)电平信号大小:1-3.55V (5V理想值), 0-00.4V(0V理想值)。(2)电流输出能力:03mA(通常需要扩展才能驱动外设);单个引脚可到达20mA 2电流越大,则电平信号越
2、偏离理想值第2页怎样编程?什么是编程? 人希望单片机实现某个功效,将功效分解成C语言能够直接执行任务单元,再按照一定次序组合,依次执行,(流程设计) 用C语言,在KEILC编写环境下,把为了实现该功效,而需要单片机逐一完成一个个任务单元讲述一遍,(编程) 然后KEIL C软件检验没有语法错误,翻译成机器语言,(编译) 按ROM存放范围,排版成规范格式,(链接) 烧录到ROM中,然后CPU逐一取出执行,实现人功效意图怎样才能编程?1知道单片机能直接干什么?基本功效2知道C语言能直接让单片机干什么,指令语句,语法3依据要实现总任务功效,任务分解,细化到详细指令,再按照一定次序和逻辑关系重新组合,形
3、成指令流程4用C语言描述指令流程。第3页端口IO功效以4个并行口为单位,直接输入或者输出0 x00-0 xFF数据单片机从P0.0P0.7读取数据,或者向外界输出信号,都是经过位于RAM编号为0 x80存放器进行,该编号(地址)不好记忆,所以取名P0,取名指令,由sfr来下达。sfr P0 = 0 x80;sfr P1 = 0 x90;sfr P2 = 0 xA0;sfr P3 = 0 xB0;定义了名字以后,P0若等于0 x37,表示引脚信号:P0.7 P0.6 P0.5 P0.4 P0.3 P0.2 P0.1 P0.0 0 0 1 1 0 1 1 1P1-P3一样。 单片机中每个专用存放器
4、都有专门地址,为了便于记忆,都进行了命名,这个工作量挺大,C语言事先把这个工作已经做好了,存放在文件“reg51.h”中,我们能够直接引用,引用规则:#include reg51.h 这么一来,包含reg51.h文件中全部内容到本程序中,无须重新编写其中内容,而直接利用其中内容。降低工作量,方便。该文件普通不可缺乏。第4页宏定义假如P0口数据是来自AD转换数据,P1口是按键数据,那怎样愈加便于记忆端口详细功效?比如:你在等快递,这时快递员张三来了,他人告诉你”张三来了“,与“快递员来了”,更轻易让你了解?能够重新给P0口取个新名字:#define AD_data P0#define key_d
5、ata P1格式:#define new_name defined_nameC 语言在程序中,自动将new_name等效看成defined_name。这就是宏定义第5页并行口数据输入输出并行口输出并行口名=源数据;/;表示指令(语句)结束比如:P0=0 x5F;并行口输入并行口作为源数据时,并行口名只要出现一次,就读取一次当前端口数据比如:in_data=P0;第6页单独引脚IO对并行口某一个引脚单独IO,其余不变1依据引脚功效,给该引脚取个名字,2让单片机知道更名字对应使用是哪个引脚比如P1.0是按键up,P1.1是按键down,P2.1是ledsbit up_key=P10;sbit do
6、wn_key=P10;sbit led=P21;单独引脚输出:引脚名=源数据;/;表示指令(语句)结束比如:led=0; led=1;单独引脚输入单独引脚作为源数据时,该引脚名只要出现一次,就读取一次当前端口数据比如:if(up_key=0) led=0;第7页变量数据存放变量:完成某个任务过程中,需要暂时保留数据。存放在RAM中,新数据替换原来数据。RAM是连续一段存放单元,变量数据存放在哪里,需要跟单片机说清楚4个问题: 1,存放数据要几个字节? 数据类型 unsigned char ; int long float 2,数据存放在那个RAM区域? 默认片内RAM data(可省略0-7f
7、) 位寻址区 bdata ;片外RAM xdata 3,在区域中那个位置? 地址编号不好记,给变量命名 变量名 4,初始值是多少?比如: int data in_data=0 x00;in_data=-;第8页指令1 赋值语句功效 :类似于MOV格式: (接收数据)变量名 = 数据源;数据源:能够是一个常数,能够是别变量,能够是一个变量、数据组合而成一个算术或者逻辑运算表示式。使用条件:语句中全部包括变量和数据都必须是已经定义或者已知。比如: in_data=0 x12; 第9页3 、C程序基本结构1包含文件:头文件2宏定义,类型重定义3变量、常量初始化4主程序第10页3、C程序基本结构 /*
8、 程序功效、编写日期等概述FILE NAME: loopled_key.cCHIP TYPE: AT89C51TIME: -8*/#include reg51.h“#include “stdio.h”#include “math.h”/头文件调取,有些功效,在别任务中曾经用到,为了防止重复编写,把包含这些功效文件调取过来,/可供此次任务直接使用#define out_port P2 / 比如定义P2口输出控制信号 /比如定义P0口0和1脚采集按键状态 sbit key_state=P00/ 定义新类型typedef unsigned char u_8;typedef unsigned int
9、u16;#/为完成任务各个角色定义数据 u_8 loop_num=0;/定义循环次数:0-7float code PI=3.14;/常数 void delayms(uint);/ 定义输出彩灯效果数据常数 uchar led_out8 = 0 x01,0 x02,0 x04,0 x08,0 x10,0 x20,0 x40,0 x80;void main(void) /演出正式开始! 第11页C语言运算符及表示式一、运算符及表示式1.C运算符介绍算术运算符:+ - * / % + -关系运算符: = !=逻辑运算符:! & |位运算符 : | &赋值运算符:= 及其扩展条件运算符:?:逗号运算符
10、:,指针运算符:* &求字节数 :sizeof特殊运算符:() . - 第12页 2.运算符分类单目运算符前缀单目运算符:-a,+a,-a后缀单目运算符:a+,a-双目运算符: + - * / %三目运算符号: ? :第13页 三、算术运算符1.基本算术运算符:+ - * / %(取模或取余) 说明: 1.两整数相除,结果为整数,舍去小数部分. 2. %要求两侧均为整型数据.例 -5/2.0 = 2*3 = 5/2= +5=-2.5625例 5%2 = -5%2 = 1%10 = 5%1 = 5.5%2 1 -110()第14页2.自增(+) 、自减(-)运算方法: (2)在混合运算中main
11、( ) int m=3,i,b; i=+m; b=m+; printf(“m=%d,i=%d”,m,i);前缀方式:在表示式计算前,先执行m=m+1,再使用m 代替+m计算表示式值.后缀方式:在表示式计算前,先使用m代替m+计算出 表示式值.再执行m=m+1.等价于m=m+1; i=m;运行结果:m=5,i=4,b=4三、算术运算符第15页 说明: (1)不能用于常量和表示式2.自增(+) 、自减(-)如 float f=6.5; f+; /* f=7.5 */如 5+ (a+b)+第16页3.算术表示式与数学中概念一致 说明: (1)表示式中不能使用 和 . (2)C语言没有乘方运算运算符.
12、 如 x3如 数学表示式:(b-c)+(a-d)24 x*x*xC表示式: (b-c)+(a-d)*2)* 4第17页C语言解读4.算术运算符优先级和结合性优先级 使用1,2,3,4.表示,数字越小,优先级越高,运 算时优先级高运算符先运算.结合性 左结合性:+ - * / % 右结合性:+ -+ - 2 高* / % 3+ - 4 低 第18页如 a+b/c先/后+先+后- a=b=44.算术运算符优先级和结合性表示式计算方法 先优先级,后结合性:优先级高运算符先运算, 当同一优先级运算符同时出现时,按它们结合 性确定运算次序. 先b=4 后a=ba*(b+c) 先+后*a-+i-i+等价于
13、a-(+i)等价于-(i+)a+b-c第19页例:输入一个球半径值,计算并输出球体积。(V=4/3r3 ) main( ) float r,v; printf(请输入球半径:); scanf(%f,&r); v=4.0/3*3.14*r*r*r; printf(球体积为:%fn,v);第20页四、关系运算符1.关系运算符(比较运算符)序号运算符优先级结合性16左结合性24=5=76!=2.运算规则:条件满足,则结果为真(1), 不然为假(0).例 2=3 值为 a(32)值为 532值为 5=4+1值为第21页五、逻辑运算符序号运算符优先级结合性1&11左结合性2|123!2右结合性1.逻辑运
14、算符 2.运算规则aba&ba|b!a00001010111001011110例 -5&2 值为 3&0 值为 3|0 值为 !8 值为 !8 值为 0|8&!5值为101010第22页 逻辑运算符、算术运算符和关系运算符之间优先级比较 运算符优先级!高低算术运算符关系运算符& |五、逻辑运算符第23页 想一想: 数学表示式3x10所对应C语言表示式应怎样表示? 数学表示式:3x10 C表示式: 3x&xb)?a:c值为_.第25页赋值运算符类别运算符优先级结合性简单赋值运算符=14右结合性复合赋值运算符+=、-=、*=、/=、&=、|=、等第26页main( ) int a=3,b=-3,c
15、; c=a*2+b; a+=5; b*=c-1; printf(“%d,%d,%dn”,a,b,c);第27页九、数据之间混合运算.自动转换(隐式转换) 转换规则: (1)总则:不一样类型数据混合运算时,先转换成同一类型,然后进行运算. (2)转换按数据长度增加方向进行,以确保精度不降低. (3)全部浮点数都是以float型进行运算. (4)赋值运算左边量和右边量类型不一致时, 将右边量类型自动转换为左边量类型. 第28页 数据类型间转换doublefloatlongintchar,short低高运算对象类型不一样时由低向高转换.例 int i=2; float f=1.0; long d=4
16、0; char l=2;例 int i; i=4.5/2; 左边:int右边:doubledoubleint10 +a + i *f d / l第29页例 (double)(3/2) (double)3/22.强制类型转换(显式转换)普通形式:(数据类型名)(操作对象)例 float x; int i; char ch; ch=(char)(97); x=(float)3; i=(int)3.6; i=(int)(x+4.5); 第30页C程序解读第31页第32页C 程序解读uchar const led_out8 = 0 x01,0 x02,0 x04,0 x08,0 x10,0 x20,0
17、 x40,0 x80;本项目中,循环彩灯在特定循环次数时输出数据是个固定量,是个常量,所以,预先设定好,放在连续ROM中,取个名字:led_out,预置初值.常量定义常量:在完成任务过程中,需要一个或者多个固定数据。存放在ROM中,预留一块固定大小存放空间(依据数据大小范围),而且取个名字,便于查找,也能够预置数据常量定义结构:类型名 常量定义符合 变量名 =初值 ;类型名:依据数据大小范围,预留一块固定大小存放空间Char int long float 常量定义符合:const常量名:跟命名规则一样。初值一定要写第33页C 程序解读void main(void) /演出正式开始!out_po
18、rt=0 xff;/赋值语句,指令格式:接收数据变量= 给出数据(常量或者变量);delayms(1000);/子程序调用格式:子程序名(运行子程序所需数据);out_port=0;out_port=led_out0;If(key_state=0) 主程序是不可缺乏结构,程序功效执行从它开始第34页C 程序解读void delayms(uint);屡次使用任务模块,称为子程序,在正式使用之前,亮个相,在它以后程序都认识它,也就能够使用它了。结构: 返回结果数据类型 子程序名称 (运行子程序需要数据类型);本例中,延时(范围在0-65535)个毫秒。delayms(1000); /延时1秒第35页3、C程序基本结构 一、运算符 1算术运算符+,-,*,/,%运算规则:1与代数运算规则相同,2括号优先,3结果自动类型转换成多字节例:char x=8, z; int y=120; z=(char) (x+y)/4;2逻辑运算符&,|,,运算规则:相同位数两个数据逐位进行。3移位运算符规则:左移 ,右移。移出丢失,空出补04关系运算符 , ,= ,!= ,&,|规则:关系正确,结果是 1 ;关系不对,结果是 0.第36页3、C程序基本结构二、表示式由变量,常数,括号,运算符组成
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 职工提成协议书
- 空同经营协议书
- 股份责任协议书
- 股份共有协议书
- 老人手术协议书
- 蒸汽购买协议书
- 结对帮学协议书
- 广州市重大项目协议书
- 葡萄购销协议书
- 空地兑换协议书
- 2025年下半年太原市招考社区专职社工人员易考易错模拟试题(共500题)试卷后附参考答案
- 【KAWO科握】2025年中国社交媒体平台指南报告
- 2025年财务会计师入职考试试题及答案
- 【语文】第23课《“蛟龙”探海》课件 2024-2025学年统编版语文七年级下册
- 克丽缇娜直销奖金制度
- 基本医疗保险参保人员丢失医疗费用票据补支申请
- 高血压病人的护理(PPT)
- DB11-T 825-2021绿色建筑评价标准
- 4例先天性高胰岛素血症患儿的护理
- 民办学校筹设批准书
- 上学期拓扑学考试试卷及答案
评论
0/150
提交评论