picc入门笔记

上传人:子 文档编号:43281274 上传时间:2018-06-05 格式:DOC 页数:19 大小:21.29KB
返回 下载 相关 举报
picc入门笔记_第1页
第1页 / 共19页
picc入门笔记_第2页
第2页 / 共19页
picc入门笔记_第3页
第3页 / 共19页
picc入门笔记_第4页
第4页 / 共19页
picc入门笔记_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《picc入门笔记》由会员分享,可在线阅读,更多相关《picc入门笔记(19页珍藏版)》请在金锄头文库上搜索。

1、PICCPICC 入门笔记入门笔记PICC 入门笔记一、C 语言基础复习-没 C 语言基础看起来可能有点困难。程序的语句语句名称 一般形式 说明 表达式语句 表达式; 表达式语句由表达式加上分号“;”组成 函数调用语句 函数名(实际参数表); 实际参数、形式参数二个概念要理解 控制语句 附件 1 控制语句用于控制程序的流程 复合语句 多个语句用括号括起 空语句 ; 只有分号“;”组成的语句称为空语句 赋值语句 变量=(变量=表达式); 赋值表达式再加上分号构成的表达式语句 数据输出语句 printf(“格式控制字符串”) 附件 1 (1) 条件判断语句if 语句,switch 语句(2) 循环

2、执行语句do while 语句,while 语句,for 语句(3) 转向语句break 语句,goto 语句,continue 语句,return 语句关系运算符 小于 小于或等于 大于 大于或等于 等于 不等于 = = != 关系运算符都是双目运算符,其结合性均为左结合。在六个关系运算符中,,=的优先级相同,高于=和!=,=和!=的优先级相同。 关系表达式的值是“真”和“假” ,用“1”和“0”表示。 逻辑运算符 与运算 或运算 非运算 意义:如果在条件语句中,只执行单个的赋值语句时, 常可使用条件表达式来实现。不但使程序简洁,也提高了运行效率。3、语句语言还提供了另一种用于多分支选择的

3、switch 语句, 其一般形式为: switch(表达式) case 常量表达式 1: 语句 1; case 常量表达式 2: 语句 2; case 常量表达式 n: 语句 n; default : 语句 n+1; 其语义是:计算表达式的值。 并逐个与其后的常量表达式值相比较,当表达式的值与某个常量表达式的值相等时, 即执行其后的语句,然后不再进行判断,继续执行后面所有 case 后的语句。 如表达式的值与所有 case 后的常量表达式均不相同时,则执行 default 后的语句。4、循环结构程序语句while 语句的一般形式为: while(表达式)语句;特点:判断后执行说明:1.循环体如

4、包括有一个以上的语句,则必须用括起来, 组成复合语句。2.应注意循环条件的选择以避免死循环。语句do-while 语句的一般形式为: do语句; while(表达式);do-while 语句的语义是:先执行循环体语句一次, 再判别表达式的值,若为真(非 0)则继续循环,否则终止循环。do-while 语句和 while 语句的区别在于 do-while 是先执行后判断,因此 do-while 至少要执行一次循环体。而 while 是先判断后执行,如果条件不满足,则一次循环体语句也不执行。语句for 语句是语言所提供的功能更强,使用更广泛的一种循环语句。其一般形式为: for(表达式 1;表达式

5、 2;表达 3) 语句;表达式 1- 通常用来给循环变量赋初值,一般是赋值表达式。也允许在 for 语句外给循环变量赋初值,此时可以省略该表达式。表达式 2- 通常是循环条件,一般为关系表达式或逻辑表达式。表达式 3- 通常可用来修改循环变量的值,一般是赋值语句。1.首先计算表达式 1 的值。2.再计算表达式 2 的值,若值为真(非 0)则执行循环体一次, 否则跳出循环。 3.然后再计算表达式 3 的值,转回第 2 步重复执行。在整个 for 循环过程中,表达式 1 只计算一次,表达式 2 和表达式,3 则可能计算多次。转移语句在语言中提供了 4 种转移语句:goto,break, conti

6、nue 和return。1goto 语句-一般不使用goto 语句也称为无条件转移语句,其一般格式如下: goto 语句标号;其中语句标号是按标识符规定书写的符号, 放在某一语句行的前面,标号后加冒号(:)。语句标号起标识语句的作用,与 goto 语句配合使用。2语句break 语句只能用在 switch 语句或循环语句中, 其作用是跳出switch 语句或跳出本层循环,转去执行后面的程序。由于 break 语句的转移方向是明确的,所以不需要语句标号与之配合。break 语句的一般形式为: break; 使用 break 语句可以使循环语句有多个出口,在一些场合下使编程更加灵活、方便。3语句c

7、ontinue 语句只能用在循环体中,其一般格式是: continue;其语义是:结束本次循环,即不再执行循环体中 continue 语句之后的语句,转入下一次循环条件的判断与执行。应注意的是, 本语句只结束本层本次的循环,并不跳出循环。第四章: 数组1数组定义 如:int a10,b3+2,c7+FD;FD 是常量说明:不能在方括号中用变量来表示元素的个数, 但是可以是符号常数或常量表达式。2数组元素的表示方法数组元素的一般形式为: 数组名下标如:a5,ai+j,ai+说明:下标可以是变量或变量表达式3初始化赋值一般形式为: static 类型说明符 数组名常量表达式=值,值值;例:stat

8、ic int a10= 0,1,2,3,4,5,6,7,8,9 ;第五章: 函数一定义的一般形式1无参函数的一般形式 - 过程 如:void delay(void)2.有参函数的一般形式 类型说明符 函数名(形式参数表) 型式参数类型说明 类型说明 语句 说明:return 返回值命令二函数调用的一般形式为:可以用以下几种方式调用函数:1、z=max(x,y)是一个赋值表达式,把 max 的返回值赋予变量 z。另一种为现代格式,其一般形式为: 类型说明符 被调函数名(类型 形参,类型 形参);函数的值只能通过 return 语句返回主调函数。return 语句的一般形式为: return 表达

9、式; 或者为:return (表达式);在语言中,对变量的存储类型说明有以下四种:auto 自动变量register 寄存器变量extern 外部变量static 静态变量第六章:指针1指针变量的类型说明其一般形式为: 类型说明符 *变量名;staic int *p2/*p2 是指向静态整型变量的指针变量*/说明:定义时要使用 * 号2指针变量的赋值方法(1)指针变量初始化的方法 int a;int *p=/*定义并赋值*/int a5,*pa=a/或写成: int a5,*pa=int *p;/定义p=/赋值说明:定义后,再赋值这时不能加 * 号,它是一个指针变量3指针变量的运算-取地址运算

10、符/这里的*P 是定义指针变量并赋值 /这里的*P 是表示取指针 P 地址中的内容4加减算术运算对于指向数组的指针变量,可以加上或减去一个整数 n。设 pa 是指向数组 a 的指针变量,则 pa+n ,pa-n ,pa+ ,+pa ,pa- ,-pa 运算都是合法的。第七章:枚举,位运算1位运算符for(i=0;i /包含单片机内部资源预定义第一步 #include “pc68.h” /包含自定义头文件_CONFIG (HS /定义芯片工作时的配置位void SetSFR(void);/声明本模块中所调用的函数类型void Clock(void);void KeyScan(void);void

11、 Measure(void);void LCD_Test(void);void LCD_Disp(unsigned char);unsigned char second, minute, hour; /定义变量bit flag1,flag2;void main(void)/函数和子程序SetSFR();PORTC = 0x00;TMR1H += TMR1H_CONST;LED1 = LED_OFF;LCD_Test();while(1) /程序工作主循环asm(“clrwdt”); /清看门狗Clock(); /更新时钟KeyScan(); /扫描键盘Measure(); /数据测量SetSF

12、R(); /刷新特殊功能寄存器2、PICC 中常用变量类型bit 1 布尔型位变量,0 或 1 两种取值char 8有符号或无符号字符变量,PICC 缺省认定 char 型变量为无符号数,但可以通过编译选项改为有符号字节变量unsigned char 8 无符号字符变量3、PICC 对数据寄存器 bank 的管理如果没有特别指明,所定义的变量将被定位在 bank0如:bit flag1,flag2除了 bank0 内的变量声明时不需特殊处理外,定义在其它 bank 内的变量前面必须加上相应的 bank 序号。如:bank2 bit flag1,flag2;为避免频繁的 bank 切换以提高代码

13、效率,尽量把实现同一任务的变量定位在同一个 bank 内4、PICC 中的局部变量PICC 把所有函数内部定义的 auto 型局部变量放在 bank0。为节约宝贵的存储空间,它采用了一种被叫做“静态覆盖”的技术来实现局部变量的地址分配。但这时不能出现函数递归调用(自已调用自己)既然所有的局部变量将占用 bank0 的存储空间,因此用户自己定位在 bank0 内的变量字节数将受到一定的限制,在实际使用时需注意。5、PICC 中的位变量bit 型位变量只能是全局的或静态的。PICC 将把定位在同一 bank 内的 8 个位变量合并成一个字节存放于一个固定地址6、PICC 的其它变量修饰关键词(1)

14、extern 外部变量声明例:extern bank1 unsigned char var1, var2; 声明 bank1 外部变量(2)volatile 易变型变量声明例:volatile unsigned char STATUS 0x03 ;volatile bit commFlag ;说明:在单片机中,作为输入的 IO 端口其内容将是随意变化的;在中断内被修改的变量相对主程序流程来讲也是随意变化的;很多特殊功能寄存器的值也将随着指令的运行而动态改变。所有这种类型的变量必须将它们明确定义成“volatile”类型(3)const 常数型变量声明例:const unsigned char

15、name=”This is a demo”; /定义一个常量字符串(4)persistent 非初始化变量声明例:persistent unsigned char hour,minute,second; /定义时分秒变量按照标准 C 语言的做法,程序在开始运行前首先要把所有定义的但没有预置初值的变量全部清零。PICC 提供了“persistent”修饰词以声明此类变量无需在复位时自动清零。7、 PICC 中的指针(1)PICC 在编译 C 原程序时将指向 RAM 的指针操作最终用 FSR 来实现间接寻址。这样就势必产生一个问题:FSR 能够直接连续寻址的范围是 256 字节(bank0/1或 bank2/3) ,要覆盖最大 512 字节的内部数据存储空间,又该如何让定义指针?PICC 还是将这一问题留给编程员自己解决:在定义指针时必须明确指定该指针所适用的寻址区域,例如:unsigned char *ptr0; /定义覆盖 bank0/1 的指针bank2 unsigned char *ptr1; /定义覆盖 bank2/3 的指针bank3 unsigned char *ptr2; /定义覆盖 bank2/3 的指针(2)指向 ROM 常数的指针如果一组变量是已经被定义在 ROM 区的常数,那么指向它的指针可以这样定义:const unsigned char c

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号