嵌入式技术基础与实践(第2版)第05章_第1页
嵌入式技术基础与实践(第2版)第05章_第2页
嵌入式技术基础与实践(第2版)第05章_第3页
嵌入式技术基础与实践(第2版)第05章_第4页
嵌入式技术基础与实践(第2版)第05章_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

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

文档简介

1、第,5,章,串行通信接口,SCI,主要内容,?,5.1,异步串行通信的通用基础知识,?,5.2 AW60,的,SCI,模块的编程结构,?,5.3 AW60,的,SCI,构件设计与测试,?,5.4 AW60,的中断源与第一个带有中断的编程,实例,5.1,异步串行通信的通用基础知识,5.1.1,串行通信的基本概念,?,异步串行通信的格式,SCI(standard non-return-zero mark/space data,format),“标准不归零传号,/,空号数据格式”通常采用,NRZ,数据格式,.,“不归零”的最初含义是:用正、负电平表示,二进制值,不使用零电平。“mark/space”

2、即“传号,/,空,号”分别是表示两种状态的物理名称,逻辑名称记为,“1/0”。下图给出了,8,位数据、无校验情况的传送格式,开始位,第,0,位,第,1,位,第,2,位,第,3,位,第,4,位,第,5,位,第,6,位,第,7,位,停止位,串行通信数据格式,?,串行通信的波特率,波特率单位是位,/,秒,记为,bps,。通常情况下,波特率的单位可,以省略。通常使用的波特率有,300,、,600,、,900,、,1200,、,1800,、,2400,、,4800,、,9600,、,19200,、,38400,、,57600,、,115200,、,128000,等,?,奇偶校验,字符奇偶校验检查(,ch

3、aracter parity checking,)称为垂直,冗余检查(,vertical redundancy checking,,,VRC,),它是每个,字符增加一个额外位使字符中“1”的个数为奇数或偶数。,奇校验:如果字符数据位中“1”的数目是偶数,校验位应为,“1”,如果“1”的数目是奇数,校验位应为“0”。,偶校验:如果字符数据位中“1”的数目是偶数,则校验位应,为“0”,如果是奇数则为“1”,?,串行通信的传输方式,单工(,Simplex,):数据传送是单向的,一端为发送端,另一端,为接收端。这种传输方式中,除了地线之外,只要一根数据线就,可以了。有线广播就是单工的,全双工(,Ful

4、l-duplex,):数据传送是双向的,且可以同时接,收与发送数据。这种传输方式中,除了地线之外,需要两根数据,线,站在任何一端的角度看,一根为发送线,另一根为接收线。,一般情况下,,MCU,的异步串行通信接口均是全双工的,半双工(,Half-duplex,):数据传送也是双向的,但是在这种,传输方式中,除了地线之外,一般只有一根数据线。任何一个时,刻,只能由一方发送数据,另一方接收数据,不能同时收发。在,freescale,的,HCS08,系列,MCU,中,监控模式的通信就采用这种方式,5.1.2,RS-232,总线标准,MCU,引脚一般输入,/,输出使用,TTL,电平,而,TTL,电平的“

5、1”和,“0”的特征电压分别为,2.4V,和,0.4V,,适用于板内数据传输。,为了使信号传输得更远,美国电子工业协会,EIA(Electronic,Industry Association),制订了串行物理接口标准,RS-232C,。,RS-232C,采用负逻辑,,-3V,-15V,为逻辑“1”,,+3V,+15V,为逻,辑“0”。,RS-232C,最大的传输距离是,30m,,通信速率一般低于,20Kbps,。,RS-232,接口,简称“串口”,它主要用于连接具有同,样接口的室内设备。目前几乎所有计算机上的串行口都是,9,芯接,口。下面给出了,9,芯串行接口的排列位置,相应引脚含义见下表。,

6、1,6,2,7,3,8,4,9,5,上图为,9,芯串行接口排列,引脚号,1,2,3,4,5,功能,接收线信号检测,(,载波检测,DCD),接收数据线,(RXD),发送数据线,(TXD),数据终端准备就绪,(DTR),信号地,(SG),引脚号,6,7,8,9,功能,数据通信设备准备就绪,(DSR),请求发送,(RTS),允许发送,(CTS),振铃指示,9,芯串行接口引脚含义表,5.1.3 TTL,电平到,RS-232,电平转换电路,具有,SCI,接口的,MCU,,一般具有发送引脚,(TxD),与接收引脚,(RxD),,不同公司或不同系列的,MCU,,使用的引脚缩写名可能不,一致,但含义相同。,S

7、CI,的外围硬件电路,主要目的是将,MCU,的,发送引脚,TxD,与接收引脚,RxD,的,TTL,电平,通过,RS-232,电平转换,芯片转换为,RS-232,电平。下图给出一个基本,SCI,电平转换电路,及芯片,MAX232,引脚图,232,电,平,TTL,电,平,T1IN,R1IN,R1OUT,T1OUT,+5V GND,+,16 15 14 13 12 11 10 9,MAX232CPE,1 2 3 4 5 6 7 8,+,+,+,+5V,+,1,F,5,TTL,电平,转为,232,电平,MAX232,引脚,串行通信接口电平转换电路,?,MAX232,芯片进行电平转换基本原理是:,?,发

8、送过程:,MCU,的,TXD,(,TTL,电平)经过,MAX232,的,11,脚,(T1IN),送到,MAX232,内部,在内部,TTL,电平被“提升”为,232,电平,通过,14,脚,(T1OUT),发送出去,?,接收过程:外部,232,电平经过,MAX232,的,13,脚(,R1IN,)进入,到,MAX232,的内部,在内部,232,电平被“降低”为,TTL,电平,,经过,12,脚(,R1OUT,)送到,MCU,的,RXD,,进入,MCU,内,组别,1,2,TTL,电平引脚,11,(,T1IN,),12,(,R1OUT,),10,(,T2IN,),9,(,R2OUT,),方向,输入,输出,

9、输入,输出,典型接口,接,MCU,的,TXD,接,MCU,的,RXD,接,MCU,的,TXD,接,MCU,的,RXD,232,电平引脚,13,14,8,7,方向,输入,输出,输入,输出,典型接口,接到,9,芯接口的,2,脚,RXD,接到,9,芯接口的,3,脚,TXD,接到,9,芯接口的,2,脚,RXD,接到,9,芯接口的,3,脚,TXD,MAX232,芯片输入输出引脚分类与基本接法,5.1.4,串行通信编程模型,从基本原理角度看,串行通信接口,SCI,的主要功能是:接收,时,把外部的单线输入的数据变成一个字节的并行数据送入,MCU,内部;发送时,把需要发送的一个字节的并行数据转换为单线,输出,

10、接受引脚,RxD,发送引脚,TxD,接受移位寄存器,发送移位寄存,器,SCI,数据寄存器,MCU,内部总线,SCI,状态,寄存器,SCI,控制寄,存器,SCI,波特率,寄存器,?,概况,5.2,AW60,的,SCI,模块的编程结构,?,MC9S08AW60,系列包含,两个,独立的串行,通信接口(,SCI,,,Serial Communication,Interface,)模块,分别和端口,E,、端口,C,的管脚,复用,。,?,每个,SCI,模块特性,?,?,?,?,具有的独立的可编程波特率生成器,支持低于,115.2kbaud,的多种标准波特率,采用双缓冲结构,接收器和发送器还具有硬件奇偶校验

11、、,接收唤醒和双缓冲。,?,可编程的,8,位或,9,位字符长度。可选的,13,位暂停符。支持多种中断驱动或轮询操,作,?,SCI,还具有多种工作模式:,8,位和,9,位数据,模式、,Stop,模式、回路模式和单线模式,等,Slide 11,5.2,AW60,的,SCI,模块的编程结构,?,内部结构,?,波特率生成器,SCI,波特率,=BUSCLK/(SBR12:0 x16),其中,,SBR12:0,由,SCI,波特率寄存器,SCIxBDH/L,设定,Slide 12,5.2,AW60,的,SCI,模块的编程结构,?,内部结构,?,发送器,通过设置,SCIxC2,中的,TE,位为,1,来允许,发

12、送器;,通过,写,SCI,数据寄存器,SCIxD,可以把数据存储,到发送数据缓冲器,中。,Slide 13,5.2,AW60,的,SCI,模块的编程结构,?,内部结构,?,接收器,通过设置,SCIxC2,中的,RE,位为,1,来,允许接收,器;,RDRF,接收数据满标志。,Slide 14,5.2,AW60,的,SCI,模块的编程结构,从程序员角度看,涉及,SCI,的有,8,个,8,位寄存器,其中,2,个波特,率寄存器,,1,个数据寄存器,,3,个控制寄存器,,2,个状态寄存器,,只要理解和掌握这,8,个寄存器的用法,就可以进行,SCI,编程,寄存器名称,波特率寄存,器,数据寄存器,控制寄存器

13、,状态寄存器,缩写,SCI1BDH,(,SCI2BDH,),SCI1BDL,(,SCI2BDL,),SCI1D,(,SCI2D,),SCI1C1,(,SCI2C1,),SCI1C2,(,SCI2C2,),SCI1C3,(,SCI2C3,),SCI1S1,(,SCI2S1,),SCI1S2,(,SCI2S2,),地址,0 x0038,(,0 x0040,),0 x0039,(,0 x0041,),0 x003F,(,0 x0047,),0 x003A,(,0 x0042,),0 x003B,(,0 x0043,),0 x003E,(,0 x0046,),0 x003C,(,0 x0044,),0

14、 x003D,(,0 x0045,),访问权限,基本功能,设置波特率,读,/,写,收发数据,读,/,写,设置传输格式,中,断使能,读,/,写,只读,中断标志,发送与,接收状态,AW60,的,SCI,模块寄存器简况,?,SCI,波特率计算公式与,SCI,波特率寄存器,?,SCI,波特率,= f,BUSCLK,/(16,BR),,其中,f,BUSCLK,为内部总线频率,?,SCI,数据寄存器,?,SCI,控制寄存器,?,SCI,控制寄存器,1,(,SCIxC1,),?,SCI,控制寄存器,2,(,SCIxC2,),?,SCI,控制寄存器,3,(,SCIxC3,),?,SCI,状态寄存器,?,SCI

15、,状态寄存器,1,(,SCIxS1,),?,SCI,状态寄存器,2,(,SCIxS2,),9.3,内部寄存器,?,SCI,波特率寄存器(,SCIxBDH,SCIxBDL,),Slide 17,9.3,内部寄存器,?,SCI,控制寄存器,1,(,SCIxC1,),Slide 18,9.3,内部寄存器,?,SCI,控制寄存器,1,(,SCIxC1,),Slide 19,9.3,内部寄存器,?,SCI,控制寄存器,2,(,SCIxC2,),Slide 20,9.3,内部寄存器,?,SCI,控制寄存器,2,(,SCIxC2,),Slide 21,9.3,内部寄存器,?,SCI,控制寄存器,3,(,SC

16、IxC3,),Slide 22,9.3,内部寄存器,?,SCI,控制寄存器,3,(,SCIxC3,),Slide 23,9.3,内部寄存器,?,SCI,状态寄存器,1,(,SCIxS1,),Slide 24,9.3,内部寄存器,?,SCI,状态寄存器,1,(,SCIxS1,),Slide 25,9.3,内部寄存器,?,SCI,状态寄存器,2,(,SCIxS2,),Slide 26,9.3,内部寄存器,?,SCI,数据寄存器(,SCIxD,),?,此寄存器实际上是,两个独立的,寄存器:,SCI,接收数据寄存器和,SCI,发送数据寄存器。,读操作返回只读型接收缓冲器中的内容,,而,写,操作把数据写

17、入只写型发送数据缓冲器中,。对此寄存器的读写操,作还和,SCI,状态标志位的自动清零机制相关联。,Slide 27,9.4 SCI,应用举例,?,SCI,使用设置,?,根据通信双方的,波特率,,设定,SCI,波特率寄存器,SCIxBD,中分频因子,。需要,先写,SCIxBDH,,再写,SCIxBDL,。,?,更新,SCI,控制寄存器,1,(,SCIxC1,),,设定环路模式、,8,位,还是,9,位数据位、是否允许硬件奇偶校验等,,如无特别,需求,可取其缺省值而不做设定。,?,更新,SCI,控制寄存器,2,(,SCIxC2,)来,允许发送、接收,,以及是否允许发送中断和接收中断,等。,?,如需要

18、,更新,SCI,控制寄存器,3,(,SCIxC3,),再对发送,数据是否取反、是否允许错误中断等进行设定。,Slide 28,9.4 SCI,应用举例,?,SCI,使用设置,?,允许,SCI,发送之后,,通过,读,SCI,状态寄存器,1,(,SCIxS1,)判断,其中的,TDRE,位是否为,1,来判断发送数据寄存器是否为空,,当,发送数据寄存器为空时,可以写发送数据到发送数据寄存器,SCIxD,。,?,写发送数据到,SCIxD,之后,通过,查询或中断方式判断,SCIxS1,中的发送完成标志位,TC,是否为,1,来判断当前数据是否发送完,成,,当前字符发送完成后,可以回到上一步继续下一个数据,的

19、发送。,?,允许,SCI,接收之后,,通过,查询或中断方式判断,SCIxS1,中的接,收数据寄存器满标志位,RDRF,是否为,1,来判断是否接收到了新,数据,,当接收到新数据时,读寄存器,SCIxD,来保存新数据,,之后还要通过清零,RDRF,的操作清零,RDRF,标志位。,Slide 29,5.3,AW60,的,SCI,构件设计与测试,5.3.1 SCI,构件设计概述,以,SCI,的初始化、接收和发送三种基本操作为例,来说明实现构件,化的全过程,?,实现构件化编程的,SCI,软件模块应当具有以下几个特点:,?,SCI,模块是最底层的构件,它主要向上提供三种服务,分,别是,SCI,模块的初始化

20、、接收单个字节和发送单个字节,,向下则直接访问模块寄存器,实现对硬件的直接操作。另,外,从现实使用角度出发,它还需要封装接收,N,个字节和,发送,N,个字节的子功能函数,?,SCI,模块在软件上对应,1,个,SCI.c,程序源代码文件和,1,个,SCI.h,头文件,当需要对它进行移植时,大多数情况下只,需简单拷贝这两个文件即可,无需对源代码文件和头文件,进行修改,只有当实施不同芯片之间的移植时,才需要修,改头文件中与硬件相关的宏定义,?,上层构件或软件在使用该构件时,严格禁止通过全局变量,来传递参数,所有的数据传递都直接通过函数的形式参数,来接收,?,SCI,初始化:,?,void SCIIn

21、it(uint8 SCINo, uint8 sysclk, uint16 baud,),?,通过其中一个串口发送一个字节:,?,void SCISend1(uint8 SCINo, uint8 ch),?,通过其中一个串口接收单个字节:,?,uint8 SCIRe1(uint8 SCINo, uint8 *p),?,通过其中一个串口发送,N,个字节:,?,void SCISendN(uint8 SCINo, uint8 n, uint8 ch),?,通过其中一个串口接收,N,个字节:,?,uint8 SCIReN(uint8 SCINo, uint8 n, uint8 ch),5.3.2 SC

22、I,构件的头文件,SCI.h,头文件,SCI.h,中的内容可分为两个主要的部分,,它们分别是,5,个函数原型的声明和外设模块寄存器相,关信息的定义。前者给出了本,SCI,构件对上层构件或,软件所提供的接口函数,而后者则指明了本“元构,件”与具体硬件相关的信息,5.3.3 SCI,构件的,C,语言源程序文件,SCI.c,?,SCI,构件的初始化功能函数:,SCIInit,?,SCI,构件单字节发送功能函数:,SCISend1,?,SCI,构件的单字节接收功能函数:,SCIRe1,?,SCI,构件的多字节发送功能函数:,SCISendN,?,SCI,构件的多字节接收功能函数:,SCIReN,?,S

23、CI,构件的字符串接收功能函数:,SCISendString,5.3.4 SCI,构件的测试工程,SCI1,模块首先向,PC,机发送字符串,然后等待接收,PC,机从串口,发送来的数据,若成功接收到,1,个数据,则立即将该数据回,发给,PC,机,随后继续等待接收,1,个数据并回发,如此循环,串口调试工具软件界面,串行通信收发测试软件界面,5.4 AW60,的中断源与第一个带有中断的编程实例,5.4.1,中断处理的相关基本概念,?,中断与异常的含义,异常是,CPU,强行从正常的程序执行切换到由,某些内部或外部条,件所要求的处理任务,上,这些任务是,优于,CPU,正在执行任务,的。,外部条件:外设、

24、硬件断点请求、访问错误和复位等;,内部条件:指令不对界错误、违反特权级和跟踪,通常将硬件复位视作一种具有最高优先级的异常;,来自,CPU,外围设备的强行任务切换请求,谓之,中断,?,中断服务例程,ISR,?,ISR(Interrupt Service Routine):,即中断服务子程序,5.4 AW60,的中断源与第一个带有中断的编程实例,5.4.1,中断处理的相关基本概念,?,中断源与中断向量表,?,中断源:引起,CPU,产生中断的外部器件;,?,中断向量表:通常,CPU,有多个中断源,每个中断源对应,?,一个,ISR,将这些,ISR,的开始地址,(,中断向量地址,),放在,?,一段连续的

25、存储区域内,此存储区称之中断向量表,?,中断向量表实际是一个指针数组,内容是,ISR,的地址,?,中断优先级,5.4 AW60,的中断源与第一个带有中断的编程实例,5.4.1,中断处理的相关基本概念,?,可屏蔽中断与不可屏蔽中断,?,根据中断是否可以通过程序设置为响应与否。,?,中断处理的一般过程,?,?,?,?,?,?,1,、保存现场,:CPU,内部寄存器的内容保存堆栈中;,2,、获取向量号并获得中断向量地址;,3,、根据中断向量地址访问向量表,从向量表中取得,ISR,的首地,址,装入,PC;,4,、执行,ISR,;,5,、中断返回:从堆栈中恢复,CPU,内部寄存器的内容。,5.4.2 S0

26、8CPU,的中断实现过程,?,堆栈的使用,?,响应中断时,CPU,自动保存,PC,、,X,、,A,、,CCR,至堆栈中,?,S08CPU,的中断过程的详细说明,?,中断的关闭与开启方法,中断的处理过程一般为:,关中断、保护现场、,执行中断服务程序、,恢复现场、开中断等,中断过程,CPU,中寄存器进出栈情况,5.4.2 S08CPU,的中断实现过程,?,S08CPU,的中断过程的详细说明,当,CPU,接收到一个有效的中断请求之后,先执行完当前正在执,行的指令,然后按照下面顺序,自动,响应中断:,?,保存,CPU,寄存器到堆栈中,注意对,H,寄存器的保护;,?,设置,CCR,中的,I,位为,1,,

27、,屏蔽将来的中断;,?,读取正在请求中的优先级最高的中断源的,中断向量,从相应,的中断向量地址取出中断向量送到,PC,;,?,执行,ISR,直至执行,RTI,返回,依次从,堆栈中,恢复,CPU,寄存器,的内容,返回原来的断点处继续执行,?,若允许中断嵌套,则在,ISR,中可用,CLI,指令开中,?,5.4.3 AW60,的中断源与中断向量表,AW60,有,26,个中断源,按优先级从高到低的顺序分别是:,复位中断(,1,个)、,SWI,指令中断(,1,个)、,引脚中断(,1,个)、,低电压检测中断(,1,个)、,ICG,中断(,1,个)、定时器中断(,10,个)、,SPI,中断(,1,个)、,S

28、CI,中断(,6,个)、键盘输入中断(,1,个)、,ADC,转换完成中断(,1,个)、,I2C,中断(,1,个)和实时中,断(,1,个)。,26,个中断源只有,18,个中断向量,有的是几个中断,源使用同一个中断向量,5.4.3 AW60,的中断源与中断向量表,Slide 41,5.4.4 AW60,的中断编程方法,?,CW,环境下使用,AW60,芯片中断的步骤是:,?,在,main.c,中,依照“关总中断开模块中断开总中断”的顺,序打开模块中断;,?,在,isr.c,文件中,编写中断服务程序,修改中断向量表,?,为了方便代码移植,在,Includes.h,文件中做了如下定义:,?,#defin

29、e EnableInterrupts() asm(CLI) /,开放总中断,?,#define DisableInterrupts() asm(SEI) /,禁止总中断,?,AW60,的中断编程的可概括为下述,3,个步骤:,?,新建(或者复制)一个,isr.c,文件,并加入工程中,?,定义中断向量表(复制,isr.c,的应修改中断向量表),?,定义,ISR,并在中断向量表中填入相应,ISR,的名称,5.4.5 AW60,的中断编程示例,以,SCI1,接收中断为例,实现以下功能:主程序每隔,1,秒,让,SCI1,模块向,PC,机发送用于握手的字符串“Hello!,World!”;同时,串口等待接

30、收从,PC,机发来的数据,一旦接,到数据,马上将该数据回发给,PC,机。串口接收程序使用中断,来实现,中断处理程序执行完毕后,又回到主程序,继续每,隔,1,秒钟向,PC,机发送一遍“Hello! World!”,4.4,外部引脚中断,(IRQ),?,中断优先,4.4,外部引脚中断,(IRQ),?,IRQ,外部引脚中,断,?,出现,正,/,负脉冲,发生,IRQ,中断,3.6,外部管脚中断,(IRQ),?,IRQ,内部结构,IRQ,中断由外部中断状态和控制寄存器,IRQSC,管理:,?,IRQPE,位允许,/,禁止,IRQ,管脚功能:,1=,允许;,0,禁止,?,IRQEDG,位选定边沿极性,?,

31、0,下降沿或下降沿和低电平触发,?,1,上降沿或上升沿和高电平触发,V,DD,IRQACK,V,DD,内部上拉,电阻,R,PU,1,0,s,RESET,CLR,D,Q,CK,STOP,BUSCLK,IRQF,SYNCHRONIZER,STOP BYPASS,IRQ,中断请求,IRQ,内部下拉,电阻,R,PD,IRQEDG,IRQPE,IRQIE,IRQMOD,GND,Slide 46,3.6,外部管脚中断,(IRQ),?,IRQ,内部结构,IRQ,中断由外部中断状态和控制寄存器,IRQSC,管理:,?,IRQMOD,设定检测模式,?,0,仅仅在下降沿或上升沿产生,IRQ,事件,?,1,在下降沿

32、和低点平或者在上升沿和高电平产生,IRQ,事件,?,IRQIE,允许,/,禁止,IRQ,中断:,1=,允许;,0,禁止,V,DD,IRQACK,V,DD,内部上拉,电阻,R,PU,1,0,s,RESET,CLR,D,Q,CK,STOP,BUSCLK,IRQF,SYNCHRONIZER,STOP BYPASS,IRQ,中断请求,IRQ,内部下拉,电阻,R,PD,IRQEDG,IRQPE,IRQIE,IRQMOD,GND,Slide 47,3.6,外部管脚中断,(IRQ),?,IRQ,内部结构,IRQ,中断由外部中断状态和控制寄存器,IRQSC,管理:,?,IRQF,只读,标志位,指示是否有,IR

33、Q,事件发生:,0,无;,1,有,?,IRQACK,只写,位,,向,IRQACK,位写,1,以清,IRQF,位为,0,,写,0,既无,意义也无效果,读总返回,0,。,V,DD,IRQACK,V,DD,内部上拉,电阻,R,PU,1,0,s,RESET,CLR,D,Q,CK,STOP,BUSCLK,IRQF,SYNCHRONIZER,STOP BYPASS,IRQ,中断请求,IRQ,内部下拉,电阻,R,PD,IRQEDG,IRQPE,IRQIE,IRQMOD,GND,Slide 48,3.6,外部管脚中断,(IRQ),?,IRQ,寄存器,Slide 49,4.4,外部引脚中断,(IRQ),?,IR

34、Q,内部结构,只写位,写,1,清,IRQF,为,0,,写,0,无意义,允许,/,禁止,IRQ,引脚功能,1,允许,,0,禁止,只读标志,指示是否,IRQ,事件发生,选定边缘极性,1,上升沿或高电平,,0,下降沿或低电平,设定检测模式,1,下降沿和低或上升沿和高,0,仅在下降沿或上升沿,允许,/,禁止,IRQ,1,允许,,0,禁止,4.4,外部引脚中断,(IRQ),?,应用举例一,?,当触发,IRQ,引脚时,点亮或熄灭一个,LED,并使,BEEPER,关闭或,/,发出声音,?,采用下降沿触发,代码分析,#include /* for EnableInterrupts macro */,#incl

35、ude derivative.h /* include peripheral declarations */,void main(void),Init_IRQ();,EnableInterrupts; /* enable interrupts */,/* include your code here */,PTDDD_PTDDD5=1; PTBDD=0 xFF;,for(;) ,_RESET_WATCHDOG(); /* feeds the dog */, /* loop forever */,/* please make sure that you never leave main */,I

36、nterrupt 2 void IRQ_ISR(void),if(IRQSC /,清除外部中断标志位,PTDD_PTDD5=PTDD_PTDD5;/,点亮或熄灭,D5,PTBD_PTBD6= PTBD_PTBD6,/,触发引脚,IRQ,,点亮或熄灭,D5,/=,/,函数名,:Init_IRQ,/,功能,:,初始化外部中断引脚,/=,void Init_IRQ(void),IRQSC_IRQMOD=0; /0:,边沿方式,;1:,电平方式,IRQSC_IRQIE=1; /0,:中断使能;,1,:禁止中断,IRQSC_IRQPE=1; /1,:中断引脚使能;,0,:普通,IO,IRQSC_IRQEDG=0; /,下降沿或低电平信号有效,4.4,外部引脚中断,(IRQ),?,应用举例二,?,主程序为流水灯,?,当触发,IRQ,引脚时,使,BEEPER,发出,3m,时间的声音,?,采用下降沿触发,代码分析,#include /* for EnableInterrupts macro */,#include derivative.h /* include peripheral declarations,*/,void DelayMS(uint x),uint t;,while(x-) for(t=0;t300;t+);,void Init_IRQ(void),IRQSC_IRQMO

温馨提示

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

评论

0/150

提交评论