学年本科教学和思政工作情况汇报

Size: px
Start display at page:

Download "学年本科教学和思政工作情况汇报"

Transcription

1 微机原理与接口技术 第 4 章 8051 的 C 语言与程序设计 浙江大学 王立强 王晓萍

2 内容提要 4.1 C51 特点 C51 结构特点 C51 与汇编编程的区别 C51 编程的优缺点 C51 与标准 C 的区别 C51 编译器 4.2 C51 基础 数据类型 存储器类型与存储模式 数组 指针 函数 预处理命令 1

3 内容提要 4.3 C51 的流程控制 顺序结构 选择结构 循环结构 4.4 C51 程序设计方法 C51 语言编程风格 C51 程序设计注意问题 基本程序设计 4.5 模块化程序设计 2

4 4.1.1 C51 的结构特点 1. C51 结构特点 函数构成 : 与标准 C 程序相同,C51 程序由函数构成, 函数是 C51 程序的基本单位 main 函数 :C51 程序的入口, 不管 main 函数放在何处, 程序总是从 main 函数开始执行, 执行到 main 函数结束而结束 函数调用 : main 函数 : 可调用其他函数 其他函数 :main 之外的函数 可互相调用, 但不能调用 main 函数 库函数 :C51 在库文件中已经定义的函数, 其声明均在相应的头文件中, 用户编程时用 include 预处理指令包含相关的头文件后, 可在程序中直接调用 自定义函数 : 用户自己定义, 自己调用的一类函数 4.1 C51 特点 3

5 4.1.2 C51 与汇编编程的区别 汇编编程 C51 编程 指令集 必须记忆 无需记忆 存储器结构 必须考虑内部 RAM 的寻址方式 无需详细考虑 物理地址 必须准确计算 可忽略 跳转指令 偏移量及指令字节数 可忽略 子程序 需进行现场保护和恢复 直接调用 中断服务程序 放入中断入口地址 中断号 库函数 无 有, 直接调用 速度与效率 高 低 4.1 C51 特点 4

6 4.1.3 C51 编程的优缺点 1. 优点 无需对 8051 硬件结构以及编译操作的细节有特别全面的了解 代码容易编写, 尤其体现在编写较大规模的复杂程序时 C 语言程序更接近于人类语言, 源代码可读性强 2. 缺点 MCU 硬件资源的分配和使用无法清晰知晓, 如堆栈区域的设置等 通常情况下在编译后会有大量的机器码 削弱了编程者的直接硬件控制能力 4.1 C51 特点 5

7 4.1.4 C51 与标准 C 的区别 1. 相同点 C51 的语法规定 程序结构及设计方法与标准 C 相同 2. 不同点 数据类型 : 增加了几种 8051 MCU 特有的数据类型 变量的存储模式 : 与 8051 MCU 的存储器紧密相关 指针 :C51 针对 8051 MCU 扩展了存储器特殊指针 函数 :C51 增加了专门的中断服务函数 标准输入输出函数 :C51 的输入输出通过 8051 MCU 的串行口实现, 因此执行标准输入输出函数之前必须对串行口进行初始化 预处理命令 :C51 针对标准 8051 MCU 增加了相应的 SFR 头文件 reg51.h 4.1 C51 特点 6

8 4.1.5 C51 编译器 1. C51 编译器 将 C51 程序转为机器语言 2. 常用软件 集成开发环境 IDE: 将程序设计全过程所需的各项功能集合在一起, 提供完整解决方案 Franklin C51 编译器 : 基于 Keil, 可产生最少的代码, 目前很少用 IAR Embedded Workbench: 支持 8,16,32 位多种嵌入式控制器, 如 51, MSP430,ARM 等, 国外用户很多, 国内较少 ( 盗版比较少 ) Keil uvision: 最流行的 C51 编译器, 从 uvision 3 开始支持 ARM, 目前已经到 uvision5 版本 4.1 C51 特点 7

9 4.2.1 数据类型 1. C51 编译器支持的数据类型数据类型位数字节数值域 [signed] char to +127 unsigned char to 255 [signed] int to unsigned int to [signed] long to unsigned long to float 32 4 ± E-38 to ± E+38 bit 1 0 to 1 Sbit 1 0 to 1 Sfr to 255 sfr to C51 基础 8

10 4.2.1 数据类型 2. bit 功能 : 用于声明一个位变量, 其寻址空间在通用 RAM 中, 位地址为 00-7FH 的位空间 例 : bit flag=0; bit 变量和声明有以下限制 : 1) 一个位不能被声明为一个指针, 例 : bit *ptr; // 非法 2) 不能用一个 bit 类型的数组, 例 :bit NumArray[5]; // 非法 3. sbit 功能 : 和 bit 相似, 但所声明的位变量是位于 SFR 区的可位寻址空间 例 :sbit P=0xD0;//P 变量地址为 0xD0 声明 sbit 数据类型变量时, = 表示 sbit 变量的地址 ; 声明 bit 数据类型变量时, = 表示 bit 变量的初始值 4.2 C51 基础 9

11 4.2.1 数据类型 4. sfr 功能 : 用于定义与 SFR 相关的字节变量 例 : sfr P0=0x80;//P0 口地址为 0x80 注意 : = 后是 80H~FFH 之间的常数, 即该 SFR 的地址, 不能是表达式 5. sfr16 功能 : 和 sfr 相似, 用于定义 16 位的特殊功能寄存器 例 :sfr16 DPTR=0x82; // 指定 DPTR 地址, DPL=0x82,DPH=0x83 注意 : 要求低字节和高字节连续存储, 在变量定义中出现的是低字节地址 4.2 C51 基础 10

12 4.2.2 存储器类型与存储模式 1. C51 数据的存储器类型 存储器类型 code data idata bdata xdata pdata 存储空间描述程序存储器 (ROM)64 KB 空间 直接访问的内部 RAM 低 128B 空间, 访问速度最快 间接访问的内部 RAM 256B 空间可位寻址的内部 RAM 16B(20H-2FH), 可以按字节访问也可以按位访问 外部数据存储器 (XRAM)64 KB 空间 分页的外部数据存储器 256 B/ 每页 注意 : 访问内部 RAM 比较快, 应该把频繁使用的变量放置在内部 RAM 中 4.2 C51 基础 11

13 2. 程序存储器 4.2 C51 基础 存储器类型与存储模式 只读 51 硬件决定最多可能有 64KB 的程序存储区 3. 内部数据存储器 Data: 低 128 字节的内部直接寻址 RAM 空间, 寻址范围为 0-127, 存取速度最快 Idata: 全部 256 个字节的内部间接寻址 RAM 空间, 寻址范围 0-255, 访问速度比直接寻址慢 bdata: 可位寻址的 16 字节内部存储区 (20H-2FH), 位地址范围为 0-127, 允许按字节和按位寻址, 声明可位寻址的数据类型 4. 外部数据存储器 xdata: 通过 访问 pdata: 通过 访问 注意 : 访问内部 RAM 比较快, 应该把频繁使用的变量放置在内部 RAM 中 12

14 4.2.2 存储器类型与存储模式 5. 存储模式 变量定义格式 : 数据类型 [ 存储器类型 ] 变量名 ( 在变量的声明中, 可以包括存储器类型, 也可以不包括存储器类型 ) char code text[] = "ENTER PARAMETER"; char data var1; float idata x,y,z; char bdata flags; unsigned long xdata array[100]; unsigned int pdata dimension; float x,y,z; // 未包括存储器类型 unsigned long array[100]; // 未包括存储器类型若变量的定义中没有声明存储器类型, 编译器将自动选用默认的存储器类型 默认的存储器类型由编译器的参数 SMALL COMPACT 及 LARGE 决定 4.2 C51 基础 13

15 4.2.2 存储器类型与存储模式 5. 存储模式 存储模式 SMALL COMPACT LARGE 描述默认情况下将变量存放到可直接寻址的内部数据存储区 (data) 默认情况下将变量存放到外部数据存储区的前 256Bytes(pdata) 默认情况下将变量存放到外部数据存储区 (xdata) Small 模式 : 缺省变量参数均装入内部 RAM, 优点是访问速度快, 缺点是空间有限, 适用于小程序 Compact 模式 : 缺省变量均位于外部 RAM 区的一页 (256Bytes) 优点是空间较 Small 宽裕, 速度较 Small 慢 较 large 要快 Large 模式 : 缺省变量可放在 64KB 的外部 RAM 区, 优点是空间大, 可存变量多, 缺点是速度较慢 4.2 C51 基础 14

16 4.2.2 存储器类型与存储模式 6. 存储器类型定义的几个注意点 data 区空间小 只有频繁用到或对运算速度要求很高的变量才放在 data 区, 比如 for 循环中的计数值 data 区内最好放局部变量 因为局部变量的空间是可以覆盖的 ( 某个函数的局部变量空间在退出该函数时就释放, 由别的函数的局部变量覆盖 ), 可以提高内存利用率 程序中使用的位标志变量可以定义到 bdata 中, 大大降低内存占用空间 不频繁用到和对运算速度要求不高的变量都放到 xdata 区 如果想节省 data 空间, 编译器应选择 large 模式, 使得未定义存储器类型的变量全部定义到 xdata 区 最好对所有变量都指定内存类型 4.2 C51 基础 15

17 4.2.3 数组 1. 一维数组 格式 : 数据类型 [ 存储器类型 ] 数组名 [ 常量表达式 ]; 例 :unsigned char data student_score[10]; 2. 二维数组 unsigned char code SEG_TAB [ ] = 0x3f, 0x06,0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f; 格式 : 数据类型 [ 存储器类型 ] 数组名 [ 常量表达式 1] [ 常量表达式 2]; 例 : int xdata a[3][4]; unsigned char code LED[2][5] = 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9; / 按行顺序初始化 unsigned char code LED[2][5] = 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9; // 按元素顺序初始化 4.2 C51 基础 16

18 4.2.4 指针 C51 中的指针与间接寻址寄存器 (R0/R1/DPTR) 所起的作用相同 1. 通用指针 格式 : 数据类型 * [ 指针变量存储器类型 ] 指针标识符 数据类型 : 该指针所指向的变量的数据类型 指针变量存储器类型 : 指针变量本身的存储器类型 指针定义 int *numptr; long *state; char * xdata strptr; int * data numptr; 说明 int 型变量的指针 numptr Long 型变量的指针 state 指向字符型的通用指针 strptr, 指针变量存放在外部数据存储器中指向整型的通用指针 numptr, 指针变量存放在内部直接访问数据存储器中 若指针变量定义中未说明存储器类型, 则由编译模式决定 通用指针为 3 字节 4.2 C51 基础 17

19 4.2.4 指针 2. 特殊指针 定义格式 : 数据类型变量存储器类型 * [ 指针变量存储器类型 ] 指针标识符 与通用指针比较, 定义中包含了指针所指变量的存储器类型 即特殊指针规定了其能够访问的存储空间区域 例 :char data * str; int xdata * pow; // str 指向 data 区中 char 型变量 // pow 指向外部 RAM 的 int 型变量 指向 idata data bdata 和 pdata 的特殊指针只需一个字节保存 ; 指向 code 和 xdata 的特殊指针需要两个字节保存 4.2 C51 基础 18

20 4.2.4 指针 3.C51 指针的应用 单目运算符 &: 是取变量地址的运算符, 用 & 可以将变量的地址赋给一个指针变量 单目运算符 *: 用于指针变量间接访问所指向的变量 指针定义 int *ptr0; char data *ptr1; int data x; char data a[5]; ptr0=&x; ptr1 = &a[0]; *ptr1 = 0x55; 说明 ptr0 为普通指针 Ptr1 为特殊指针, 作为 data 区字符型变量的指针 x 为 data 区的整型变量 a[5] 为 data 区字符型的数组将变量 x 的地址赋给指针 ptr0, 即 ptr0 作为 x 变量的指针将数组 a 的首地址赋给指针 ptr1,ptr1 作为数组的指针给指针 ptr1 所指的变量赋值, 等价于 a[0]=0x C51 基础 19

21 4.2.5 函数 C51 中函数的作用与汇编程序中的子程序相同 1. 函数的定义 [return_type] funcname([args]) [small compact large] [reentrant] [interrupt n] [using n] Return_type: 和标准 C 中函数的定义相同, 说明函数的返回值类型, 或未明确说明函数的返回值类型, 则默认为整型 Funcname: 函数的名字 Args: 函数的参数表列 Small, compact, or large: 说明函数的存储器模式 Reentrant: 说明函数是可递归或可重入的 Interrupt: 说明该函数是一个中断处理子程序 Using: 指定该函数所使用的寄存器组 4.2 C51 基础 20

22 4.2.5 函数 1. 函数的定义 例 : 求两个数之和的函数 int sum(int a,int b) return a+b; 分析 : 该函数名为 sum, 包括 2 个输入参数, 且数据类型均为整形变量 函数的返回值也是整形的 在本例中忽略了 4 个选择项 ( 包括 memory,reentrant,interrupt 和 using) 的声明, 传递给该函数的参数将使用默认的 small 存储模式, 被存放到内部数据存储区 ; 该函数不是递归函数, 也不是中断服务函数 另外, 该函数选择的工作寄存器组为第 0 组 4.2 C51 基础 21

23 4.2.5 函数 2. 中断函数 C51 处理中断的方法 : 当中断发生时, 跳转到中断函数, 执行完毕后, 自动返回主程序 定义 :[void] 中断函数名 ()interrupt 中断号 [using n] C51 编译器最多可支持 32 个中断 interrupt 属性后的参数 ( 中断号 ) 的取值范围为 0~31 详细内容将在第 5 章中断系统中介绍 4.2 C51 基础 22

24 4.2.5 函数 3.C51 库函数 (1) 本征函数 :C51 的本征库函数定义在 intrins.h 头文件中 程序中要用到本 征库函数时, 必须包含 #inclucle <intrins.h> 头文件 函数名 简要说明 _crol_,_cror_ 将 char 型变量循环向左 ( 右 ) 移动指定位数后返回 _iror_,_irol_ 将 int 型变量循环向左 ( 右 ) 移动指定位数后返回 _lrol_,_lror_ 将 long 型变量循环向左 ( 右 ) 移动指定位数后返回 _nop_ 相当于插入 NOP _testbit_ 相当于 JBC bit 测试该位变量并跳转同时清 0 _chkfloat_ 测试并返回浮点数状态 4.2 C51 基础 23

25 4.2.5 函数 4.C51 库函数 (2) 非本征函数 : 包括 6 类重要的库函数 使用时, 库函数对应的头文件用 include 进行包含 该类函数效率低 代码长 序号头文件说明 1 reg51.h 包括了所有 8051 的 SFR 及其位定义, 一般系统都必须包括本文件 2 absacc.h 定义绝对存储器访问的宏, 以确定各存储空间的绝对地址 3 stdlib.h 包括数据类型转换和存储器分配函数 4 string.h 包含字符串和缓存操作函数, 定义了 NULL 常数 5 stdio.h 包含流输入输出的原型函数, 定义 EOF 常数 6 math.h 包含数学计算库函数注意 :stdio.h 流输入 / 输出函数缺省为通过 8051 的串口读写数据, 因此在使用 stdio.h 库中的函数之前, 应先对串行口进行初始化 4.2 C51 基础 24

26 4.2.6 预处理命令 1. 宏定义 格式 :#define 标识符常量表达式 例 :#define Vref 2430 // 定义参考电压 Vref 为 2430 这个数值, 单位 mv 作用 : 用一些有意义的标识符代替常数, 提高程序的可读性 ; 所有宏定义都集中放在程序的开始处, 便于检查和修改, 提高程序的可靠性 若需要修改程序中的某个常量, 也不必修改整个程序, 只需修改相应的宏定义即可 注意 : 带参数的宏定义形参一定要带括号 #define MAX(a,b) ((a)>(b)?(a):(b)) // 带参数宏定义, 求最大值 #define CUBE(x) (x)*(x)*(x) //x 的立方 4.2 C51 基础 25

27 4.2.6 预处理命令 2. 文件包含 格式 :#include < 文件名 > 或 #include 文件名 作用 : 一个程序文件将另一个指定文件的全部内容包含进来, 于是改程序就可直接调用该文件所包含的函数 例如 : #include <intrins.h> 表示将 C51 编译器提供的本征库函数的说明文件 intrins.h 包含到本程序中 #include < reg51.h> reg51.h 是 C51 编程时最常用的头文件, 其定义了 8051 微控制器的特殊功能寄存器和位寄存器 用文件包含命令后, 程序就可以直接使用 8051MCU 中的 SPF, 而不需再进行定义 4.2 C51 基础 26

28 4.2.6 预处理命令 2. 文件包含 通常 #include < 文件名 >: 常用于包含标准头文件 ;#include 文件名 : 常用于包含用户自己编写的头文件 在进行较大规模程序设计时, 文件包含命令十分有用 可将多个功能函 数分散到多个程序文件中, 分别由多人完成编程, 最后再用 #include 命 令将它们嵌入到一个总的程序文件中去 4.2 C51 基础 27

29 4.3.1 顺序结构 顺序结构就是按照语句顺序逐步执行的程序, 每条语句顺序执行一次 例 4-3: 求两个整数的差, 并返回其差值 #include<stdio.h> // 包含非本征函数 ( 输入输出函数 ) int sub(int u,int v) // 求两个整数的差, 并返回其差值 int tmp; temp=u-v; return(temp); void main() int result,a=150,b=35; result=sub(a,b); // 将差值赋给 result 4.3 C51 的流程控制 28

30 4.3.2 选择结构 1.If 语句 : 用于根据条件选择的简单分支结构 if 语句有三种基本形式 (1) if( 条件表达式 ) 动作 如果条件表达式的值为 真 ( 非 0 的整数 ), 则执行 内的动作 ; 如果条件表达式为 假 ( 为 0), 则略过该动作执行后面的程序 (2)if( 条件表达式 ) 动作 1 else 动作 2 如果条件表达式的值为 真, 则执行动作 1, 略过 else 后的动作 2 部分, 执行后面的程序 ; 如果条件表达式的值为 假, 则略过动作 1 而执行 else 后的动作 2, 然后再往下执行 在选择的结构中, 注意 else 与前面最靠近它的 if 配对 4.3 C51 的流程控制 29

31 4.3.2 选择结构 1.If 语句 (3) if( 条件表达式 1) 动作 A else if ( 条件表达式 2) 动作 B else if ( 条件表达式 3) 动作 C else 动作 D 条件表达式 1 成立时, 执行动作 A; 条件表达式 1 不成立 2 成立, 执行动作 B; 条件表达式 1 2 不成立 3 成立, 执行动作 C; 条件表达式 均不成立时, 执行动作 D 4.3 C51 的流程控制 30

32 4.3.2 选择结构 例 4-4: 在 a b 两数中, 求其大者并存入 c 中 if(a>b) c=a; else c=b; 例 4-5: 已知变量 x 存放于 VAR 单元, 试编程按照下式给 y 赋值, 并将结果存入 FUNC 单元 main() 4.3 C51 的流程控制 char VAR,FUNC; //VAR 存放的是变量 x VAR=3; // 给 X 赋一个数 if (VAR<5) FUNC=VAR-1; else if (VAR>10) FUNC=VAR+1; else FUNC=0; return 0; 31

33 4.3.2 选择结构 例 4-6: 有一组带符号数的数据块, 数据块长度为 LEN 试统计该数据块中正数 负数和零的个数, 并分别存入内存 PCOUNT MCOUNT 和 ZCOUNT 单元中 main() char LEN=10; // 给数据块长度赋一个值 int a[10]=1,-1,0,7,5,-5,-8,0,-4,8; char pcount=0,mcount=0,zcount=0; // 存放正数 负数和零的个数 for(i=0;i<len;i++) if(a[i]<0) mcount ++; else if(a[i]==0) zcount ++; else pcount ++; return 0; 4.3 C51 的流程控制 32

34 4.3.2 选择结构 2.swich-case 语句 : 适用于多选一的多路分支结构 switch( 条件表达式 ) case 条件值 1; 动作 1; break; case 条件值 2; 动作 2; break;......; default: 动作 n; break; 4.3 C51 的流程控制 注意 : 条件表达式的结果必须为整数或字符 switch 将条件表达式的值与各 case 的条件值对比, 如果与某个条件相符合, 则执行该 case 动作, 如果所有的条件值都不符合, 则执行 default 的动作 每一个动作之后一定要写 break, 否则会有错误 case 之后的条件值必须是数据常数, 条件值必须各不相同 33

35 4.3.2 选择结构 例 4-7: 根据 temp 的值执行相应的函数 switch (temp) case 1: do_ack();break; case 2: do_cack();break; case 3: do_mnack();break; default :break; 4.3 C51 的流程控制 34

36 4.3.3 循环结构 1.While 循环语句 while( 条件表达式 ) 动作 当条件表达式为 真 时, 执行循环内的动作, 做完之后又继续跳回条件表达式做测试, 如此反复 直到条件表达式为 假 时为止 使用时要避免条件永远为 真, 而造成死循环 例 4-8: 用 while 语句求 1 到 100 的和 main() int i,sum; i=1; sum=0; while(i<101) sum=sum+i; i++; printf("sum=%d",sum); 4.3 C51 的流程控制 35

37 4.3.3 循环结构 例 4-9: 把起始地址为 DATA, 长度为 LEN 的数据串, 传送到 BUFFER 为首址 的区域, 直到发现 $ 的 ASCII 码 (24H) 为止 4.3 C51 的流程控制 #include <reg51.h> main() char LEN=10; // 初始化数据串长度 char data[10]=a,b,c,1,3, $,9,A,B,C ; // 源数据串 char buffer[10]= ; // 定义目标数据串 char i=0; for(i=0;i<len;i++) if(data[i]!=24h) buffer[i]=data[i]; else break; 36

38 4.3.3 循环结构 2.do-while 循环语句 do 动作 while ( 条件表达式 ) 先执行动作后, 再测试条件表达式是否成立 当条件表达式为 真 时, 继续回 到前面执行动作, 如此反复, 直到条件表达式为 假 为止 不论条件表达式的 结果为何,do-while 语句至少会做一次动作 例 4-10: 用 do-while 语句求 1 到 100 的和 main() int i,sum; i=1;sum=0; do sum=sum+i; i++; while(i<101); printf("sum=%d",sum); 4.3 C51 的流程控制 37

39 4.3.3 循环结构 例 4-11: 用 do-while 语句编写延时程序 void delay() int x=20000; do x=x-1; while(x); //2us 当晶振频率为 12MHz 时, 一个机器周期为 1us 以上 do-while 循环语 句经 C51 编译后, 是用 DJNZ 指令完成的 该程序的延时时间约为 T=2*20000us=40ms 4.3 C51 的流程控制 38

40 4.3.3 循环结构 3.for 语句 for( 表达式 1; 表达式 2; 表达式 3) 动作 表达式 1: 通常设定初始值 表达式 2: 通常是条件表达式 如果条件为 真, 执行动作 ; 否则, 终止循环 表达式 3: 通常是步长表达式 动作执行后, 必须再回到这里做运算, 然后再到表达 2 做判断 例 4-12: 用 for 语句求 1 到 100 的和 main() int i,sum; sum=0; for(i=1;i<101;i++) sum=sum+i; printf("sum=%d",sum); 4.3 C51 的流程控制 39

41 4.3 C51 的流程控制 循环结构 例 4-13: 已知内部 RAM 有一个无符号数的数据块, 其块长在 LEN 单元, 试编程求出数据块中的最大值, 并存入 MAX 单元 #include <reg51.h> main() unsigned char max=0,j=0; //max 变量用于存放数据块的最大值 unsigned char a[10]; // 定义数组 a[4] 存放无符号数的数据块 char LEN=10; // 变量 LEN 存放数据块长度, 长度为 5 for(j=0;j<len;j++) // 定义从 a[0] 开始的 LEN 个地址中的值, 分别为 0,1...,9 a[j]=j; max=a[0]; for (j=0;j<len;j++) // 找最大值 if(max<=a[j]) max=a[j]; return 0; 40

42 4.3.3 循环结构 例 4-14: 编程将片内 RAM 从某一单元开始的 8 字节 16 进制数据转换为 16 个 ASCII 码, 存放到内部 RAM 中 ( 题目要求与第 3 章例 3-35 相同 ) /*********************** 主函数 ********************/ main(void) int j = 0; unsigned char a[8] = 0x55,0xab,0x63,0x18,0x5a,0x23,0x46,0xf2; // 存放 8 个字节的 16 进制数据 char b[16]; // 定义数组 b[] 用于存放转换后的 ASCII 码 for(j = 0; j < 8; j++) b[2*j] = Num2ASCII(a[j]&0x0f); b[2*j+1] = Num2ASCII(a[j]&0xf0/16); while(1); 4.3 C51 的流程控制 41

43 4.3.3 循环结构 例 4-14: 编程将片内 RAM 从某一单元开始的 8 字节 16 进制数据转换为 16 个 ASCII 码, 存放到内部 RAM 中 ( 题目要求与第 3 章例 3-35 相同 ) /****************** 一位 16 进制数转换为 ASCII 函数 *****************/ char Num2ASCII(unsigned char num) if(num <= 9) return num+'0'; // 如果是 0~9 的数据, 则转换成 0, else return num-10+'a'; // 如果是 A~F 的数, 则转换成 A, B,... F 4.3 C51 的流程控制 42

44 1. 注释 C51 语言编程风格 作用 : 用于解释代码的目的 功能和采用的方法, 有助于对程序的阅读理解 方式 : 对于逐行的代码注释, 一般用 // 表示注释部分, 也可将注释部分 放在 /* 和 */ 符号之间 对于有多行的大段注释使用后者更为方便 2.define 的使用 在程序中应用 define 可以用一个简单的符号名来替换一个很长的字符串 ; 也可 以使用一些有一定意义的标识符, 提高程序的可读性 ; 也可以用来定义常数, 则在需要改变常数的值时, 只要改变该行代码即可 使用 define, 也能使程序 更具可读性 例如 : #define uchar unsigned char #define u16 unsigned int #define LCD-com1 0x34 #define PI // 定义一个 LCD 的命令 // 定义 π 常数 4.4 C51 程序设计方法 43

45 4.4.1 C51 语言编程风格 3. 命名规则 (1) 常量的命名 常量全部要用大写字母 当常量命名含有多个单词时, 中间一般用下划线分开 例 :const float PI = 3.142; const unsigned int MAX_LENGTH = 1000; (2) 变量的命名 变量名采用小写字母开头的单词组合, 当有多个单词时也用下划线隔开, 而 且除第一个单词外的其他单词首字母大写, 全局变量一般以 g_ 来开头 例 :char maxvalue; unsigned int g_counter; (3) 函数的命名 函数名一般首字母大写, 若包括多个单词时, 通常每个单词的首字母都大写 例 :bit TransmitData (char data); 4.4 C51 程序设计方法 44

46 4.4.1 C51 语言编程风格 4. 程序结构 文件包含 : 宏定义 : 全局变量 : 自定义函数声明 : 主函数 : 自定义函数体 : 4.4 C51 程序设计方法 #include <reg51.h> #define char g_idnum; int g_score; char function1(); int function2(int x, int y); void main() char temp; temp=function1(); g_score=function2(29,30); while(1) char function1() // 函数体 int function2(int x, int y) // 函数体 可有多个 #include, h 文件 也可以用户建立 main 函数也可在自 定义函数体之后 // 局部变量 // 自定义函数调用 // 自定义函数调用 对于 8051 微控制器来说, 主程序必须是无限循环程序, 可用 while(1) do while(1) 或 for 语句实现 45

47 4.4.2 C51 程序设计应注意的问题 1. 赋值运算和等值运算 赋值运算为 = ; 等值运算为 = = if (x == y) // 当 x 与 y 相当时, 其结果为 1, 否则为 0 if (x = y) // 将 y 赋值给 x, 只有当 y 为 0 时, 其结果才为 0, 否则结果总为 1( 非 0 为 1) 2. 数组的下标范围 一个 N 个元素的数组, 数组的下标范围是 0~N-1 3. 运算符的优先顺序 (1) 指针运算符 * 比加法运算符 + 的优先级高 x=*pa+1 // 取指针 pa 所指的内容并加上 1 之后再赋值给变量 x x=*(pa+1) // 取指针 pa 的下一个地址中的内容并赋值给变量 x (2) + 的优先级高于 *= b*=c+1 // 等价于 b=b*(c+1), 而非 b=b*c+1 4. 指针初始化 指针的初始化是定义指针所指向的内存地址 char *var, buf[20]; // 此时指针尚未初始化, 指向地址不明确 var = buf; // 指针初始化有效, 使其指向确定的地址 ( 即 buf[0] 的地址 ) 4.4 C51 程序设计方法 46

48 4.4.3 基本程序设计 例 4-15: 设计从 P1.0 输出周期为 10ms 方波的程序 分析 : 通过 P1.0 定时输出高 / 低电平, 其中高电平 5ms 低电平 5ms 定时通过软件 的循环计数来实现, 当系统晶振为 12MHz 时, 一次循环约 2 s, 因此计数 2500 次可实 现 5ms 的延时 4.4 C51 程序设计方法 #define uint unsinged int #include <reg51.h> sbit P1_0=P1^0; // 定义 P1.0 void del_n_ms(uint n) // 延时 n(ms) 的子函数 uint i,j; for(i=0;i<n;i++) // 循环时间为 n*500*2us=n(ms) for(j=0;j<500;j++); //for 语句一个循环约为 2us void main() while(1) // 无限循环 P1_0 =!P1_0; //P1.0 取反 del_n_ms(5); // 延时 5ms 47

49 4.4.3 基本程序设计 例 4-16: 设计一个实验电路, 用 8051 MCU 的 P1 口连接 8 个发光二极管 (LED), 要求这 8 个 LED 依次点亮并不断循环 ( 走马灯 ) #include"reg51.h void main() // 主函数 char data i,s; while(1) // 无穷循环 s=0xfe; // 最低位为 0, 点亮最低位 LED P1=s; // 向 P1 口输出数据,L0 先点亮 del_n_ms(200); // 延时 0.2s, 即以 0.2 秒间隔轮流点亮 LED for(i=0; i<7; i++) s = s<<1; //s 值左移一位, 最低位补 0 s = s 0x01; // 使 0 向左移动, 则 LED 移动点亮 P1= s; del_n_ms(200); 4.4 C51 程序设计方法 48

50 4.5 模块化程序设计 模块化程序设计 : 多文件程序设计, 即工程化设计 在这样的一个工程化设计中, 往往会有多个 h 文件及 c 文件 关键 : 一个模块实现了什么样的功能, 提供什么接口, 如何调用? 无需内部细节 优点 : 便于项目分工, 调试, 结构清晰 可读性和可移植性好 头文件 : 通常对于一个 C 文件 (.c), 设计一个对应的头文件 (.h 文件 ) h 文件的名字与 c 文件的名字保持一致 模块化实现方法 : 将一个功能模块的代码单独编写成一个.c 文件, 然后把该模块需要对外提供的接口函数或变量放在.h 文件中 4.5 模块化程序设计 49

51 4.5 模块化程序设计 #ifndef #define #endif 的用法 格式 : #ifndef < 标识 > #define < 标识 > extern 外部函数或变量声明 #endif #ifdef #ifndef 如果宏已经定义, 则编译下面代码 如果宏没有定义, 则编译下面代码 标识的命名规则一般是头文件名全大写, 前后加下划线, 并把文件名中的. 也变成下划线, 如 :stdio.h #ifndef _STDIO_H_ #define _STDIO_H_... #endif 4.5 模块化程序设计 50

52 4.5 模块化程序设计 #ifndef #define #endif 的用法例如 : 一个 LED.c 文件, 具有一个 LED 驱动函数 :void LedPutChar(char cnewvalue), 其对应的头文件 LED.h 为 : #ifndef _LED_H_ #define _LED_H_ extern void LedPutChar(char cnewvalue) ; #endif 在函数前面添加 extern 修饰符, 表明此函数是一个外部接口函数, 可以被外 部其它模块调用 4.5 模块化程序设计 51

53 4.5 模块化程序设计 例 4-17: 实现 走马灯 电路,P1 口所驱动的 LED 以 1Hz 的频率闪烁, 要求采用定时器实现时间的定时 分析 : 采用模块化设计, 将整个程序分成三个模块 : 定时器模块 LED 驱动模块和主函数模块 main.c Timer.c Timer.h Led.c Led.h 4.5 模块化程序设计 52

54 4.5 模块化程序设计 例 4-17: 实现 走马灯 电路,P1 口所驱动的 LED 以 1Hz 的频率闪烁, 要求采用定时器实现时间的定时 在 Keil C 中, 工程项目包含以下文件 :STARTUP.A51( 自动添加的初始化代码 ), led.c,main.c,timer.c,led.h 以及 timer.h 4.5 模块化程序设计 53

55 4.5 模块化程序设计 (1)Timer.c: 包括定时器与中断初始化, 以及定时器中断服务函数 4.5 模块化程序设计 #include <reg51.h> bit g_bsystemtime1ms = 0 ; // 1ms 系统时标 void Timer0Init(void) TMOD &= 0xf0 ; TMOD = 0x01 ; // 定时器 0 工作方式 1 TH0 = 0xfc ; // 定时器初始值 TL0 = 0x66 ; TR0 = 1 ; ET0 = 1 ; void Time0Isr(void) interrupt 1 TH0 = 0xfc ; // 定时器重新赋初值 TL0 = 0x66 ; g_bsystemtime1ms = 1 ; //1ms 时标标志位置位 54

56 4.5 模块化程序设计 在 Led.c 文件中需要调用 g_bsystemtime1ms 变量 同时主函数需要调 用 Timer0Init() 初始化函数, 所以应该对这个变量和函数在头文件里作外 部声明 /*********************Timer.h *****************/ #ifndef _TIMER_H_ #define _TIMER_H_ extern void Timer0Init(void) ; extern bit g_bsystemtime1ms ; #endif 4.5 模块化程序设计 55

57 4.5 模块化程序设计 (2)LED.c: 包括 LED 点亮 熄灭控制, 状态标志改变两个函数 #include <reg51.h> #include "Led.h" #include "Timer.h" #define uint unsigned int; uint g_u16ledtimecount = 0 ; //LED 计数器 ( 用于计数 1ms 个数 ) bit g_u8ledstate = 0 ; //LED 状态标志,0 表示亮,1 表示熄灭 ; #define LED P1 // 定义 LED 接口 #define LED_ON() LED = 0x00 ; // 所有 LED 亮 #define LED_OFF() LED = 0xff ; // 所有 LED 熄灭 void LedProcess(void) //LED 处理函数 if(0 == g_u8ledstate) // 如果 LED 状态标志为 0, 则点亮 LED LED_ON() ; else LED_OFF() ; // 否则熄灭 LED 4.5 模块化程序设计 56

58 4.5 模块化程序设计 4.5 模块化程序设计 (2)LED.c: 包括 LED 点亮 熄灭控制, 状态标志改变两个函数 void LedStateChange(void) //LED 状态标志改变函数 if(g_bsystemtime1ms) // 1ms 定时到 g_bsystemtime1ms = 0 ; g_u16ledtimecount++ ; //LED 计数器加 1 if(g_u16ledtimecount >= 500) // 计数达到 500ms, 改变 LED 的状态 g_u16ledtimecount = 0 ; g_u8ledstate =! g_u8ledstate ; //LED 状态标志反向, 表示 LED 显示状态要反转 /********************************* Led.h ***************************/ #ifndef _LED_H_ #define _LED_H_ extern void LedProcess(void) ; extern void LedStateChange(void) ; #endif 57

59 4.5 模块化程序设计 (3)main.c: #include <reg51.h> #include "Timer.h" #include "Led.h" void main(void) Timer0Init() ; EA = 1 ; while(1) LedProcess() ; LedStateChange() ; 4.5 模块化程序设计 58

60 附 : KEIL C51 环境及调试举例 1.C51 程序编写与工程建立执行 Keil C 安装目录中的 UV2.EXE/UV3.EXE, 启动 μvision2/3, 进入主窗口, 用窗口中的文件编辑器编写 C51 程序, 程序格式应遵循 C 语言的语法规则 编写完 C51 程序后, 在 μvision51 环境下就可以进行编译 连接, 如果编译连接成功, 还可以调用软件仿真器进行调试 附录 59

61 附 : KEIL C51 环境及调试举例 1.C51 程序编写与工程建立 (1) 编辑源文件 : 单击主菜单项 File -> New, 弹出编辑窗口如图, 可以在此窗口中编辑 C51 程序 附录 60

62 附 : KEIL C51 环境及调试举例 1.C51 程序编写与工程建立 (2) 建立工程文件 : 编写好程序, 执行主菜单 Project -> New Project 选项, 在弹出的窗口中写入工程文件的名称, 并加上后綴 uv2, 如 ex1.uv2 (3) 选择目标器件 : 在 Project 窗口中的 Target1 项目上右击, 选择 Select Device for Target Target1, 可弹出选择单片机型号对话框, 从对话框中的厂家和单片机列表中选择目标系统所用的单片机型号, 本例选择 AT89C51 确认添加 startup.a51 到 project 中 附录 61

63 附 : KEIL C51 环境及调试举例 1.C51 程序编写与工程建立 (4) project 中添加源代码后, 设置生成 Hex 代码文件 : 右击 Target1, 选择 Option for Target Target1, 选择 output, 然后在下拉有关 output 选项菜单中, 对 Create HEX File 可选框中打 (5) 编译 : 执行主菜单 Project -> Rebuild All Target Files 就能自动完成编译, 生成后綴为 obj hex m51 lst 等文件 hex 文件就是我们所需要的目标程序, 可以利用编程器写入单片机的片内程序存储器 (6) 调试 :μvision2 环境可以对程序进行仿真调试, 调试器有两种工作模式在右击 Option for Target Target1 弹出的对话框中选择 Use Simulator 模式, 将调试器配置成纯软件模拟, 不需要实际的硬件支持, 就可以进行模拟调试 若选择 Use 接口驱动模式, 则需要在本机与相关硬件接口相连时才能使用 附录 62

64 附 : KEIL C51 环境及调试举例 2.C51 程序调试步骤 (1) 执行主菜单 Debug -> Start/Stop Debug Session, 进入调试窗口 ( 如图 ) 同时会弹出反汇编窗口 ( 如图 ) 或执行主菜单 View - Disassembly Window 弹出反汇编窗口 在这个窗口里可以应用单步跟踪 设置断点 寄存器观察等手段进行调试 (2) 在目标程序的执行过程中, 可以利用各种窗口 (Regs 窗口 Watch 窗口 Serial 窗口等 ) 观察程序存储器 数据存储器和串口的状态, 以检查程序运行是否符合设计要求, 可随时修正程序中的错误, 优化程序和提高效率 (3) 更详细的功能和操作, 可查阅 Keil C51 手册和有关书籍 附录 63

65 附 : KEIL C51 环境及调试举例 2.C51 程序调试步骤 调试窗口 附录 64

66 THE END THANK YOU 65

6 C51 ANSI C Turbo C C51 Turbo C C51 C51 C51 C51 C51 C51 C51 C51 C C C51 C51 ANSI C MCS-51 C51 ANSI C C C51 bit Byte bit sbit

6 C51 ANSI C Turbo C C51 Turbo C C51 C51 C51 C51 C51 C51 C51 C51 C C C51 C51 ANSI C MCS-51 C51 ANSI C C C51 bit Byte bit sbit 6 C51 ANSI C Turbo C C51 Turbo C C51 C51 C51 C51 C51 C51 C51 C51 C51 6.1 C51 6.1.1 C51 C51 ANSI C MCS-51 C51 ANSI C C51 6.1 6.1 C51 bit Byte bit sbit 1 0 1 unsigned char 8 1 0 255 Signed char 8 11 128

More information

51 C 51 isp 10 C PCB C C C C KEIL

51 C 51 isp 10   C   PCB C C C C KEIL http://wwwispdowncom 51 C " + + " 51 AT89S51 In-System-Programming ISP 10 io 244 CPLD ATMEL PIC CPLD/FPGA ARM9 ISP http://wwwispdowncom/showoneproductasp?productid=15 51 C C C C C ispdown http://wwwispdowncom

More information

1 Project New Project 1 2 Windows 1 3 N C test Windows uv2 KEIL uvision2 1 2 New Project Ateml AT89C AT89C51 3 KEIL Demo C C File

1 Project New Project 1 2 Windows 1 3 N C test Windows uv2 KEIL uvision2 1 2 New Project Ateml AT89C AT89C51 3 KEIL Demo C C File 51 C 51 51 C C C C C C * 2003-3-30 pnzwzw@163.com C C C C KEIL uvision2 MCS51 PLM C VC++ 51 KEIL51 KEIL51 KEIL51 KEIL 2K DEMO C KEIL KEIL51 P 1 1 1 1-1 - 1 Project New Project 1 2 Windows 1 3 N C test

More information

chap07.key

chap07.key #include void two(); void three(); int main() printf("i'm in main.\n"); two(); return 0; void two() printf("i'm in two.\n"); three(); void three() printf("i'm in three.\n"); void, int 标识符逗号分隔,

More information

CC213

CC213 : (Ken-Yi Lee), E-mail: feis.tw@gmail.com 49 [P.51] C/C++ [P.52] [P.53] [P.55] (int) [P.57] (float/double) [P.58] printf scanf [P.59] [P.61] ( / ) [P.62] (char) [P.65] : +-*/% [P.67] : = [P.68] : ,

More information

目 录

目 录 1 Quick51...1 1.1 SmartSOPC Quick51...1 1.2 Quick51...1 1.3 Quick51...2 2 Keil C51 Quick51...4 2.1 Keil C51...4 2.2 Keil C51...4 2.3 1 Keil C51...4 2.4 Flash Magic...9 2.5 ISP...9 2.6...10 2.7 Keil C51...12

More information

1 Project New Project 1 2 Windows 1 3 N C test Windows uv2 KEIL uvision2 1 2 New Project Ateml AT89C AT89C51 3 KEIL Demo C C File

1 Project New Project 1 2 Windows 1 3 N C test Windows uv2 KEIL uvision2 1 2 New Project Ateml AT89C AT89C51 3 KEIL Demo C C File 51 C 51 51 C C C C C C * 2003-3-30 pnzwzw@163.com C C C C KEIL uvision2 MCS51 PLM C VC++ 51 KEIL51 KEIL51 KEIL51 KEIL 2K DEMO C KEIL KEIL51 P 1 1 1 1-1 - 1 Project New Project 1 2 Windows 1 3 N C test

More information

Microsoft PowerPoint - 5. 指针Pointers.ppt [兼容模式]

Microsoft PowerPoint - 5. 指针Pointers.ppt [兼容模式] 指针 Pointers 变量指针与指针变量 Pointer of a variable 变量与内存 (Variables and Memory) 当你声明一个变量时, 计算机将给该变量一个内存, 可以存储变量的值 当你使用变量时, 计算机将做两步操作 : - 根据变量名查找其对应的地址 ; - 通过地址对该地址的变量内容进行读 (retrieve) 或写 (set) 变量的地址称为变量的指针! C++

More information

<4D F736F F D20B5DAC8FDCBC4D5C2D7F7D2B5B4F0B0B82E646F63>

<4D F736F F D20B5DAC8FDCBC4D5C2D7F7D2B5B4F0B0B82E646F63> 第三章 Q3 1 1. 省略了 I/O 操作的复杂逻辑, 易实现, 耗费低 ; 2. 可以利用丰富的内存寻址模式实现灵活的 I/O 操作 Q3 2 假设存储单元 ds1 处寄存器地址为 0x2000, 代码如下 #define ds1 0x2000 while ( *ds1 == 0 ) ; Q3 3 假设设备 (dev1) 中有两个寄存器 ds1 和 dd1,dev1 的地址为 0x1000,ds1

More information

Generated by Unregistered Batch DOC TO PDF Converter , please register! 浙江大学 C 程序设计及实验 试题卷 学年春季学期考试时间 : 2003 年 6 月 20 日上午 8:3

Generated by Unregistered Batch DOC TO PDF Converter , please register! 浙江大学 C 程序设计及实验 试题卷 学年春季学期考试时间 : 2003 年 6 月 20 日上午 8:3 浙江大学 C 程序设计及实验 试题卷 2002-2003 学年春季学期考试时间 : 2003 年 6 月 20 日上午 8:30-10:30 注意 : 答题内容必须写在答题卷上, 写在本试题卷上无效 一. 单项选择题 ( 每题 1 分, 共 10 分 ) 1. 下列运算符中, 优先级最低的是 A.

More information

FY.DOC

FY.DOC 高 职 高 专 21 世 纪 规 划 教 材 C++ 程 序 设 计 邓 振 杰 主 编 贾 振 华 孟 庆 敏 副 主 编 人 民 邮 电 出 版 社 内 容 提 要 本 书 系 统 地 介 绍 C++ 语 言 的 基 本 概 念 基 本 语 法 和 编 程 方 法, 深 入 浅 出 地 讲 述 C++ 语 言 面 向 对 象 的 重 要 特 征 : 类 和 对 象 抽 象 封 装 继 承 等 主

More information

untitled

untitled www.mcudriver.cn 1.1 / 1) WinAVR20070525 2) Source Insight 3) ISP 4) PonyProg ISP 5) USB 6) 1.2. MCU ATMEGA16 1.3. AVR8 1.4 LED0~LED7 1 1.5 #include // Program 1.1 LED.C #define uchar unsigned

More information

C PICC C++ C++ C C #include<pic.h> C static volatile unsigned char 0x01; static volatile unsigned char 0x02; static volatile unsigned cha

C PICC C++ C++ C C #include<pic.h> C static volatile unsigned char 0x01; static volatile unsigned char 0x02; static volatile unsigned cha CYPOK CYPOK 1 UltraEdit Project-->Install Language Tool: Language Suite----->hi-tech picc Tool Name ---->PICC Compiler Executable ---->c:hi-picinpicc.exe ( Command-line Project-->New Project-->File Name--->myc

More information

JLX

JLX PRODUCT:LCD MODULE. Model No.: JLX177-006 Product Type: 1.77 inch QVGA TFT Modoule. 产品规格书 晶联讯研发研发部 : Written By Checked By Approved By 客户名称 : 结构电子核准 地址 : 深圳市宝安区西乡宝安大道东华工业区 A3 栋 6 楼电话 :0755-29784961 Http://www.jlxlcd.cn

More information

《C语言程序设计》教材习题参考答案

《C语言程序设计》教材习题参考答案 教材名称 : C 语言程序设计 ( 第 1 版 ) 黄保和 江弋编著清华大学出版社 ISBN:978-7-302-13599-9, 红色封面 答案制作时间 :2011 年 2 月 -5 月 一 选择题 1. 设已定义 int a, * p, 下列赋值表达式中正确的是 :C)p=&a 2. 设已定义 int x,*p=&x;, 则下列表达式中错误的是 :B)&*x 3. 若已定义 int a=1,*b=&a;,

More information

OOP with Java 通知 Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢 学习使用文本编辑器 学习使用 cmd: Power shell 阅读参考资料

OOP with Java 通知 Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢   学习使用文本编辑器 学习使用 cmd: Power shell 阅读参考资料 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢 Email: 51141201063@ecnu.cn 学习使用文本编辑器 学习使用 cmd: Power shell 阅读参考资料 OOP with Java Java 类型 引用 不可变类型 对象存储位置 作用域 OOP

More information

C语言的应用.PDF

C语言的应用.PDF AVR C 9 1 AVR C IAR C, *.HEX, C,,! C, > 9.1 AVR C MCU,, AVR?! IAR AVR / IAR 32 ALU 1KBytes - 8MBytes (SPM ) 16 MBytes C C *var1, *var2; *var1++ = *--var2; AVR C 9 2 LD R16,-X ST Z+,R16 Auto (local

More information

新・明解C言語入門編『索引』

新・明解C言語入門編『索引』 !... 75!=... 48 "... 234 " "... 9, 84, 240 #define... 118, 213 #include... 148 %... 23 %... 23, 24 %%... 23 %d... 4 %f... 29 %ld... 177 %lf... 31 %lu... 177 %o... 196 %p... 262 %s... 242, 244 %u... 177

More information

1-1 SH79F6431 A. 2( ) 9~15V ( 12V) U2 U3 3.3V SH79F B. 1(VCC/GND) SH79F6431 C. VDDIO SH79F6431 P4 P5 P0.6 P0.7 VDDIO VDDIO=5V D. 2 V 1.0

1-1 SH79F6431 A. 2( ) 9~15V ( 12V) U2 U3 3.3V SH79F B. 1(VCC/GND) SH79F6431 C. VDDIO SH79F6431 P4 P5 P0.6 P0.7 VDDIO VDDIO=5V D. 2 V 1.0 SH79F6431 1. SH79F6431 1T 8051 FLASH SH79F JET51 Keil µ vision JTAG 1.1. SH79F6431 LQFP64 1.2. (Target Board) SH79F6431 1 V 1.0 1-1 SH79F6431 A. 2( ) 9~15V ( 12V) U2 U3 3.3V SH79F6431 1 2 1 B. 1(VCC/GND)

More information

nooog

nooog C : : : , C C,,, C, C,, C ( ), ( ) C,,, ;,, ; C,,, ;, ;, ;, ;,,,, ;,,, ; : 1 9, 2 3, 4, 5, 6 10 11, 7 8, 12 13,,,,, 2008 1 1 (1 ) 1.1 (1 ) 1.1.1 ( ) 1.1.2 ( ) 1.1.3 ( ) 1.1.4 ( ) 1.1.5 ( ) 1.2 ( ) 1.2.1

More information

Microsoft Word - LMB402CBC-AppNote-V0.1.doc

Microsoft Word - LMB402CBC-AppNote-V0.1.doc LMB402CBC 液晶显示模块应用参考 深圳市拓普微科技开发有限公司 版本描述日期编者 0.1 新版本 2006-02-09 杨军 http://www.topwaysz.com 1 / 1 目录 1 概述 3 2 硬件接口 3 3 软件特性 3 3.1 控制器接口信号说明 3 3.2 模块指令系统 4 4 显示数据存储器的地址 4 5 字符发生器 CGRAM 的地址 5 6 应用举例 5 6.1

More information

<4D F736F F F696E74202D20B5DA32D5C220B5A5C6ACBBFA433531D3EFD1D4BBF9B4A1>

<4D F736F F F696E74202D20B5DA32D5C220B5A5C6ACBBFA433531D3EFD1D4BBF9B4A1> 第 2 章 单片机 C51 语言基础 2.1 C51 语言的基本知识 2.2 运算符与表达式 2.3 指针与绝对地址访问 2.4 本章小结 2.5 实训二发光二极管流水广告灯 返回首页 教学提示 随着单片机开发技术的不断发展, 目前已有越来越多 的人从普遍使用汇编语言逐渐过渡到使用高级语言开发, 其中又以 C 语言为主, 市场上几种常见的单片机均有其 C 语言开发环境 应用于 51 系列单片机开发的

More information

Microsoft PowerPoint - 4. 数组和字符串Arrays and Strings.ppt [兼容模式]

Microsoft PowerPoint - 4. 数组和字符串Arrays and Strings.ppt [兼容模式] Arrays and Strings 存储同类型的多个元素 Store multi elements of the same type 数组 (array) 存储固定数目的同类型元素 如整型数组存储的是一组整数, 字符数组存储的是一组字符 数组的大小称为数组的尺度 (dimension). 定义格式 : type arrayname[dimension]; 如声明 4 个元素的整型数组 :intarr[4];

More information

《C语言程序设计》第2版教材习题参考答案

《C语言程序设计》第2版教材习题参考答案 教材 C 语言程序设计 ( 第 2 版 ) 清华大学出版社, 黄保和, 江弋编著 2011 年 10 月第二版 ISBN:978-7-302-26972-4 售价 :35 元 答案版本 本习题答案为 2012 年 2 月修订版本 一 选择题 1. 设已定义 int a, * p, 下列赋值表达式中正确的是 :C)p = &a A. *p = *a B. p = *a C.p = &a D. *p =

More information

( CIP) /. :, ( ) ISBN TP CIP ( 2005) : : : : * : : 174 ( A ) : : ( 023) : ( 023)

( CIP) /. :, ( ) ISBN TP CIP ( 2005) : : : : * : : 174 ( A ) : : ( 023) : ( 023) ( CIP) /. :, 2005. 2 ( ) ISBN 7-5624-3339-9.......... TP311. 1 CIP ( 2005) 011794 : : : : * : : 174 ( A ) :400030 : ( 023) 65102378 65105781 : ( 023) 65103686 65105565 : http: / /www. cqup. com. cn : fxk@cqup.

More information

bingdian001.com

bingdian001.com TSM12M TSM12 STM8L152C6, STM8L152R8 MSP430F5325 whym1987@126.com! /******************************************************************************* * : TSM12.c * : * : 2013/10/21 * : TSM12, STM8L f(sysclk)

More information

2 12

2 12 SHENZHEN BRILLIANT CRYSTAL TECHNOLOGIC CO.,LTD. The specification for the following models Graphic LCM serial communication control board CB001 PROPOSED BY APPROVED Design Approved TEL:+86-755-29995238

More information

2015年计算机二级(C语言)模拟试题及答案(三)

2015年计算机二级(C语言)模拟试题及答案(三) 2016 年计算机二级 (C 语言 ) 模拟试题及答案 (3) 1.( A ) 是构成 C 语言程序的基本单位 A 函数 B 过程 C 子程序 D 子例程 2.C 语言程序从 ( C ) 开始执行 A 程序中第一条可执行语句 B 程序中第一个函数 C 程序中的 main 函数 D 包含文件中的第一个函数 3 以下说法中正确的是( C ) A C 语言程序总是从第一个定义的函数开始执行 B 在 C 语言程序中,

More information

C/C++语言 - C/C++数据

C/C++语言 - C/C++数据 C/C++ C/C++ Table of contents 1. 2. 3. 4. char 5. 1 C = 5 (F 32). 9 F C 2 1 // fal2cel. c: Convert Fah temperature to Cel temperature 2 # include < stdio.h> 3 int main ( void ) 4 { 5 float fah, cel ;

More information

Microsoft Word - ~ doc

Microsoft Word - ~ doc EEPROM 功能使用方法 1 适用产品 : 1.1 SM39R16A2/ SM39R12A2/ SM39R08A2 1.2 SM39R4051/ SM39R2051 1.3 SM39R04G1/ SM39R02G1 2 EEPROM 功能概述 : 2.1 使用 code flash 仿真为 Internal EEPROM, 在程序执行时, 可将 code flash 作为 data flash 储存数据使用

More information

网C试题(08上).doc

网C试题(08上).doc 学习中心 姓名 学号 西安电子科技大学网络与继续教育学院 高级语言程序设计 (C) 全真试题 ( 闭卷 90 分钟 ) 题号一二三总分 题分 60 20 20 得分 一 单项选择题 ( 每小题 3 分, 共 60 分 ) 1.C 语言程序的基本单位是 A) 程序行 B) 语句 C) 函数 D) 字符 2. 下列四组选项中, 均是不合法的用户标识符的选项是 A)A B)getc C)include D)while

More information

移动平台应用软件开发 C/C++/JAVA 基础 C 中的预处理指令 主讲 : 张齐勋 移动平台应用软件开发 课程建设小组北京大学二零一五年

移动平台应用软件开发 C/C++/JAVA 基础 C 中的预处理指令 主讲 : 张齐勋 移动平台应用软件开发 课程建设小组北京大学二零一五年 移动平台应用软件开发 C/C++/JAVA 基础 C 中的预处理指令 主讲 : 张齐勋 zhangqx@ss.pku.edu.cn 移动平台应用软件开发 课程建设小组北京大学二零一五年 预处理 2 预处理器 C 语言的编译系统分为编译预处理和正式编译 预处理作用 : 对源程序编译之前做一些处理, 生成扩展 C 源程序 预处理器的行为是由预处理指令控制的 宏定义 文件包含 条件编译 #define #ifdef

More information

PowerPoint 演示文稿

PowerPoint 演示文稿 第 1 章程序设计和 C 语言 1.1 什么是计算机程序 1.2 什么是计算机语言 1.3 C 语言的发展及其特点 1.4 最简单的 C 语言程序 1.5 运行 C 程序的步骤与方法 1.6 程序设计的任务 1.1 什么是计算机程序 程序 : 一组计算机能识别和执行的指令 只要让计算机执行这个程序, 计算机就会自动地 有条不紊地进行工作 计算机的一切操作都是由程序控制的, 离开程序, 计算机将一事无成

More information

Microsoft Word - em78 sub program.doc

Microsoft Word - em78 sub program.doc 一 二进制数转换为 ASCⅡ 码 将一个字节的二进制数转换为两位 16 进制数的 ASCⅡ 码 main: mov a,@0x9f ; 二进制数为 0x9f mov 0x30,a ; 二进制数存入 0x30 mov a,@0x02 mov 0x10,a ;0x10 中存放转换次数 mov a,@0x31 mov 0x04,a ;0x04 中为转换后数据存放地址 mov a,0x30 B1: ; 取

More information

DPJJX1.DOC

DPJJX1.DOC 8051 111 2K 1 2 3 ' ' 1 CPU RAM ROM / A/D D/A PC CPU 40 68 10 20 8 51 PIII 8051 2 MCS51 8051 8031 89C51 8051 8031 89C51? MCS51 INTEL INTEL 8031 8051 8751 8032 8052 8752 8051 8051 8051 MCS51 8031 8031

More information

Microsoft Word - Codewarrior IDE快速入门.docx

Microsoft Word - Codewarrior IDE快速入门.docx Codewarrior IDE 快速入门 本章我们以 Codewarrior HC08 V3.1 为例, 创建一个工程, 编辑源文件, 编译后进行调试 1 创建新项目 打开 codewarrior IDE 后, 出现如图 2.1 的界面 在 File 菜单中选择 New 图 2.1 codewarrior 在弹出的新窗口中, 选择 HC(S)08 New Project Wizard, 在 Project

More information

C C C The Most Beautiful Language and Most Dangerous Language in the Programming World! C 2 C C C 4 C 40 30 10 Project 30 C Project 3 60 Project 40

C C C The Most Beautiful Language and Most Dangerous Language in the Programming World! C 2 C C C 4 C 40 30 10 Project 30 C Project 3 60 Project 40 C C trio@seu.edu.cn C C C C The Most Beautiful Language and Most Dangerous Language in the Programming World! C 2 C C C 4 C 40 30 10 Project 30 C Project 3 60 Project 40 Week3 C Week5 Week5 Memory & Pointer

More information

int *p int a 0x00C7 0x00C7 0x00C int I[2], *pi = &I[0]; pi++; char C[2], *pc = &C[0]; pc++; float F[2], *pf = &F[0]; pf++;

int *p int a 0x00C7 0x00C7 0x00C int I[2], *pi = &I[0]; pi++; char C[2], *pc = &C[0]; pc++; float F[2], *pf = &F[0]; pf++; Memory & Pointer trio@seu.edu.cn 2.1 2.1.1 1 int *p int a 0x00C7 0x00C7 0x00C7 2.1.2 2 int I[2], *pi = &I[0]; pi++; char C[2], *pc = &C[0]; pc++; float F[2], *pf = &F[0]; pf++; 2.1.3 1. 2. 3. 3 int A,

More information

Microsoft Word - 把时间当作朋友(2011第3版)3.0.b.06.doc

Microsoft Word - 把时间当作朋友(2011第3版)3.0.b.06.doc 2 5 8 11 0 13 1. 13 2. 15 3. 18 1 23 1. 23 2. 26 3. 28 2 36 1. 36 2. 39 3. 42 4. 44 5. 49 6. 51 3 57 1. 57 2. 60 3. 64 4. 66 5. 70 6. 75 7. 83 8. 85 9. 88 10. 98 11. 103 12. 108 13. 112 4 115 1. 115 2.

More information

第5章:汇编语言程序设计

第5章:汇编语言程序设计 第 5 章 : 汇编语言程序设计 程 汇编语言指令格式 系统伪指令 存储器选择方式 常用子程序 1 汇编语言程序设计 PIC 指令系统 语言系统 指 CPU 编 器语言 器语言 器语言 设计 用 语言 设计 语言 汇编语言 2 汇编语言指令格式 汇编语言指令格式 ( 指令 ) label opcode operand comment 指令 用 存 指令 指令语 3 汇编语言指令格式 1 指令 用 指令

More information

<4D6963726F736F667420576F7264202D20B9F9B0EABBCDBBAFAB48DEB3B4C1A5BDB3F8A7692E646F63>

<4D6963726F736F667420576F7264202D20B9F9B0EABBCDBBAFAB48DEB3B4C1A5BDB3F8A7692E646F63> 臺 北 市 立 松 山 高 級 工 農 職 業 學 校 資 訊 科 專 題 製 作 報 告 題 目 : 反 彈 空 間 指 導 老 師 : 余 耀 銘 學 生 : 廖 國 銓 趙 信 瑋 中 華 民 國 102 年 5 月 摘 要 在 這 高 速 科 技 的 起 飛 下, 科 技 都 建 立 起 於 基 礎, 有 些 人 把 這 基 礎 轉 為 理 論, 教 給 大 眾 學 習 ; 有 些 人 利

More information

Microsoft PowerPoint - string_kruse [兼容模式]

Microsoft PowerPoint - string_kruse [兼容模式] Strings Strings in C not encapsulated Every C-string has type char *. Hence, a C-string references an address in memory, the first of a contiguous set of bytes that store the characters making up the string.

More information

Microsoft Word - 第3章.doc

Microsoft Word - 第3章.doc 第 3 章流程控制和数组 3.1 实验目的 (1) 熟练掌握控制台应用程序的代码编写和调试, 以及运行方法 (2) 掌握选择结构的一般语法格式和应用 (3) 掌握 switch 语句的用法 (4) 掌握选择结构的嵌套的用法, 能灵活使用选择结构解决实际问题 (5) 掌握 while 循环语句的一般语法格式 (6) 掌握 for 循环语句的一般语法格式 (7) 掌握循环嵌套的语法格式 (8) 掌握一维数组的定义

More information

PowerPoint 演示文稿

PowerPoint 演示文稿 STC 单片机 C 语言函数 主讲 : 何宾 Email:hebin@mail.buct.edu.cn 2016.03 在标准 C 语言中, 定义函数的格式如下 : 函数返回类型函数名字 ( 数据类型形参 1, 数据类型形参 2,..., 数 据类型形参 N) { } 局部变量定义 ; 表达式语句 ; 函数定义和声明 -- 标准 C 函数定义和声明 函数定义和声明 -- 标准 C 函数定义和声明 其中

More information

新版 明解C++入門編

新版 明解C++入門編 511!... 43, 85!=... 42 "... 118 " "... 337 " "... 8, 290 #... 71 #... 413 #define... 128, 236, 413 #endif... 412 #ifndef... 412 #if... 412 #include... 6, 337 #undef... 413 %... 23, 27 %=... 97 &... 243,

More information

Microsoft Word - MSP430 Launchpad 指导书.docx

Microsoft Word - MSP430 Launchpad 指导书.docx Contents 3... 9... 14 MSP430 LAUNCHPAD 指导书 3 第一部分第一个工程 New Project File > New > CCS Project Project name: ButtonLED Device>Family: MSP430 Variant: MSP430G2553 Project templates and examples : Empty Project

More information

《计算概论》课程 第十九讲 C 程序设计语言应用

《计算概论》课程 第十九讲  C 程序设计语言应用 计算概论 A 程序设计部分 字符数组与字符串 李戈 北京大学信息科学技术学院软件研究所 lige@sei.pku.edu.cn 字符数组的定义 #include int main() char a[10] = 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j' ; for (int i = 0; i < 10; i++) cout

More information

NOWOER.OM m/n m/=n m/n m%=n m%n m%=n m%n m/=n 4. enum string x1, x2, x3=10, x4, x5, x; 函数外部问 x 等于什么? 随机值 5. unsigned char *p1; unsigned long *p

NOWOER.OM m/n m/=n m/n m%=n m%n m%=n m%n m/=n 4. enum string x1, x2, x3=10, x4, x5, x; 函数外部问 x 等于什么? 随机值 5. unsigned char *p1; unsigned long *p NOWOER.OM /++ 程师能 评估. 单项选择题 1. 下 描述正确的是 int *p1 = new int[10]; int *p2 = new int[10](); p1 和 p2 申请的空间 的值都是随机值 p1 和 p2 申请的空间 的值都已经初始化 p1 申请的空间 的值是随机值,p2 申请的空间 的值已经初始化 p1 申请的空间 的值已经初始化,p2 申请的空间 的值是随机值 2.

More information

Microsoft Word - 《C语言开发入门》课程教学大纲-2.doc

Microsoft Word - 《C语言开发入门》课程教学大纲-2.doc C 语言开发入门 课程教学大纲 ( 课程英文名称 ) 课程编号 :201409210011 学分 :5 学分学时 :60 学时 ( 其中 : 讲课学时 :37 学时上机学时 :23 学时 ) 先修课程 : 计算机导论后续课程 :C++ 程序设计适用专业 : 信息及其计算机相关专业开课部门 : 计算机系 一 课程的性质与目标 C 语言开发入门 是计算机各专业必修的基础课程, 是数据结构 C++ Java

More information

EK-STM32F

EK-STM32F STMEVKIT-STM32F10xx8 软 件 开 发 入 门 指 南 目 录 1 EWARM 安 装... 1 1.1 第 一 步 : 在 线 注 册... 1 1.2 第 二 步 : 下 载 软 件... 2 1.3 第 三 步 : 安 装 EWARM... 3 2 基 于 STMEVKIT-STM32F10xx8 的 示 例 代 码 运 行... 6 2.1 GPIO Demo... 6 2.2

More information

C++ 程式設計

C++ 程式設計 C C 料, 數, - 列 串 理 列 main 數串列 什 pointer) 數, 數, 數 數 省 不 不, 數 (1) 數, 不 數 * 料 * 數 int *int_ptr; char *ch_ptr; float *float_ptr; double *double_ptr; 數 (2) int i=3; int *ptr; ptr=&i; 1000 1012 ptr 數, 數 1004

More information

untitled

untitled MODBUS 1 MODBUS...1 1...4 1.1...4 1.2...4 1.3...4 1.4... 2...5 2.1...5 2.2...5 3...6 3.1 OPENSERIAL...6 3.2 CLOSESERIAL...8 3.3 RDMULTIBIT...8 3.4 RDMULTIWORD...9 3.5 WRTONEBIT...11 3.6 WRTONEWORD...12

More information

学习MSP430单片机推荐参考书

学习MSP430单片机推荐参考书 MSP430 16 MSP430 C MSP430 C MSP430 FLASH 16 1 CPU 16 ALU 16 PC SP SR R4~R15 2 3 00-FFH 100-1FFH 4 5 1 2 51 24 27 6 1 2 3 4 5 6 4 12 SR SP SR CPU SR CPU C Z N GIE CPUOff CPU OscOff SCG0 SCG1 CPU EXIT SP

More information

untitled

untitled A, 3+A printf( ABCDEF ) 3+ printf( ABCDEF ) 2.1 C++ main main main) * ( ) ( ) [ ].* ->* ()[] [][] ** *& char (f)(int); ( ) (f) (f) f (int) f int char f char f(int) (f) char (*f)(int); (*f) (int) (

More information

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数 复习 类的复用 组合 (composition): has-a 关系 class MyType { public int i; public double d; public char c; public void set(double

More information

untitled

untitled 1 Outline 數 料 數 數 列 亂數 練 數 數 數 來 數 數 來 數 料 利 料 來 數 A-Z a-z _ () 不 數 0-9 數 不 數 SCHOOL School school 數 讀 school_name schoolname 易 不 C# my name 7_eleven B&Q new C# (1) public protected private params override

More information

帝国CMS下在PHP文件中调用数据库类执行SQL语句实例

帝国CMS下在PHP文件中调用数据库类执行SQL语句实例 帝国 CMS 下在 PHP 文件中调用数据库类执行 SQL 语句实例 这篇文章主要介绍了帝国 CMS 下在 PHP 文件中调用数据库类执行 SQL 语句实例, 本文还详细介绍了帝国 CMS 数据库类中的一些常用方法, 需要的朋友可以参考下 例 1: 连接 MYSQL 数据库例子 (a.php)

More information

Microsoft Word - MAN2023A_CH_APPONE.doc

Microsoft Word - MAN2023A_CH_APPONE.doc AT91 softpack 1.5 代码解读 基于 SAM7X EK 综合应用代码解读 文档编号 文档版本 Rev. A 文档摘要 基于 AT91SAM7X EK 开发板的代码解读,GPIO H161T01 代码解读 关键词 AT91SAM7X256 系统板 创建日期 2010 07 14 创建人员 Cust126 审核人员 Robin 文档类型 公开发布 / 开发板配套文件 版权信息 Mcuzone

More information

第5章修改稿

第5章修改稿 (Programming Language), ok,, if then else,(), ()() 5.0 5.0.0, (Variable Declaration) var x : T x, T, x,,,, var x : T P = x, x' : T P P, () var x:t P,,, yz, var x : int x:=2. y := x+z = x, x' : int x' =2

More information

epub 33-8

epub 33-8 8 1) 2) 3) A S C I I 4 C I / O I / 8.1 8.1.1 1. ANSI C F I L E s t d i o. h typedef struct i n t _ f d ; i n t _ c l e f t ; i n t _ m o d e ; c h a r *_ n e x t ; char *_buff; /* /* /* /* /* 1 5 4 C FILE

More information

SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基

SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 odps-sdk 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基 开放数据处理服务 ODPS SDK SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基础功能的主体接口, 搜索关键词 "odpssdk-core" 一些

More information

目录

目录 ALTERA_CPLD... 3 11SY_03091... 3 12SY_03091...4....5 21 5 22...8 23..10 24..12 25..13..17 3 1EPM7128SLC.......17 3 2EPM7032SLC.......18 33HT46R47......19..20 41..20 42. 43..26..27 5151DEMO I/O...27 52A/D89C51...28

More information

CH559指令周期.doc

CH559指令周期.doc CH55X 汇编指令周期表 CH55X 汇编指令概述 : 型号包含 : a. 指令单周期型号 :CH557 CH558 CH559; b. 指令 4 周期型号 :CH551 CH552 CH553 CH554; c. 非跳转指令的指令周期数与指令字节数相同 ; d. 跳转指令含 MOVC/RET/CALL 通常比字节数多若干个周期 ; e.movc 指令多 4 或 5 个周期 ( 下条指令地址为奇数时多

More information

Microsoft Word - MAN2011A_CH_RTT.doc

Microsoft Word - MAN2011A_CH_RTT.doc 基于 SAM7X EK 和 IAR EWARM 文档编号 文档版本 Rev. A 文档摘要 基于 AT91SAM7X EK 开发板的代码解读,RTT 代码解读 关键词 AT91SAM7X256 SAM7X EK IAR EWARM J LINK RTT 创建日期 2010 06 08 创建人员 Cust126 审核人员 Robin 文档类型 公开发布 / 开发板配套文件 版权信息 Mcuzone 原创文档,

More information

c_cpp

c_cpp C C++ C C++ C++ (object oriented) C C++.cpp C C++ C C++ : for (int i=0;i

More information

3.1 num = 3 ch = 'C' 2

3.1 num = 3 ch = 'C' 2 Java 1 3.1 num = 3 ch = 'C' 2 final 3.1 final : final final double PI=3.1415926; 3 3.2 4 int 3.2 (long int) (int) (short int) (byte) short sum; // sum 5 3.2 Java int long num=32967359818l; C:\java\app3_2.java:6:

More information

试卷代号 :1253 座位号 E 口 国家开放大学 ( 中央广播电视大学 )2014 年秋季学期 " 开放本科 " 期末考试 C 语言程序设计 A 试题 2015 年 1 月 E 四! 五 总分! 一 单选题 ( 每小题 2 分, 共 20 分 ) 1. 由 C 语言源程序文件编译而成的目标文件的默

试卷代号 :1253 座位号 E 口 国家开放大学 ( 中央广播电视大学 )2014 年秋季学期  开放本科  期末考试 C 语言程序设计 A 试题 2015 年 1 月 E 四! 五 总分! 一 单选题 ( 每小题 2 分, 共 20 分 ) 1. 由 C 语言源程序文件编译而成的目标文件的默 试卷代号 :1253 座位号 E 口 国家开放大学 ( 中央广播电视大学 )2014 年秋季学期 " 开放本科 " 期末考试 C 语言程序设计 A 试题 2015 年 1 月 E 四! 五 总分! 一 单选题 ( 每小题 2 分, 共 20 分 ) 1. 由 C 语言源程序文件编译而成的目标文件的默认扩展名为 ( ) A. cpp B. c C. exe D. obj 2. 设 x 和 y 均为逻辑值,

More information

<4D F736F F F696E74202D BDE1B9B9BBAFB3CCD0F2C9E8BCC D20D1ADBBB7>

<4D F736F F F696E74202D BDE1B9B9BBAFB3CCD0F2C9E8BCC D20D1ADBBB7> 能源与动力工程学院 结构化编程 结构化程序设计 循环 循环结构 确定性循环 非确定性循环 I=1 sum=sum+i I = I +1 陈 斌 I>100 Yes No 目录 求和 :1+2+3++100 第四节循环的应用 PROGRAM GAUSS INTEGER I, SUM 计数器 SUM = 0 DO I = 1, 100, 1 SUM = SUM + I print*, I, SUM DO

More information

(Load Project) (Save Project) (OffLine Mode) (Help) Intel Hex Motor

(Load Project) (Save Project) (OffLine Mode) (Help) Intel Hex Motor 1 4.1.1.1 (Load) 14 1.1 1 4.1.1.2 (Save) 14 1.1.1 1 4.1.2 (Buffer) 16 1.1.2 1 4.1.3 (Device) 16 1.1.3 1 4.1.3.1 (Select Device) 16 2 4.1.3.2 (Device Info) 16 2.1 2 4.1.3.3 (Adapter) 17 2.1.1 CD-ROM 2 4.1.4

More information

Guava学习之Resources

Guava学习之Resources Resources 提供提供操作 classpath 路径下所有资源的方法 除非另有说明, 否则类中所有方法的参数都不能为 null 虽然有些方法的参数是 URL 类型的, 但是这些方法实现通常不是以 HTTP 完成的 ; 同时这些资源也非 classpath 路径下的 下面两个函数都是根据资源的名称得到其绝对路径, 从函数里面可以看出,Resources 类中的 getresource 函数都是基于

More information

Microsoft PowerPoint - C语言课件-9-结构体.pptx

Microsoft PowerPoint - C语言课件-9-结构体.pptx 第九章结构体 郎大鹏 第九章结构体 9.1 结构体类型的声明方法 9.2 结构体类型变量的定义与使用 9.3 结构体数组 9.4 编程举例 9.5 习题 9.1 结构体类型的声明方法 结构体声明的语法形式如下 : struct 结构体标识符 成员变量列表 ; }; 例如, 为了描述班级 ( 假设仅仅包括班级编号 专业 人数等信息 ), 可以声明如下的结构体类型 struct Class char Code[10];

More information

_汪_文前新ok[3.1].doc

_汪_文前新ok[3.1].doc 普 通 高 校 本 科 计 算 机 专 业 特 色 教 材 精 选 四 川 大 学 计 算 机 学 院 国 家 示 范 性 软 件 学 院 精 品 课 程 基 金 青 年 基 金 资 助 项 目 C 语 言 程 序 设 计 (C99 版 ) 陈 良 银 游 洪 跃 李 旭 伟 主 编 李 志 蜀 唐 宁 九 李 涛 主 审 清 华 大 学 出 版 社 北 京 i 内 容 简 介 本 教 材 面 向

More information

四川省普通高等学校

四川省普通高等学校 四 川 省 普 通 高 等 学 校 计 算 机 应 用 知 识 和 能 力 等 级 考 试 考 试 大 纲 (2013 年 试 行 版 ) 四 川 省 教 育 厅 计 算 机 等 级 考 试 中 心 2013 年 1 月 目 录 一 级 考 试 大 纲 1 二 级 考 试 大 纲 6 程 序 设 计 公 共 基 础 知 识 6 BASIC 语 言 程 序 设 计 (Visual Basic) 9

More information

2/14 Buffer I12, /* x=2, buffer = I 1 2 */ Buffer I243, /* x=34, buffer = I 2 43 */ x=56, buffer = I243 Buffer I243I265 code_int(int x, char *buffer)

2/14 Buffer I12, /* x=2, buffer = I 1 2 */ Buffer I243, /* x=34, buffer = I 2 43 */ x=56, buffer = I243 Buffer I243I265 code_int(int x, char *buffer) 1/14 IBM Rational Test RealTime IBM, 2004 7 01 50% IBM Rational Test RealTime IBM Rational Test RealTime 1. 50% IBM Rational Test RealTime IBM Rational Test RealTime 2. IBM Rational Test RealTime Test

More information

PowerPoint 演示文稿

PowerPoint 演示文稿 计算概论 A 课程程序设计部分 C++ 语言基本成分 数据成分 李戈 北京大学信息科学技术学院软件研究所 lige@sei.pku.edu.cn 再谈, 我们的进度安排 我们的学习过程 感性理性函数指针等 数据成分运算成分控制成分数组字符串 结构化的程序递归 传统学习过程 数据类型与表达式 输入输出 关系运算 控制语句 函数数组指针结构体 作业练习 感性认识作业练习 ( 以抄程序为主 ) 正常作业练习

More information

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 4 月 19 日晚 9 点 复习 类的复用 组合 (composition): has-a 关系 class MyType { public int i; public double d; public char c; public void set(double x) { d

More information

全国计算机技术与软件专业技术资格(水平)考试

全国计算机技术与软件专业技术资格(水平)考试 全 国 计 算 机 技 术 与 软 件 专 业 技 术 资 格 ( 水 平 ) 考 试 2008 年 上 半 年 程 序 员 下 午 试 卷 ( 考 试 时 间 14:00~16:30 共 150 分 钟 ) 试 题 一 ( 共 15 分 ) 阅 读 以 下 说 明 和 流 程 图, 填 补 流 程 图 中 的 空 缺 (1)~(9), 将 解 答 填 入 答 题 纸 的 对 应 栏 内 [ 说 明

More information

微處理機期末專題

微處理機期末專題 微 處 理 機 期 末 專 題 自 動 鋼 琴 組 員 :b92611004 羅 鈞 瑋 b92611008 吳 妍 儂 b92611038 吳 韋 靜 b92611042 林 佳 穎 一 簡 介 本 組 的 主 題 是 自 動 鋼 琴 在 播 放 音 樂 的 同 時, 鋼 琴 會 自 動 按 下 琴 鍵, 被 按 下 的 琴 鍵 所 對 應 到 的 音 階, 就 是 正 在 撥 放 的 樂 曲 的

More information

Microsoft PowerPoint - 3. 函数Functionl.ppt [兼容模式]

Microsoft PowerPoint - 3. 函数Functionl.ppt [兼容模式] 函数 Function 如何重用代码 How to reuse code 3 4 = 3*3*3*3 3 4,6 5 : 拷贝 - 粘帖代码 (Copy-paste code) 3 4,6 5,12 10 : 拷贝 - 粘帖代码 (Copy-paste code) Bad! 使用函数 (with a function) 使用函数 (with a function) 使用函数 (with a function)

More information

2013 C 1 # include <stdio.h> 2 int main ( void ) 3 { 4 int cases, a, b, i; 5 scanf ("%d", & cases ); 6 for (i = 0;i < cases ;i ++) 7 { 8 scanf ("%d %d

2013 C 1 # include <stdio.h> 2 int main ( void ) 3 { 4 int cases, a, b, i; 5 scanf (%d, & cases ); 6 for (i = 0;i < cases ;i ++) 7 { 8 scanf (%d %d 2013 18 ( ) 1. C pa.c, pb.c, 2. C++ pa.cpp, pb.cpp, Compilation Error cin scanf Time Limit Exceeded 1: A 5 B 5 C 5 D 5 E 5 F 5 1 2013 C 1 # include 2 int main ( void ) 3 { 4 int cases, a, b,

More information

C/C++ 语言 - 循环

C/C++ 语言 - 循环 C/C++ Table of contents 7. 1. 2. while 3. 4. 5. for 6. 8. (do while) 9. 10. (nested loop) 11. 12. 13. 1 // summing.c: # include int main ( void ) { long num ; long sum = 0L; int status ; printf

More information

untitled

untitled www.cpucore.cn 51 Keil - 1 - V1.0 www.cpucore.cn 51 Keil - 2 - www.cpucore.cn 51 Keil - 3 - www.cpucore.cn 51 Keil - 4 - www.cpucore.cn 51 Keil - 5 - www.cpucore.cn 51 Keil - 6 - www.cpucore.cn 51 Keil

More information

《C语言程序设计》教材习题参考答案

《C语言程序设计》教材习题参考答案 教材名称 : C 语言程序设计 ( 第 1 版 ) 黄保和 江弋编著清华大学出版社 ISBN: 978-7-302-13599-9, 红色封面答案制作时间 :2011 年 2 月 -5 月一 选择题 1. 以下数组定义中, 错误的是 :C)int a[3]=1,2,3,4; 2. 以下数组定义中, 正确的是 :B) int a[][2]=1,2,3,4; 3. 设有定义 int a[8][10];,

More information

CC213

CC213 : (Ken-Yi Lee), E-mail: feis.tw@gmail.com 177 [P179] (1) - [P181] [P182] (2) - for [P183] (3) - switch [P184] [P187] [P189] [P194] 178 [ ]; : : int var; : int var[3]; var 2293620 var[0] var[1] 2293620

More information

科学计算的语言-FORTRAN95

科学计算的语言-FORTRAN95 科 学 计 算 的 语 言 -FORTRAN95 目 录 第 一 篇 闲 话 第 1 章 目 的 是 计 算 第 2 章 FORTRAN95 如 何 描 述 计 算 第 3 章 FORTRAN 的 编 译 系 统 第 二 篇 计 算 的 叙 述 第 4 章 FORTRAN95 语 言 的 形 貌 第 5 章 准 备 数 据 第 6 章 构 造 数 据 第 7 章 声 明 数 据 第 8 章 构 造

More information

PowerPoint 演示文稿

PowerPoint 演示文稿 STC 单片机 C 语言数组 主讲 : 何宾 Email:hebin@mail.buct.edu.cn 2016.03 一维数组的定义格式为 : 类型说明符数组名 [ 常量表达式 ]; 其中, 类型说明符是任意一种基本数据类型或者构造数据类型 数 组名是用户定义的数组标识符 [] 内的常量表达式表示数据元素的 个数, 也称为数组的长度 比如 : int a[10] -- 一维数组的定义 该数组用标识符

More information

<4D F736F F D20CAB5D1E BACDBBE3B1E0D3EFD1D4B5C4BBECBACFB1E0B3CCCAB5D1E92E646F63>

<4D F736F F D20CAB5D1E BACDBBE3B1E0D3EFD1D4B5C4BBECBACFB1E0B3CCCAB5D1E92E646F63> 1 实验目的 实验 2 C 和汇编语言的混合编程实验 学习在 C 程序中使用嵌入式汇编编写程序 了解嵌入式汇编的格式 语言特点 2 实验设备 S3C2410 开发板 ADS1.2 集成开发环境,JTAG 调试器 串口连接线 3 实验原理 在 ARM 的应用开发中,C 语言功能强大且容易编写程序, 但是汇编程序在底层的操作仍然具有 C 程序无法替代的功能, 有时候我们需要在 C 程序中嵌入汇编程序来完成一些直接对底层的诸如寄存器的操作

More information

<4D F736F F D20B5A5C6ACBBFAD4ADC0EDD3EBD3A6D3C3BCB B3CCD0F2C9E8BCC65FB5DA33B0E65F2DD6D5B8E52D4E65772DBFB1CEF3B1ED2DB3F6B0E6C9E72E646F6378>

<4D F736F F D20B5A5C6ACBBFAD4ADC0EDD3EBD3A6D3C3BCB B3CCD0F2C9E8BCC65FB5DA33B0E65F2DD6D5B8E52D4E65772DBFB1CEF3B1ED2DB3F6B0E6C9E72E646F6378> 单片机原理与应用及 C51 程序设计 ( 第 3 版 )- 终稿 -New 勘误表 1. P18 页 11 行原来 : 汇编语言 机器语言 功能 MOV AL,01H 1011 0000 0000 0011B ; 把 01 送入累加器 A ADD AL,02H 0000 0100 0000 0101B ;02 与 A 中内容相加, 结 果存入 A HLT 11110100B ; 停止操作 汇编语言

More information

第3章.doc

第3章.doc 3 3 3 3.1 3 IT Trend C++ Java SAP Advantech ERPCRM C++ C++ Synopsys C++ NEC C C++PHP C++Java C++Java VIA C++ 3COM C++ SPSS C++ Sybase C++LinuxUNIX Motorola C++ IBM C++Java Oracle Java HP C++ C++ Yahoo

More information

/ / / LED DOCNO: SG D REV11-2 -

/ / / LED DOCNO: SG D REV11-2 - SG24064-02D Version11 SG24064SYD-02DSYE LCD LED VDD STN 80 50V 50V SG24064SBD-02DSWE STN 80 50V 50V SG24064FPD-02DSWE FSTN 80 50V 50V SG24064SYD-02DSYE ND STN 80 50V 50V SG24064SBD-02DSWE ND STN 80 50V

More information

, 7, Windows,,,, : ,,,, ;,, ( CIP) /,,. : ;, ( 21 ) ISBN : -. TP CIP ( 2005) 1

, 7, Windows,,,, : ,,,, ;,, ( CIP) /,,. : ;, ( 21 ) ISBN : -. TP CIP ( 2005) 1 21 , 7, Windows,,,, : 010-62782989 13501256678 13801310933,,,, ;,, ( CIP) /,,. : ;, 2005. 11 ( 21 ) ISBN 7-81082 - 634-4... - : -. TP316-44 CIP ( 2005) 123583 : : : : 100084 : 010-62776969 : 100044 : 010-51686414

More information

一 登录 crm Mobile 系统 : 输入 ShijiCare 用户名和密码, 登录系统, 如图所示 : 第 2 页共 32 页

一 登录 crm Mobile 系统 : 输入 ShijiCare 用户名和密码, 登录系统, 如图所示 : 第 2 页共 32 页 第 1 页共 32 页 crm Mobile V1.0 for IOS 用户手册 一 登录 crm Mobile 系统 : 输入 ShijiCare 用户名和密码, 登录系统, 如图所示 : 第 2 页共 32 页 二 crm Mobile 界面介绍 : 第 3 页共 32 页 三 新建 (New) 功能使用说明 1 选择产品 第 4 页共 32 页 2 填写问题的简要描述和详细描述 第 5 页共

More information

Introduction to Computer Systems /18-243, spring st Lecture, Jan. 12th

Introduction to Computer Systems /18-243, spring st Lecture, Jan. 12th 计算机组成原理习题课 1 授课老师 : 王浩宇 haoyuwang@bupt.edu.cn 1 练习 : 机器数的表示和相互转化 练习 1: 当十六进制数 9B 和 FF 分别表示为原码 补码 反码 移码和无符号数时, 所对应的十进制数各为多少 ( 设机器数采用一位符号位 )? 16 进制 真值 无符号数 原码 ( 真值 ) 反码 ( 真值 ) 补码 ( 真值 ) 移码 ( 真值 ) 9BH 二进制十进制

More information

Microsoft Word - 第3章.doc

Microsoft Word - 第3章.doc 第 3 章 C51 程序设计 C 语言由于其功能强大 结构性强 可移植性好等优点, 深受广大编程人员的喜爱, 而单片机 C 语言既具有 C 语言的特点, 又兼有汇编语言对操作硬件的功能, 因此, 在现代单片机程序设计中, 单片机 C 语言得到了广泛应用 本章主要介绍 MCS-51 单片机 C 语言的基础知识及程序设计 3.1 C51 的标识符和关键字 标识符和关键字是一种编程语言最基本的组成部分,C51

More information

2 Keil µ vision 2.1 1) Keil µ vision2 V2.34 µ vision3 2) Sino_Keil.exe Keil c:\keil\ 3) JET51 USB PC C:\Keil\ USB PC 4) S-L

2 Keil µ vision 2.1 1) Keil µ vision2 V2.34 µ vision3 2) Sino_Keil.exe   Keil c:\keil\ 3) JET51 USB PC C:\Keil\ USB PC 4) S-L 1 SH88F516 8051 64K FLASH 1024 EEPROM SH88F516 JET51 S-Lab Keil µ vision ISP51 Keil µ vision ISP51 ISP51 PC RS232 MCU SH88F516 SH88F516 1.1 SH88F516 1.1 SH88F516 SH88Fxx: QFP44, DIP40 RAM Flash E2 ADC

More information

从MCS51向AVR的快速转换.PDF

从MCS51向AVR的快速转换.PDF MCS51 AVR MCS51 AVR ATMEL AVR RISC MCS51 AVR 1 MHZ 1MIPS 8MHZ AVR 224MHZ MCS51 FLASH EEPROM ISP WatchDog AVR MCS51 AT90S1200/2313 AT89C1051/2051 AT90S4414/8515 AT89C51/52 PCB / AVR C ICCAVR60 AVR C IAR

More information

e 2 3 2

e 2 3 2 e 1 3 3.1 3.2 3.3 NextDate 3.4 3.5 3.6 3.7 3.8 3.9 3 1 e 2 3 2 e 3 3.1 3.1.1 3.1.2 3.1.3 3.1.4 Return 3 3 e 4 3.1.1 1 2 1 2 3 4 3 4 e 5 3.1.2 3 5 e 6 3.1.3 FAX MODEM 3 6 e 7 3.1.4 ANSI/IEEE829-1983 3 1

More information

Ps22Pdf

Ps22Pdf ( 98 ) C ( ) ( )158 1998 C : C C C,,, C,, : C ( ) : : (, 100084) : : : 7871092 1/ 16 :18 25 :415 : 2000 3 1 2000 3 1 : ISBN 7 302 01166 4/ T P432 : 00016000 : 22 00 ( 98 ) 20 90,,, ;,,, 1994, 1998, 160,

More information

Ps22Pdf

Ps22Pdf C ( CIP) C /. :, 2001. 7 21 ISBN 7-5624 -2355-5. C........ C. TP312 CIP ( 2001 ) 034496 C * * : 7871092 1 /16 : 14. 25 : 356 20017 1 20017 1 : 1 6 000 ISBN 7-5624-2355-5 / TP311 : 21. 00 C, C,,,, C,, (

More information

华恒家庭网关方案

华恒家庭网关方案 LINUX V1.5 1 2 1 2 LINUX WINDOWS PC VC LINUX WINDOWS LINUX 90% GUI LINUX C 3 REDHAT 9 LINUX PC TFTP/NFS http://www.hhcn.com/chinese/embedlinux-res.html minicom NFS mount C HHARM9-EDU 1 LINUX HHARM9-EDU

More information