第讲C语言基本结构及单片机存储器介绍_第1页
第讲C语言基本结构及单片机存储器介绍_第2页
第讲C语言基本结构及单片机存储器介绍_第3页
第讲C语言基本结构及单片机存储器介绍_第4页
第讲C语言基本结构及单片机存储器介绍_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

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

文档简介

1、 第3讲 C语言循环结构及存储器介绍 主讲:汤旭慧Addr:行政楼509第二工业中心418Tel26731194QQ:2232360300单片机内部结构时钟电路CPUROMRAMT0 T1中断系统串行接口并行接口P0 P1 P2 P3TXD RXDINT0 INT1定时计数器数据存储器程序存储器CPUSTC90C516RD+单片机的存储器STC90C516RD+单片机的程序存储器和数据存储器是各自独立编址的。除了可以访问片上Flash存储器外,还可以访问64KB的外部程序存储器。 STC90C516RD+单片机内部 1280字节的数据存储器,其在物理和逻辑上都分为两个

2、地址空间:内部RAM(256字节)和内部扩展RAM(1024字节)。程序存储器程序存储器内部外部0000H0FFFH(4K)0000HFFFFH(64K)0000H0FFFH(4K)0000H0001H0002H(PC)0000H是程序执行的起始单元,在这三个单元存放一条无条件转移指令中断5中断4中断3中断2中断10003H000BH0013H001BH0023H002BH外部中断0定时器0中断外部中断1定时器1中断串行口中断8位0FFFH0FFEHEA=1 EA=0程序存储器资源分布中断入口地址0000HFFFFH(64K)内部外部数据存储器数据存储器00HFFH7FH80H(高128B)(

3、低128B)RAM专用寄存器00H07H08H0FH10H17H18H1FH0区R0R7R0R7R0R7R0R71区2区3区工作寄存器区可位寻址区20H2FH7F 7807 0030H7FH数据缓冲区/堆栈区内部RAM存储器 1 1第 3 区18H1FH 0 1第 1 区08H0FHRS1 RS0寄存器区片内RAM地址 0 0第 0 区00H07H 1 0第 2 区10H17H工作寄存器区选择位RS0、RS1注意: 一个单元地址对应有8个位地址MSBMost Significant Bit (最高有效位)LSB Least Significant Bit (最低有效位)单元地址2FH2EH2D

4、H2CH2BH2AH29H28H27H26H25H24H23H22H21H20H7F776F675F574F473F372F271F170F07 MSB 位地址 LSB7E766E665E564E463E362E261E160E067D756D655D554D453D352D251D150D057C746C645C544C443C342C241C140C047B736B635B534B433B332B231B130B037A726A625A524A423A322A221A120A0279716961595149413931292119110901787068605850484038302820

5、18100800RAM位寻址区位地址表高128个单元离散分布有21个特殊功能寄存器SFR(是用来对片内各功能模块进行管理、控制、监视的控制寄存器和状态寄存器。) 11个可以进行位寻址。特别提示:对SFR只能使用直接寻址方式,书写时可使用寄存器符号,也可用寄存器单元地址。1.程序计数器(PCProgram Counter) PC是一个16位的计数器,它的作用是控制程序的执行顺序。其内容为将要执行指令的地址,寻址范围达64KB。 PC没有地址,是不可寻址的。因此用户无法对它进行读写。2. 累加器(ACCAccumulator)累加器为8位寄存器,是最常用的专用寄存器,它既可用于存放操作数,也可用来

6、存放运算的中间结果。3. B寄存器B寄存器是一个8位寄存器,主要用于乘除运算。4. 程序状态字(PSWProgram Status Word)程序状态字是一个8位寄存器,用于存程序运行中的各种状态信息。PSW的各位定义如下:D7HD6HD5HD4HD3HD2HD1HD0HCYACF0RS1RS0OVF1PCY(PSW.7)进位借位标志位。其功能有二:一是存放算术运算的进位标志,在进行加或减运算时,如果操作结果最高位有进位或借位时,CY由硬件置“1”,否则清“0”;二是在位操作中,作累加位使用。位传送、位与位或等位操作,操作位之一固定是进位标志位。AC(PSW.6)辅助进位标志位。在进行加减运算

7、中,当有低4位向高4位进位或借位时,AC由硬件置“1”,否则AC位被清“0”。F0(PSW.5)用户标志位。这是一个供用户定义的标志位,需要利用软件方法置位或复位,用以控制程序的转向。D7HD6HD5HD4HD3HD2HD1HD0HCYACF0RS1RS0OVF1PRS1和RS0(PSW.4,PSW.3)寄存器组选择位。用于选择CPU当前工作的通用寄存器组。通用寄存器共有四组,其对应关系为:RS1 RS0 寄存器组 片内RAM地址0 0第0组00H07H0 1第1组08H0FH 1 0第2组10H17H 1 1第3组18H1FHOV(PSW.2)溢出标志位。在带符号数加减运算中,OV=1表示加

8、减运算超出了累加器A所能表示的符号数有效范围(-128 +127),即产生了溢出,因此运算结果是错误;否则,OV=0表示运算正确,即无溢出产生。P(PSW.0)奇偶标志位。表明累加器A内容的奇偶性,如果A中有奇数个“1”,则P置“1”,否则置“0”。凡是改变累加器A中内容的指令均会影响P标志位。12345678910111213142827262524232221 201918171615EPROM276412345678910111213142827262524232221 201918171615EPROM276412345678910111213141516171819204039383

9、73635343332313029282726252424222112345678910111213142827262524232221 201918171615RAM6264 12345678910111213142827262524232221 201918171615RAM6264 存储器80318751805189C51片内RAM片内ROM256B(字节)4K64K64K实战演练 请按照本课堂的教学,建立开发环境,调试软件代码,并下载;分别用顺序结构和循环结构实现如下实训:实现8个灯从上到下逐一点亮的流水灯效果。如:需要用到的软件及工具1. C编译软件Keil4 软件2. 编程下载软件

10、:PZISP自动下载软件3. ISP下载器4. 实验电路板HC6800EM3 v20工作环境建立步骤安装Keil4软件(版本:cavr1.259)安装PZISP自动下载软件安装USB驱动程序。到“设备管理器”的“端口”中查看虚拟的串口端口号。启动C编译软件Keil4,进行编辑编译生成.hex文件。打开目标板电源,尝试启动PZISP自动下载软件建立通信连接,实现在线下载。C程序的三种基本结构 C程序采用结构化的程序设计方法,程序由若干个基本结构组成。每一个基本结构可以包含一个或若干个语句。主要有三种结构:顺序结构:程序按照语句顺序进行执行。循环结构:当型循环结构:“先判断,再操作”直到型循环结构

11、:“先操作,再判断”选择(分支)结构:运算符与表达式运算符:用来表示各种不同运算的符号。表达式:用运算符把运算对象连接起来的式子。关系运算符关系运算符 优先级 = = !=低高关系表达式 用关系运算符将两个表达式(可以是算术表达式、关系表达式、赋值表达式或逻辑表达式)连接起来的式子,称为关系表达式。关系表达式的值为逻辑值“真”或“假”,以1代表“真”,以0代表“假”。 例如: (1)关系表达式“8=4”的值为 。 (2) 关系表达式“50”的值为 。 当型循环:while语句while语句用来实现“当型”循环,执行过程:首先判断表达式, 当表达式的值为真(非0)时,反复执行循环体。为假(0)时

12、执行循环体外面的语句。循环体循环继续的条件表达式下一条语句非0(真)0(假)循环体语句组while执行过程格式:while(循环继续的条件表达式) 语句组; 花括号不能丢掉!请问:下述程序实现了什么功能?main( ) int i=0,sum=0; while(i=10) sum=sum+i; i+; 直到型循环:do-while语句do-while语句用来实现“直到型”循环执行过程:先无条件执行一次循环体,然后判断条件表达式,当表达式的值为真(非0)时,返回执行循环体直到条件表达式为假(0)为止。绝对不能少分号!循环体格式:do 循环体语句组; while(循环继续条件);花括号不能丢掉!循

13、环继续的条件表达式下一条语句非0(真)0(假)循环体语句组请问:下述程序实现了什么功能?main( ) int i=0,sum=0; do sum=sum+i; i+; while(i=100);循环语句 while(1);等同于 while(1);无限次执行空语句,原地踏步语句,停机while(1) 循环体;无限次执行循环体C语言的数据类型C语言提供的数据结构,是以数据类型形式出现的。分类如下:指针类型基本类型字符型整型空类型构造类型枚举类型单精度型数组类型双精度型实型(浮点型) 结构体类型共用体类型数据类型 C程序中用到的每一个变量都要指定它们所属的数据类型。 其原因在于:不同类型的数据在

14、内存中占据不同长度的存储区,而且采用不同的表示方式。一个数据类型对应着一个值的范围并且对应一组允许的操作。 表达式语句表达式:用运算符把运算对象连接起来的式子。 表达式语句由表达式加上分号“;”组成,其一般形式如下: 表达式; 执行表达式语句就是计算表达式的值。 空语句中只有一个分号“;”,程序执行空语句时需要占用一条指令的执行时间,但是什么也不做。 在C51程序中常常把空语句作为循环体,用于消耗CPU时间等待事件发生的场合。 算术运算符和表达式运算符:用来表示各种不同运算的符号。表达式:用运算符把运算对象连接起来的式子。基本算术运算符:、*、/、% 注意:两个整数相除的结果仍为整数。 %运算

15、符两侧必须为整型数据。强制类型转换运算符: (类型名)(表达式) 注意:此运算并不改变数据原来的类型。自增自减运算符:算术表达式:main() float num1=2.5; int result; result=(int)num1+4;算术运算符 C语言提供了如下算术运算符: (加法运算)、 (减法运算) *(乘法运算符)、(除法运算符) % (求余运算符,或称模运算符) 如: 4 % 20说明:两个整数相除结果为整数,如8/5的结果为1,舍去小数部分。如果参加运算的两个数中有一个数为实数,则结果是实型。求余运算要求%两侧都是整型数据。温故而知新请阅读如下程序:说明程序有什么问题?修改并说明

16、其功能。main( ) int num1,num2,num3=80; num1=12; num2=57.23; unsigned char sum, mux; sum=num1*num3+num3; mux=num1*num2*num3;main( ) int num1,num2,num3=80; unsigned char sum, mux; num1=12; num2=57.23; sum=num1*num3+num3; mux=num1*num2*num3;main( ) unsigned char num1, num3=80; float num2, mux; unsigned int

17、 sum; num1=12; num2=57.23; sum=num1*num3+num3; mux=num1*num2*num3; 自增(+)、自减(-)运算1. 自增、自减运算符都有两种用法: (1)前置运算变量、变量 即先增减、后运算。 (2)后置运算变量、变量 即先运算、后增减。 2. 说明(1)自增、自减运算,常用于循环语句中。(2)自增、自减运算符,不能用于常量和表达式。(3)严禁连续使同一变量进行自增或自减运算。课堂实训请说明如下程序运行结束后,num和result的执行结果?main() int num=6,result; result=+num; result=num-;实训

18、要求:编制程序尝试将此程序的计算结果显示在发光二极管上。要求在P1口输出result的值,在P0口输出num的值。实战演练 实训2:如图所示电路,要求按照如下所示的方式1点亮,每次点亮两只灯,间隔一段时间后,再换成方式2点亮相邻的两只,依此类推,四次后,再回到第一次,周而复始循环20次后停机。(要求分别用while、do-while语句完成) 方式1: 方式2: 方式3: 方式4:实战演练 请按照本课堂的教学,建立开发环境,模拟仿真调试软件代码,并下载实现如下实训:实现8个灯左右循环滚动逐一点亮的流水灯效果 。(要求周而复始循环20次后停机。请分别用while、do-while语句完成)跑马灯

19、设计设计任务: 指示灯LED1LED8分别接在P2口的P2.0P2.7管脚上,低电平灯亮,高电平灯灭。初始状态灯间隔点亮。 1.保持PA口其余灯的状态不变的条件下,只关闭LED0指示灯的跑马灯设计。 2.保持PA口其余灯的状态不变,只打开LED7指示灯的跑马灯设计。 3.保持PA口其余灯的状态不变,只关闭LED0LED3灯的跑马灯设计。 4.尝试将当前PA端口所有指示灯输出状态相反的C程序设计。 即亮灯改为灭灯,灭灯改为亮灯。 综合实战演练 实训1:如图所示电路设计跑马灯。首先按一定的时间间隔从左到右依次轮流点亮1盏灯,轮完8只灯后;进入第二轮显示方式:从左到右依次轮流同时点亮2盏灯,轮完8只灯后;进入第三轮显示方式:从左到右依次轮流同时点亮3盏灯;进

温馨提示

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

评论

0/150

提交评论