第1章单片机C语言概述全解.ppt_第1页
第1章单片机C语言概述全解.ppt_第2页
第1章单片机C语言概述全解.ppt_第3页
第1章单片机C语言概述全解.ppt_第4页
第1章单片机C语言概述全解.ppt_第5页
免费预览已结束,剩余73页可下载查看

下载本文档

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

文档简介

单片机技术应用入门-C51程序设计,(32学时)电气与电子工程学院姜志海,课程简介描述:,以标准C语言和51单片机为基础,全面介绍单片机C语言程序设计与应用基础。包括单片机C语言概述、KEIL和PROTEUS应用概述、51功能部件编程基础、接口编程基础。,首先:,1.为什么开这门课?2.学好这门课需要的基础知识?3.怎样掌握这门课?4.课程内容。5.要求。,1.为什么开这门课?,需要大规模生产自动化生产线的需要。不需要人的干预自动工作、仪表的智能化自动化产品、仪器仪表,2.需要的基础知识?,单片机硬件基础、C语言基础3.怎样掌握这门课?程序设计=算法+语言(1)重点:算法-框图(2)兴趣,4.课程内容,(1)概述(2)软件工具(3)C语言基础(4)中断、定时器/计数器、串行口的C语言编程基础(5)键盘/显示、模拟量的C语言编程基础,5.要求,自觉学习、快乐学习、认真学习参考教材:普通高等教育“十一五”国家级规划教材单片机的C语言程序设计与应用-基于PROTEUS仿真(第2版)姜志海电子工业出版社,补充:51单片机硬件基本基础,一、单片机概述二、MCS-51单片机的总体结构三、MCS-51单片机的存储器结构四、MCS-51单片机并行的I/O口五、MCS-51单片机的辅助电路及时序,一、单片机概述,1、定义:采用一定的工艺手段将CPU、存储器、I/O口集成在一个芯片上。2、特点:抗干扰性强,工作温度范围宽;可靠性高;控制功能很强,数值计算能力较差;指令系统比通用微机系统简单;更新换代速度比通用微机处理器慢多。,3、应用:,智能仪表中的应用机电一体化中的应用实时控制中的应用军工领域的应用分布式多机系统中的应用民用电子产品中的应用,3、常用的单片机产品,MCS单片机AVR单片机PIC单片机MSP单片机ARM处理器DSP处理器,4、单片机应用系统,5、单片机应用系统开发概述,开发环境的软硬件构成,PROTEL、PROTEUS、KEILC51等,单片机的在线编程ISP-在线系统编程IAP-在线应用编程,二、总体结构,包括四个问题:1、内部结构2、外部引脚3、总线图4、微处理器,讲到单片机都有个系列问题MCS-51:基本型51子系列(803180518751)增强型52子系列(803280528752)特殊型所有的基础都是基本型。,1、内部结构,8位的CPU;128个字节的片内RAM;4K字节的片内ROM程序存储器(8031无)外部的RAM和ROM的寻址范围为64K21个字节的专用寄存器4个8位并行I/O口;1个全双工的串行口2个16位的定时器/计数器5个中断源、2个中断优先级111条指令。,内部结构框图:,2、外部引脚及说明,P3口第二功能:,3、总线图,4、CPU,CPU又称为微处理器,是单片机内部的核心部件,它决定了单片机的重要功能特性。它由运算器和控制器两大部分组成。对CPU的使用就是对CPU中的寄存器的使用。,有关的寄存器,累加器ACC寄存器B程序状态字PSW布尔处理器C程序计数器PC数据指针DPTR堆栈指针SP,三、存储器结构,从物理结构上可分为2部分:1、程序存储器(1)编址与访问(2)程序的7个特殊入口地址2、数据存储器(1)编址与访问(2)片内数据存储器(3)特殊功能寄存器块,1、程序存储器,程序存储器通常存放程序指令、常数及表格等,系统在运行过程中不能修改其中的数据。,(1)编址与访问,(2)程序的几个特殊地址:,复位0000H外部中断00003H定时器/计数器0溢出000BH外部中断10013H定时器/计数器1溢出001BH串行口中断0023H(定时器/计数器2溢出002BH),2、数据存储器,数据存储器则存放缓冲数据,系统在运行过程中可修改其中的数据。包括:(1)编址与访问(2)片内数据存储器(3)特殊功能寄存器块,(1)编址与访问,(2)片内数据存储器,00H1FH20H2FH30H7FH堆栈:片内RAM、初始化时SP=07H向上生长的一般程序的开始:MOVSP,#60H,(3)特殊功能寄存器块,特殊功能寄存器又称为专用寄存器专用于控制、管理片内算术逻辑部件、并行I/O口、串行I/O口、定时器/计数器、中断系统等功能模块的工作。,四、并行的I/O口,1、P1口2、P3口3、P0口4、P2口,1、P1口:,2、P3口:,3、P0口:,4、P2口:,五、辅助电路及时序,1、时钟电路2、复位电路3、时序1、时钟电路,2、复位电路,3、时序,(1)振荡周期(2)状态周期(3)机器周期(4)指令周期外部晶振的2分频是MCS-51单片机的内部时钟周期,6个时钟周期构成了单片机的1个机器周期。,第1章单片机的C语言概述,11C语言与单片机编程12C51程序13C51编程举例,11C语言与单片机编程,一、单片机的C语言的特点二、单片机的C语言与标准C语言的比较三、单片机的C语言与汇编语言的比较,一、单片机的C语言的特点,无须了解机器硬件,只需初步了解MCS-51的存储器结构;C51语言在小应用程序中产生的代码量大,执行速度慢,但在较大的程序中代码效率高;C51语言程序由若干函数组成,具有良好的模块化结构,便于改进和扩充;C51语言程序具有良好的可读性和可维护性,而汇编语言在大应用程序开发中,开发难度增加,可读性差;C51语言有丰富的库函数,可以大大减少用户的编程量,显著缩短编程与调试时间,大大提高软件开发效率;使用汇编语言编制的程序,当机型改变时,无法直接移植使用,而C语言程序是面向用户的程序设计语言,能在不同机型的机器上运行,可移植性好。,二、单片机的C语言与标准C语言的比较,(1)C51语言中定义的库函数和标准C语言定义的库函数不同(2)C51语言中的数据类型和标准C语言的数据类型也有一定的区别(3)C51变量的存储模式与标准C语言中变量的存储模式不一样(4)C51语言与标准C语言的输入/输出处理不一样(5)C51语言与标准C语言在函数使用方面有一定的区别C51语言中有专门的中断函数。,三、单片机的C语言与汇编语言的比较,【例1-1】将外部数据存储器的000BH和000CH单元的内容相互交换,ORG0000HMOVDPTR,#000BHMOVXA,DPTRMOVR7,AINCDPTRMOVXA,DPTRMOVDPTR,#000BHMOVXDPTR,AINCDPTRMOVA,R7MOVXDPTR,ASJMP$END,C语言编程:,#include/绝对地址访问库函数voidmain(void)charc;c=XBYTE11;XBYTE11=XBYTE12;XBYTE12=c;while(1);,上述的C语言反汇编:,0 x0000020013LJMPSTARTUP1(C:0013);跳转0 x000390000BMOVDPTR,#0 x000B0 x0006E0MOVXA,DPTR0 x0007FFMOVR7,A0 x0008A3INCDPTR0 x0009E0MOVXA,DPTR0 x000A90000BMOVDPTR,#0 x000B0 x000DF0MOVXDPTR,A0 x000EA3INCDPTR0 x000FEFMOVA,R70 x0010F0MOVXDPTR,A0 x001180FESJMPC:00110 x0013787FMOVR0,#0 x7F;以下是清零部分0 x0015E4CLRA0 x0016F6MOVR0,A0 x0017D8FDDJNZR0,IDATALOOP(C:0016)0 x0019758107MOVSP(0 x81),#0 x070 x001C020003LJMPmain(C:0003),【例1-2】二进制数转换成十进制数(BCD码),将累加器A中给定的二进制数,转换成3个十进制数(BCD码),并存入Result开始的3个单元。,汇编语言源程序如下:,ResultEQU20HORG0000HLJMPSTARTSTART:MOVSP,#60H;主程序MOVA,#123LCALLBINTOBCDSJMP$BINTOBCD:MOVB,#100;设置转换子程序DIVABMOVResult,A;除以100得百位数MOVA,BMOVB,#10DIVABMOVResult+1,A;余数除以10得十位数MOVResult+2,B;余数为个位数RETEND,C51源程序如下:,voidmain(void)unsignedcharResult3;unsignedcharNumber;Number=123;Result0=Number/100;/除以100得百位Result1=(Number%100)/10;/余数除以10得十位Result2=Number%10;/余数为个位while(1);/等待暂停,【例1-3】二进制数转换成ASCII码程序。,将累加器A中的内容分为两个ASCII码,并存入Result开始的两个单元。,汇编语言源程序如下:,ResultEQU20HORG0000HLJMPSTARTSTART:MOVSP,#40HMOVA,#00011010BLCALLBINTOHEXSJMP$BINTOHEX:MOVDPTR,#ASCIITABMOVB,ASWAPAANLA,#0FH;取A的高4位MOVCA,A+DPTRMOVResult,AMOVA,BANLA,#0FH;取A的低4位MOVCA,A+DPTRMOVResult+1,ARETASCIITAB:DB0123456789ABCDEFEND,C51源程序如下:,codeunsignedcharASCIITAB16=0123456789ABCDEF;voidmain(void)unsignedcharResult2;unsignedcharNumber;Number=0 x1a;Result0=ASCIITABNumber/16;/高4位Result1=ASCIITABNumber,12C51程序,本节主要介绍C51程序的结构、规范、注意事项、标识符、关键字等。一、C51的程序结构二、C51编程规范及注意事项三、C51的标识符与关键字,一、C51的程序结构,#include#includevoidFunction1(void);unsignedintch;voidmain(void)SCON=0 x50;TMOD=0 x20;TH1=221;TR1=1;TI=1;/以上是串口调试需要while(ch0);voidmain()unsignedchari,sel;while(1)sel=0 xfe;for(i=0;i0);voidmain()unsignedchari,sel,a;while(1)sel=0 xfe;for(i=0;i8;i+)P1=sel;delay(50000);a=sel0;i-)_nop_();/空操作,voidmain(void)while(1)BUZ=0;/关闭声音S=1;if(P1_0=0)/判断开关是否闭合BUZ=0;delay();BUZ=0;delay();BUZ=1;delay();delay();BUZ=0;delay();delay();,【例1-8】使用定时器/计数器以工作方式2产生100s定时,在P1.0口输出周期为200s的连续方波,已知晶振频率为6MHz。,机器周期频率:fcy=f/2/6=0.5MHz,Tcy=2s定时器预置值(初值)N:28-N=T/Tcy=Tfcy=50N=206=0CEH定时器/计数器0工作于方式2,定时方式,其方式控制字:TMOD=02H。,C51源程序清单如下:,/*200s周期方波发生程序*/#defineT0_VALUE0 xCE#defineTMOD_VALUE0 x02/*定时器/计数器0方式控制字*/#includevoidmain()TMOD=TMOD_VALUE;/

温馨提示

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

评论

0/150

提交评论