第1章单片机C语言概述

合集下载

单片机应用技术(C语言版)王静霞

单片机应用技术(C语言版)王静霞

8031
8051 8751 89C51
40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 24 22 21
VCC P0. 0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7 EA ALE PSEN P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2. 0
什么是单片机
T INT
定时器/计数器
中断系 统
P0-P3
并 行 I/ O 口
CPU
存储 器
串 行 I/ O 口
TxD RxD
单片机应用系统
单片机应用系统
单片机应用系统由硬件和软件组 成 硬件是应用系统的基础
单 片 机

接口 电路 及外 设等

软 件
软件是在硬件的基础上对其资源 进行合理调配和使用,从而完成 应用系统所要求的任务,二者相 互依赖,缺一不可
MCS-51单片机信号引脚简介
P1. 0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 RST RXD/ P3. 0 TXD/ P3.1 INT0/ P3.2 INT1/ P3.3 T0/ P3.4 T1/ P3.5 WR/ P3.6 RD/ P3.7 XTAL2 XTAL1 VSS 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20


3)机器周期 一个机器周期分为6个状态:S1~S6。每个状态又分为 两拍:P1和P2。因此,一个机器周期中的12个时钟周 期表示为: S1P1、S1P2、S2P1、S2P2、…、S6P2。
时 序


4)指令周期 是执行一条指令所需的机器周期数。 小提示 当振荡脉冲频率为12 MHz时, 一个机器周期 为1µs;当振荡脉冲频率为6 MHz时,一个机 器周期为2 µs。

STC单片机C语言程序设计 第 章 STC单片机C语言运算符

STC单片机C语言程序设计 第 章 STC单片机C语言运算符
单目运算的优先级要高于双目运算。 在双目运算中,优先级按照*、/、%、+、-从高到低排列。程序
员可以通过使用()修改运算的优先级顺序。
算术运算符
对于整数除法运算来说,遵循以下的规则: 整数相除且不能整除时,如果除数和被除数其中只有一个为负数,
运算符“/”的运算结果就为负数;如果除数和被除数两个均为负 数,运算符“/”的运算结果就为正数,这与代数运算的结果一致。 整数相除且不能整除时,如果除数和被除数中出现负数,则运算 符“%”的运算结果由表达式(a/b)*b+a%b=a确定,即a%b=a(a/b)*b。 对于运算符“/”和“%”来说,除数(第二个操作数)不能为0。
赋值运算符
从上面的过程可以清楚地看出来赋值的过程:
赋值过程是从右到左,即先等到“=”号右侧表达式的值;然后,在将右侧 表达式的值赋值给“=”号左侧的变量。
在赋值过程中,如果“=”号左右两侧的数据类型不相同的时候,将右侧表 达式的值自动的转换到与“=”左侧的数据类型相一致。
赋值运算符
在调试器模式下,在keil μVision集成开发环境右下角的Watch 1窗口中,分别输入两个变量a和b的名字,在右侧可以清楚地显 示这两个变量的值,一目了然。
无符号整数。将一个无符号型unsigned数据赋值给一个占用相 同存储单元的整型变量时,比如 unsigned int到int,unsigned long到long,unsigned short到short,原值照赋,内部存储方 式不变,但是外部的值可能变化,对于下面的代码:
volatile unsigned int a=40001;
赋值运算符
当a赋值給c后,c的值也是-32768。只不过a和c在8051单片机内 表示的形式不同而已,a=-32768用两个字节表示为0x8000,而 c=-127用四个字节表示为0xFFFF8000,从实质上来说,也是符 号扩展。当变量a值的符号位为1,表示负数时,使用1扩展,即 用1将高位填满得到长整型变量的值;而当变量a的符号位为0, 表示正数时,使用0扩展,即用0将高位填满得到长整型变量的值。

完全手册51单片机C语言开发详解--第1章 单片机基础知识

完全手册51单片机C语言开发详解--第1章  单片机基础知识

技术凝聚实力 专业创新出版
1.3 单片机的应用领域

目前单片机的应用已深入到国民经济的各个领域,几乎 每一个智能产品都集成了至少一片单片机,对各个行业 的技术改造和产品更新换代起到了非常重要的作用。单 片机的应用领域包括机电一体化、工业控制、智能仪器 仪表、实时控制、军民用电子产品等各个方面。
技术凝聚实力 专业创新出版
技术凝聚实力 专业创新出版
1.3.4 军事技术

由于单片机使用温度范围广、利用可靠性高、适应各种恶劣环境的优异的 特点,在导弹控制、鱼雷制导控制、智能武器装备、航天飞机巡航系统等 领域,单片机也得到了广泛应用。
技术凝聚实力 专业创新出版
1.3.5 分布式控制系统

在比较复杂的系统中,都采用分布式多机系统,分布式系统具有功能强、 可靠性高的特点。 利用单片机构成的分布式测控系统,系统中有若干台由单片机组成的功能 各异的仪器设备,之间通过通信相互联系和交换数据,各自完成特定的任 务的同时协调完成整个任务,能同时采集或处理的信息更多。
技术凝聚实力 专业创新出版
第1章 单片机基础知识

在学习MCS-51单片机开发之前,有必要先了解一下单片 机的基本概念,本章介绍单片机的基础知识,包括单片 机的基本概念、发展历史、应用领域以及主要的MCS-51 单片机介绍。
技术凝聚实力 专业创新出版
1.1 单片机简介


目前生产单片机的厂商主要有Intel公司、Motorola公 司、Philips公司、ATMEL公司、Microchip公司、AMD公 司、Zilog公司、WinBond公司等,产品型号种类众多, 性能各具特色。 本书主要介绍的是在各个应用场合占有较大市场份额的 MCS-51结构系列单片机,其中又以ATMEL公司生产的 AT89S51单片机为具体实例,讲解MCS-51单片机在嵌入 式系统中的使用与设计方法,通过具体的实例,读者不 但能够掌握MCS-51单片机的开发,还能够由浅入深地学 习单片机系统的设计方法,为学习其他单片机打下厚实 的基础。

STM32系列单片机原理及应用-C语言案例教程 第1章 单片机综述

STM32系列单片机原理及应用-C语言案例教程 第1章 单片机综述

第1章 单片机综述
其功能主要表现在:
(1)内核:ARM32位Cortex-M3CPU,最高工作频率72MHz, 1.25DMIPS/MHz,单周期乘法和硬件除法
(2)存储器:片上集成32-512KB的Flash存储器。6-64KB的SRAM存储器 (3)时钟、复位和电源管理:2.0-3.6V的电源供电和I/O接口的驱动电压。 POR、PDR和可编程的电压探测器(PVD)。4-16MHz的晶振。内嵌出厂前调校的 8MHz RC振荡电路。内部40 kHz的RC振荡电路,用于CPU时钟的PLL,带校准用 于RTC的32kHz的晶振。 (4)调试模式:串行调试(SWD)和JTAG接口。最多高达112个的快速I/O端口、 11个定时器和13个通信接口 比较流行的器件:STM32F103系列、STM32 L1系列、STM32W系列。
(1)运算器和控制器集成在一个芯片上,称之为CPU芯片。 (2)存储器由半导体存储器芯片组成。 (3)CPU,存储器,I/O 口通过AB,DB,CB三总线交换信息 (4)外设通过I/O口芯片与机器内各部件交换信息。 3.单片机是集成了组成微机的CPU、存储器、I/O口以及其它辅助电路 的大规模集成电路芯片。
3.单片机与嵌入式系统
单片机,就是把中央处理器 CPU、存储器、定时器、I/O 接口电路 等一些计算机的主要功能部件集成在一块集成电路芯片上的微型计算机。 单片机的内部结构如图1.l所示。
时序电路 CPU
总线 控制 逻辑
存储器 I/O
图1.1单片机的内部结构
STM32是一款性价比高的单片机系列。 为高性能、低成本、低功耗的嵌入式应用专门设计的ARM Cortex-M内核, 具有高性能外设:1μs的双12位ADC、4MB/s的UART、18MB/s的SPI等

c语言程序设计第五版习题答案

c语言程序设计第五版习题答案

c语言程序设计第五版习题答案Company number:【0089WT-8898YT-W8CCB-BUUT-202108】习题解析与答案第1章C语言概述一.简答题1.概述C语言的主要特点。

【解答】(1)语言简洁、紧凑,使用方便、灵活。

(2)数据类型丰富,表达能力强。

(3)运算符多样。

C语言中的运算符包含的范围非常广泛。

(4)具有结构化的控制语句。

如if…else语句、while语句、do while语句、switch语句、for语句。

(5)允许直接访问物理地址。

C语言中含有的位和指针运算,能够直接对内存地址进行访问操作。

(6)所生成的目标代码质量高,可移植性好。

2.构成C语言程序的基本单位是什么它由哪几部分组成【解答】函数是构成C语言程序的基本单位。

一个完整的C程序一般由文件包含、宏定义、函数说明、变量和一个或若干个函数组成。

3.C语言程序的运行一般要经过哪几个步骤【解答】(1)编辑;(2)编译;(3)连接,生成EXE文件;(4)执行。

二.运行程序写结果1.输入下面程序并运行。

main(){int a1,a2,x;a1=100;a2=50;x=a1-a2;printf(″x=%d\n″,x);}【解答】运行结果为:x=502.输入下面程序并运行。

main(){int a1,a2,x;a1=10;a2=20;x=a1*a2;printf(″a1=%d,a2=%d\n″,a1,a2);printf(″x=%d\n″,x);}【解答】运行结果为:a1=10,a2=20x=2003.输入下面程序并运行。

#include <>main(){printf("******\n");printf(" *****\n");printf(" ****\n");printf(" ***\n");printf(" **\n");printf(" *\n");}【解答】运行结果为:*********************思考:可以修改程序,使之输出平行四边形,等腰三角形等图形。

(完整版)陈琳编程语言基础C语言(第4版)第1章C语言概述

(完整版)陈琳编程语言基础C语言(第4版)第1章C语言概述

int sum( int x, int y ) { int z; z = x + y;
/* 子函数sum */
输出结果: 5,6
sum = 11
return z;
}
main( )
/* 主函数main */
{
int a,b,c;
scanf("%d,%d", &a, &b ); /* 输入2个整数 */
编程语言基础-C语言(第4版)
主编 陈琳 高等教育出版社 ISBN 978-7-04-045664-6
第1章 C 语 言 概 述
❖ 1.1 C语言的产生和发展 ❖ 1.2 C语言的特点 ❖ 1.3 简单的C程序介绍 ❖ 1.4 C 程序上机步骤 ❖ 1.5 Dev-c++ 介绍
1.1 C语言的产生和发展
c = sum( a, b );
/* 计算2个整数之和 */
printf("sum = %d \n", c); /* 输出结果
*/
getch();
}
C程序特点
❖ 一个C程序是由若干函数构成的。 ❖ 一个C程序总是从main函数开始执行。 ❖ 每条语句均以分号结束。 ❖ 注释是以“/*”开始,并以“*/”结束。 ❖ 每行可以有多条语句,一条语句也可以分写
❖ WIN-TC默认打开的文件是 D:\WIN-TC\projects\noname.c。
1.4.2 WIN-TC软件的运行画面
1.4.3 各按纽的含义
1.4.4 Win Tc上机步骤
❖ 新建或打开一个源程序。 ❖ 编辑源程序。
❖ 编译链接源程序。 ❖ 运行程序。
1.4.5 输出结果窗口

单片机题库分章节答案(C语言)

单片机题库分章节答案(C语言)

第1部分单片机概述及数学基础一、填空题1、十进制255的二进制是11111111,十六进制是FF 。

2、单片机是将CPU、存储器、特殊功能寄存器、定时/计数器和输入/输出接口电路、以及相互连接的总线等集成在一块芯片上。

3、十进制127的二进制是1111111,十六进制是7F。

4、+59的原码是00111011,-59的补码是11000101。

5、十进制数100转换为二进制数是1100100;十六进制数100转换为十进制数是256。

6、十进制数40转换为二进制数是101000;二进制数10.10转换为十进制数是 2. 5。

7、十进制99的二进制是1100 011,十六进制是63。

二、判断题(×)1、AT89S51是一种高性能的16位单片机。

8位机(×)2、有符号正数的符号位是用1表示的。

三、选择题()1、计算机中最常用的字符信息编码是(A)A. ASCIIB.BCD码C. 余3码D. 循环码四、简答题1、何谓单片机?单片机与一般微型计算机相比,具有哪些特点?第2部分51单片机硬件结构、存储系统及I/O接口一、填空题1、AT89S51单片机共有 4 个8位的并行I/O口,其中既可用作地址/数据口,又可用作一般的I/O口的是P0。

2、若采用12MHz的晶振,则MCS-51单片机的振荡周期为__ 1/12 μS __ ,机器周期为____1μS __。

3、AT89S51单片机字长是___8___位,有___40根引脚。

4.89S51单片机是8位单片机,其PC计数器是16位。

5.若单片机使用的晶振频率是6MHz,那么一个振荡周期是1/6µS,一个机器周期是2μSµS。

6.89S51单片机是+5 V供电的。

4.0-5.5V7.堆栈是内部数据RAM区中,数据按先进后出的原则出入栈的。

8.MSC-51系列单片机具有 4 个并行输入/输出端口,其中_P0_口是一个两用接口,它可分时输出外部存储器的低八位地址和传送数据,而_P1__口是一个专供用户使用的I/O口,常用于第二功能的是P3 口。

C语言第1章 C-free与keilc软件

C语言第1章 C-free与keilc软件
如果想删除已经加入的文件或组,可以在图1.9所示的 对话框中,右击该文件或组,在弹出的快捷菜单中选择 Remove File或Remove Group选项,即可将文件或组从工 程中删除。值得注意的是,这种删除属于逻辑删除,被删 除的文件仍旧保留在磁盘上的原目录下,需要的话,还可 以再将其添加到工程中。
1.1.2 工程的创建
熟悉Keil Vision2 IDE的工作环境后,即可录入、编辑、 调试、修改单片机C语言应用程序,具体步骤如下。 (1) 创建一个工程,从设备库中选择目标设备(CPU),设置 工程选项。 (2) 用C51语言创建源程序。 (3) 将源程序添加到工程管理器中。 (4) 编译、链接源程序,并修改源程序中的错误。 (5) 生成可执行代码。
教学提示
单片机应用系统仿真开发平台工具软件:Keil C51,主要用于单片机C语言源程序的编辑、编译、 链接以及调试;标准C语言开发软件C-FREE,主 要标准的C软件编写、编译、链接、调试等。本章 将简要介绍Keil C51、 C-FREE的使用方法。
教学要求
掌握Keil C51在单片机C语言开发中的使用方
6. 退出软件仿真模式
如果想退出μVision2 的软件仿真环境,可以使用下列 方法: (1) 单击图标 。
(2) 执行菜单命令Debug→Start/Stop Debug Session。
1.1.5 存储空间资源的查看和修改
在μVision2的软件仿真环境中,标准80C5l的所有有效 存储空间资源都可以查看和修改。μVision2把存储空间资 源分成以下4种类型加以管理。
2) 断点的管理
如果设置了很多断点, 就可能存在断点管理的问 题。例如,通过逐个地取 消全部断点来使程序全速 运行将是非常烦琐的事情。 为此,μVision2提供了断 点管理器。执行菜单命令 图1.21 断点管理器 Debug→Breakpoints,出 现如图1.21所示的断点管理器,其中单击Kill All(取消所有 断点)按钮可以一次取消所有已经设置的断点。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

【例1-3】二进制数转换成ASCII码程序。
• 将累加器A中的内容分为两个ASCII 码,并存入Result开始的两个单元 。
汇编语言源程序如下:
• • • • • • • • • • • • • • • • • • • • Result EQU 20H ORG 0000H LJMP START START: MOV SP, #40H MOV A, #00011010B LCALL BINTOHEX SJMP $ BINTOHEX: MOV DPTR, #ASCIITAB MOV B, A SWAP A ANL A, #0FH MOVC A, @A+DPTR MOV Result, A MOV A, B ANL A, #0FH MOVC A, @A+DPTR MOV Result+1, A RET ASCIITAB: DB '0123456789ABCDEF' END
【例1-2】二进制数转换成十进制数(BCD 码)
• 将累加器A中给定的二进制数,转 换成3个十进制数(BCD码),并存 入Result开始的3个单元。
汇编语言源程序如下:
• • • • • • • • • • • • • • • • • Result EQU ORG 0000H LJMP START START: MOV SP, #60H MOV A, #123 LCALL BINTOBCD SJMP $ BINTOBCD: MOV B, #100 DIV AB MOV Result,A MOV A, B MOV B, #10 DIV AB MOV Result+1, A MOV Result+2, B RET END 20H
1.2.2 C51编程规范及注意事项
• 1.注释
• 注释语句只对代码起到功能描述的作用,在 实际的编程链接过程中不起作用。在C51语言 中可以通过两种方式不是表示注释内容。 • (1)用“//”开头来注释一行 • 如“//变量声明”。 • (2)用“/*”符号开头,并以“*/”符号结 束 • 如用“/*声明整型变量ch*/”。本方法灵活 多变,可以注释多行printf(“ch=%d\n”,/* 整型变量ch*/ch); • 一个好的C51源程序应该添加必要的注释内容 。
//以上是串口调试需要
【例1-5】编程使发光二极管以一定时间间隔闪烁 #include<reg51.h> sbit LED=P1^0; int data i; void main() { while(1) { LED=0; for(i=0;i<1000;i++); LED=1; for(i=0;i<1000;i++); } }
1.2 C51程序
• 1.2.1 C51的程序结构
• 【例1-4】C51源程序参考示例 • 【例1-5】电路如图1-1所示,发光二极 管D1经限流电阻接至P1.0,编程使高灯 以一定的时间间隔闪烁。
1.2.1 C51的程序结构
【例1-4】C51源程序参考示例
•#include<reg52.h> •#include<stdio.h> •void Function1(void); •unsigned int ch; •void main(void) •{ SCON=0x50; TMOD=0x20; • TH1=221; TR1=1; TI=1; • while(ch<=5) • { Function1( ); • printf("char=%d\n",ch); } • while(1); •} •void Function1(void) •{ unsigned char ps; • ps=1; ch=ch+ps; •}
例题:
• 【例1-1】 将外部数据存储器的000BH 和000CH单元的内容相互交换 • 【例1-2】 二进制数转换成十进制数( BCD码)。将累加器A中给定的二进制 数,转换成3个十进制数(BCD码), 并存入Result开始的3个单元。 • 【例1-3】 二进制数转换成ASCII码程序 。将累加器A中的内容分为两个ASCII 码,并存入Result开始的两个单元。
• 在一般的编译系统中,通常以项目(工程)结构来管 理复杂的C51程序文件。例如Keil μVision2编译环 境中,整个项目结构如图1-1所示。
• 在这里整个项目由项目文件管理、项目文件扩展名为 “.Uv2”。整个工程项目中可以包含如下几类文件。
• 头文件用来包含一些库函数,系统变量声明以及将 不同的C文件连接起来。 • C源文件是C51程序的主要部分,用来实现特定的功 能。C源文件可以有一个,也可以按照不同的功能分 成多个,但所有这些C源文件中有且仅有一个可以包 含一个main( )主函数。 • 库文件是实现特定功能的函数库,供C源文件调用 。 • 编译中间文件是源程序在编译链接过程中生成的中 间文件,其中包含了文件编译调试的信息。 • 可烧录文件是编译系统生成的可以烧录到单片机内 部供执行的文件,类似于“’exe”可执行文件。在 C51语言中,一般扩展名为“.hex”或者“.bin”等 。
1.1.2 单片机的C语言和标准C语言的 比较
• (4)输入/输出 C51输入/输出是通过串口来完成的, 输入/输出指令执行前要对串口进行初始 化 • (5)函数使用 C51有专门的中断函数,而标准的C 语言则没有。
1.1.3 单片机的C语言与汇编语言的 优势对比
• • • • • (1)编程调试灵活方便 (2)生成的代码编译效率高 (3)模块化开发 (4)可移植性好 (5)便于项目的维护
C语言编程:
• • • • • • • • #include<absacc.h> void main(void) { char c; c=XBYTE[11]; XBYTE[11]=XBYTE[12]; XBYTE[12]=c; while(1); }
上述的C语言反汇编:
• • • • • • • • • • • • • • • • • • 0x0000 0x0003 0x0006 0x0007 0x0008 0x0009 0x000A 0x000D 0x000E 0x000F 0x0010 0x0011 0x0013 0x0015 0x0016 0x0017 0x0019 0x001C 020013 90000B E0 FF A3 E0 90000B F0 A3 EF F0 80FE 787F E4 F6 D8FD 758107 020003 LJMP STARTUP1(C:0013) ;跳转 MOV DPTR, #0x000B MOVX A, @DPTR MOV R7, A INC DPTR MOVX A, @DPTR MOV DPTR, #0x000B MOVX @DPTR, A INC DPTR MOV A, R7 MOVX @DPTR, A SJMP C:0011 MOV R0, #0x7F ;以下是清零部分 CLR A MOV @R0,A DJNZ R0,IDATALOOP(C:0016) MOV SP(0x81),#0x07 LJMP main(C:0003)
2.命名
• 在进行程序设计时,经常需要自定义一些函数或变量 。一般来说,重要符合C51命名规范即可通过编译。 但是,为了便于源程序的理解和交流,在进行命名时 应注意以下几点: • 自定义函数或者变量的名称最好能反映该函数或变 量的功能用途。因此,需要选用有意义的单词或者字 母组合来表示。例如MAX表示最大值、MIN表示最小值 等。 • 变量名通常加上表示数据类型的前缀,例如 “ucSendData”的前缀“uc”表示unsigned char。 • 在命名时不要和系统保留的标识符以及关键字产生 冲突或者歧义。
从上面的例子可以看出:
• 一个典型的C51源程序包含预处理命令、自定 义函数声明、main主函数和自定义函数。这 几部分完全类似于C语言的程序结构。 • 预处理命令部分常用#include命令来包含一 些程序中用到的头文件。这些头文件中包含 了一些库函数以及其他函数的声明及定义。 • 自定义函数声明部分用来声明源程序中自定 义的函数。
3.格式
• 为了程序阅读方便,在进行C51程序设计时,在程序结构以及语 句书写格式方面应注意以下几点: • 虽然C51语言对main( )函数放置位置没有限定,但为了程序 阅读的方便,最好把它放置在所有自定义函数的前面,即依次 为头文件声明、自定义函数以及全局变量声明、main( )函数、 自定义函数。 • C51语句可以写在一行上也可以写在多行上。为了程序理解的 方便,最好将每个语句单独写在一行,并加以注释。有时某几 个相连的语句或者共同执行某个功能则可以放置在一行。 • 对于源程序文件不同结构部分之间要留有空行。例如,头文件 声明、自定义函数声明、main( )函数以及自定义函数之间均要 空一行,来明显区分不同结构。 • 对于if、while等块结构语句中的“{”和“}”要配对对齐, 以便于程序阅读时能够理解该结构的起始和结束。 • 源代码安排时可以通过适当的空格以及Tab键来实现代码对齐 。
【例1-1】将外部数据存储器的000BH和 000CH单元的内容相互交换
• • • • • • • • • • • • • ORG MOV MOVX MOV INC MOVX MOV MOVX INC MOV MOVX SJMP END 0000H DPTR, #000BH A, @DPTR R7, A DPTR A, @DPTR DPTR, #000BH @DPTR, A DPTR A, R7 @DPTR, A $
• ④ 具有良好的模块化结构,便于改进 和扩充; • ⑤ 具有良好的可读性和可维护性; • ⑥ 有丰富的库函数,可以大大减少用 户的编程量,大大提高软件开发效率; • ⑦ 能在不同类型的机器上运行,可移 植性好。
1.1.2 单片机的C语言和标准C语言的 比较
相关文档
最新文档