《51单片机C语言开发课件.ppt》由会员分享,可在线阅读,更多相关《51单片机C语言开发课件.ppt(38页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、51单片机C语言开发(伍建全)n了解51单片机原理n51单片机并口输入、输出n51单片机中断处理程序n51单片机定时器、计数器使用微型计算机微型计算机(PC)什么是单片机?n单片机单片机即单片微型计算机单片微型计算机(Single-ChipMicrocomputer),又称单片机单片机(Microcontroller),是把中央处理器、存储器、定时定时/计数器计数器(Timer/Counter)、各种输入输出接口输入输出接口等都集成在一块集成电路芯片上的微型计算机。n与应用在个人电脑中的通用型微处理器相比,它更强调自供应(不用外接硬件)和节约成本。它的最大优点是体积小,可放在仪表内部,但存储量
2、小,输入输出接口简单,功能较低。由于其发展非常迅速,旧的单片机的定义已不能满足,所以在很多应用场合被称为范围更广的微控制器;由于单芯片微电脑常用于当控制器故又名singlechipmicrocontroller,但是目前在中国大陆仍多沿用“单片机”的称呼单片机的位数单片机的位数n根据总线总线的宽度,单片机又分为4位、8位、16位和32位单片机。4位单片机多用于冰箱、洗衣机、微波炉等家电控制中;8位、16位单片机主要用于一般的控制领域,一般不使用操作系统;32位用于网络操作、多媒体处理等复杂处理的场合,一般要使用嵌入式操作系统。51系列单片机单片机的封装方式ARM单片机常用单片机nARM系列单片
3、机nAtmel(爱特梅尔公司)nAtmelAT91series(ARMTHUMBarchitecture)nAT90seriesAVR(AtmelNorwaydesign)nAtmelAT89series(Intel8051/MCS51architecture)nMARC4nCypressMicroSystems(赛普拉斯微系统公司)nCY8C2xxxx(PSoC)nFreescaleSemiconductor(飞思卡尔半导体)n8-bitn68HC05(CPU05)n68HC08(CPU08)n68HC11(CPU11)n16-bitn68HC12(CPU12)n68HC16(CPU16)n
4、FreescaleDSP56800(DSPcontroller)n32-bitnFreescale683XX(CPU32)nMPC500nMPC8240/8250(PowerQUICCII)nMPC860(PowerQUICC)nMPC8540/8555/8560(PowerQUICCIII)nHoltek(盛群半导体)nHT48FXXFlashI/OtypenHT48RXXI/OtypenHT46RXXA/DtypenHT49RXXLCDtypenIntel(英特尔)n8-bitn8XC42nMCS48nMCS51:Intel8051系列历史悠久,兼容产品众多,使用广泛n8xC251n16-
5、bitnMCS96系列nMXS296n32-bitni960nMicrochip(微芯公司)的PIC单片机系列n8-bit:PIC10PIC12PIC16PIC18n16-bit:PIC24FPIC24HdsPIC30dsPIC33n32bit:PIC32(采用MIPSM4K内核架构)nNationalSemiconductor(美国国家半导体)nCOP8nCR16nNECn78KnNXPSemiconductors(恩智浦半导体,由飞利浦以PhilipsSemiconductors为班底新成立)nLPC2000nLPC900nLPC700nParallax,Inc.nBASICStampnR
6、enesas瑞萨科技系列单片机nRenesas16-bitsnRenesasM16CSeriesnRenesasM32CSeriesnRenesasR8CSeriesnRenesasM16C/TinySeriesnRenesasR8C/TinySeriesnRenesasH8/TinySeriesnSTMicroelectronics(意法半导体)nSyncMOS新茂国际科技新茂国际科技全系列单片机nSM59RXXA28-bits1T(RISC)nSM59DXXG28-bits6T(ISP)nSM59XX8-bits12T(ISP)nSM89XX8-bits12T(Traditional805
7、1)nSM79XX8-bits12T(Customization)nZiLOGnZ8nZ86E02n 其他系列的单片机其他系列的单片机nAVR系列单片机nMsp430系列单片机n8098、80196系列单片机nAT8P5X系列单片机nCZG8000系列单片机nSyncMOS系列单片机nSTC系列单片机一、了解单片机原理8051引脚图51单片机特殊功能寄存器(SFR)n关键字SFRnreg51.hnreg52.hKeilC51单片机开发环境n适用于51单片机的C语言符合C语言标准nC51对C语言有自己的扩展标准C语言关键字关键字用途说明auto存储种类说明用以说明局部变量,缺省值为此break程
8、序语句退出最内层循环case程序语句switch语句中的选择项char数据类型说明单字节整型数或字符型数据const存储类型说明在程序执行过程中不可更改的常量值continue程序语句转向下一次循环default程序语句switch语句中的失败选择项do程序语句构成do.while循环结构double数据类型说明双精度浮点数else程序语句构成if.else选择结构enum数据类型说明枚举extern存储种类说明在其他程序模块中说明了的全局变量float数据类型说明单精度浮点数for程序语句构成for循环结构goto程序语句构成goto转移结构if程序语句构成if.else选择结构int数据类
9、型说明基本整型数long数据类型说明长整型数关键字用途说明auto存储种类说明用以说明局部变量,缺省值为此break程序语句退出最内层循环case程序语句switch语句中的选择项char数据类型说明单字节整型数或字符型数据const存储类型说明在程序执行过程中不可更改的常量值continue程序语句转向下一次循环default程序语句switch语句中的失败选择项do程序语句构成do.while循环结构double数据类型说明双精度浮点数else程序语句构成if.else选择结构enum数据类型说明枚举extern存储种类说明在其他程序模块中说明了的全局变量float数据类型说明单精度浮点数
10、for程序语句构成for循环结构goto程序语句构成goto转移结构if程序语句构成if.else选择结构int数据类型说明基本整型数long数据类型说明长整型数标准C语言关键字nregister存储种类说明使用CPU内部寄存的变量return程序语句函数返回short数据类型说明短整型数signed数据类型说明有符号数,二进制数据的最高位为符号位sizeof运算符计算表达式或数据类型的字节数static存储种类说明静态变量struct数据类型说明结构类型数据swicth程序语句构成switch选择结构typedef数据类型说明重新进行数据类型定义union数据类型说明联合类型数据unsign
11、ed数据类型说明无符号数数据void数据类型说明无类型数据volatile数据类型说明该变量在程序执行中可被隐含地改变while程序语句构成while和do.while循环结构C51编译器的扩展关键字关键字用途说明bit位标量声明声明一个位标量或位类型的函数sbit位标量声明声明一个可位寻址变量sfr特殊功能寄存器声明声明一个特殊功能寄存器sfr16特殊功能寄存器声明声明一个16位的特殊功能寄存器data存储器类型说明直接寻址的内部数据存储器bdata存储器类型说明可位寻址的内部数据存储器idata存储器类型说明间接寻址的内部数据存储器pdata存储器类型说明分页寻址的外部数据存储器xdata
12、存储器类型说明外部数据存储器code存储器类型说明程序存储器interrupt中断函数说明定义一个中断函数reentrant再入函数说明定义一个再入函数using寄存器组定义定义芯片的工作寄存器C51支持的数据类型(扩展)nbitn使用关键字bit可定义一个位标量,占用内存中的1个二进制位,其值是0或1。不能定义位指针,也不能定义位数组。nsfrnsfr将一个变量名与一个8位寄存器相联系,值域为00 xFF。利用它可以访问51单片机内部的特殊功能寄存器。比如用“sfrP0=0 x80”这一句代码,可以定义P0为P0端口在片内的寄存器,在后面的代码中用“”或“”之类的语句可以来操作特殊功能寄存器
13、。nsfr16nsfr16将一个变量名与一个16位寄存器相联系,值域为00 xFFFF。利用它可以访问51单片机内部的16位特殊功能寄存器。例如T0和T1。nsbitnsbit将一个变量名与一个芯片内部RAM中的可寻址位相联系,或者与特殊功能寄存器中的可寻址位相联系。例如sfrP0=0 x80;sbitP0_1=P01,这样,在以后的程序中可以用P0_1对P0口的1号引脚进行读/写操作。KeilC主界面并口输出示例并口输入示例中断interruptn什么是中断?nCPU在处理某一事件A时,发生了另一事件B请求CPU迅速去处理(中断发生中断发生);nCPU暂时中断当前的工作,转去处理事件B(中断
14、响应和中断服务中断响应和中断服务);n待CPU将事件B处理完毕后,再回到原来事件A被中断的地方继续处理事件A(中断返回中断返回),这一过程称为中断中断。中断interruptn51单片机有哪些中断?中断服务程序nvoid函数名(void)interruptn函数体语句ninterrupt是C51中断服务程序引入关键字,只能用于C51中断服务程序逻辑nn是中断号0外部中断01定时器中断T02外部中断13定时中断T14串行中断5定时器中断T2n注意:中断服务程序不能有参数,不能有返回值IE:中断使能控制定时器/计数器T0T1n定时定时/计数器的结构计数器的结构 定时/计数器的实质是加1计数器(16
15、位),由高8位和低8位两个寄存器组成。TMOD是定时/计数器的工作方式寄存器,确定工作方式和功能;TCON是控制寄存器,控制T0、T1的启动和停止及设置溢出标志。定时/计数器的工作原理n加加1计数器计数器输入的计数脉冲有两个来源,一个是由系统的时钟振荡器输出脉冲经12分频后送来;一个是T0或T1引脚输入的外部脉冲源。每来一个脉冲计数器加1,当加到计数器为全1时,再输入一个脉冲就使计数器回零,且计数器的溢出使TCON中TF0或TF1置1,向CPU发出中断请求(定时/计数器中断允许时)。如果定时/计数器工作于定时模式,则表示定时时间已到;如果工作于计数模式,则表示计数值已满。n可见,由溢出时计数器
16、的值减去计数初值才是加可见,由溢出时计数器的值减去计数初值才是加1计数器的计数值。计数器的计数值。n1)设置为定时器模式时设置为定时器模式时,加1计数器是对内部机器周期计数(1个机器周期等于12个振荡周期,即计数频率为晶振频率的1/12)。计计数值数值N乘以机器周期乘以机器周期Tcy就是定时时间就是定时时间t(us)。n2)设置为计数器模式时设置为计数器模式时,外部事件计数脉冲由T0或T1引脚输入到计数器。在每个机器周期的S5P2期间采样T0、T1引脚电平。当某周期采样到一高电平输入,而下一周期又采样到一低电平时,则计数器加1,更新的计数值在下一个机器周期的S3P1期间装入计数器。由于检测一个
17、从1到0的下降沿需要2个机器周期,因此要求被采样的电平至少要维持一个机器周期。当晶振频率为12MHz时,最高计数频率不超过1/2MHz,即计数脉冲的周期要大于2s。定时/计数器的控制n51单片机定时/计数器的工作由两个特殊功能寄存器控制。nTMOD用于设置其工作方式;nTCON用于控制其启动和中断申请。工作方式寄存器TMODnGATE:门控位。GATE0时,只要用软件使TCON中的TR0或TR1为1,就可以启动定时/计数器工作;GATA1时,要用软件使TR0或TR1为1,同时外部中断引脚或也为高电平时,才能启动定时/计数器工作。即此时定时器的启动多了一条件。nC/T非:定时/计数模式选择位。C
18、/T非0为定时模式;C/T非=1为计数模式。nM1M0:工作方式设置位。定时/计数器有四种工作方式,由M1M0进行设置。控制寄存器TCONnTCON的低4位用于控制外部中断优先级nTCON的高4位用于控制定时/计数器的启动和中断申请。定时/计数器的工作方式n四种工作方式n方式1n方式2n方式3n方式4方式0n方式0为13位计数,由TL0的低5位(高3位未用)和TH0的8位组成。TL0的低5位溢出时向TH0进位,TH0溢出时,置位TCON中的TF0标志,向CPU发出中断请求。方式1n方式1的计数位数是16位,由TL0作为低8位、TH0作为高8位,组成了16位加1计数器。方式2n方式2为自动重装初
19、值的8位计数方式。工作方式2特别适合于用作较精确的脉冲信号发生器。方式3n方式3只适用于T0。工作方式3将T0分成为两个独立的8位计数器TL0和TH0。工作于方式3时,T1停止使用。定时/计数器的初始化n初始化程序应完成如下工作:初始化程序应完成如下工作:n1、对TMOD赋值,以确定T0和T1的工作方式。n2、计算初值,并将其写入TH0、TL0或TH1、TL1。n3、中断方式时,则对IE赋值,开放中断。n4、使TR0或TR1置位,启动定时/计数器定时或计数。定时器中断程序示例#includesbitled=P23;unsignedchari=0;voidmain()P0=0 xFF;TMOD=0 x01;TH0=0 x15;TL0=0 xA0;TR0=1;ET0=1;EA=1;for(;);voidtimer0()interrupt1i+;TH0=0 x15;TL0=0 xA0;if(i=10)i=0;led=led;此课件下载可自行编辑修改,供参考!感谢您的支持,我们努力做得更好!
限制150内