历史上的今天
今天是:2025年08月13日(星期三)
2020年08月13日 | PIC单片机接连模块说明
2020-08-13 来源:elecfans
PIC单片机接连模块介绍:
PIC16F87X系列单片机可以接纳多达14个接连源。接连操控器寄存器INTCON符号着各个接连源的恳求,对各个接连设置屏蔽位,对悉数接连设置大局屏蔽位。
PIC16F87X系列的接连包含:TMR0溢出接连(TOIF)、外部接连(INTF)、端口B改动接连(RBIF)、并行从动端口接连(PSPIF)、A/D改换接连、USART异步接纳接连(RCIF)和异步发送接连(TXIF)、同步串行端口接连(SSPIF)、CCP1接连(CCPIIF)、TMR2接连(TMR2IF)、TMR1接连、CCP1接连(CCP2)、E2PROM写接连(EEIF)、总线磕碰接连(BCLIF)。
各个接连选用查询办法进行,即当CPU口向应接连时,事前要通过查询接连象征位去差异是哪个接连发作接连恳求,然后施行相应的接连效劳程序。
RB0/INT外接连仍遵从PIC16F87X单片机的接连准则,当有接连时发作接连象征位,由CPU查询辨认接连。依据这一准则,可以拓宽多个外接连源,CPU照料接连后查询接连象征位辨认接连。
RB0/INT引脚上的外部接连由边际触发,既可所以上升沿,也可所以下降沿,这由挑选寄存器OPTION_REG的INTEDG位(D6)挑选。当INTEDG=1时,挑选上升沿触发;当INTEDG=0时,挑选下降沿触发。一旦查看到引脚上呈现有用边际,就把INTF位(INTCON的D1)置1。这个接连由接连操控位INTE设置容许或阻挠。
为了避免过错的死循环施行同一个接连,在从头翻开这个接连之前有必要在接连效劳程序顶用软件对INTF位清0。假定INTE位在进入休眠情况之前已被置1,INT接连可以唤醒在休眠情况下的CPU。GIE位的情况挑选处理器是不是在被唤醒后转至接连矢量。
当守时器TIMER0的计数器TMR0计满溢出(即由FFH成为00H)时,硬件将主动把TGIF方位1。其接连可以通过对TOIE位进行设置来操控该接连是不是翻开。
当CPU照料RB7、RB4接连时,就有两种情况发作:榜首种称为“短脉冲”,即在CPU照料接连时期引脚电平康复到初始情况,对这种情况CPU不会发作虚伪接连景象。第二种称为“宽脉冲”,即在CPU照料接连后引脚电平才康复到初始情况,康复到初始情况的进程也发作接连恳求,这种情况即是虚伪接连景象。
在端口B的D7~D4引脚上一旦有电平改动就把RBIF方位1,这个接连可以通过对RBIE位进行设置来操控该接连是不是翻开。
以上即是PIC单片机接连模块介绍的详细内容。
史海拾趣
|
如题,本来一直以为只是硬件相关的问题,可昨天一位朋友说,从软件也是可以调整这样的误差的,s3c2410手册里no.17就给了一个关于中断周期的公式,从哪入手呢?哪位知道,给个方向啊.3Q~… 查看全部问答> |
|
if(KeGetCurrentIrql()>PASSIVE_LEVEL)作用? 网上代码: HANDLE openfile(WCHAR* name,ACCESS_MASK access,ULONG share) { //return 0 for error. HANDLE hfile; IO_STATUS_BLOCK iosb; int stat; OBJECT_ATTR ...… 查看全部问答> |
|
eeworld在我心中不错,也不知从何时起就被eeworld吸引了,我想,在新的一年里,eeword应多组些制作,为了省经费可以走让厂家来赞助的方式,为什么强调做呢,这是在每次做时,增长的本事.单片和电子,是动手很强的学科.不动手永远不会开发出任何东东的.我想就 ...… 查看全部问答> |
|
又是中断问题! 之前有 xuanyu 和 lsdfae11 告知小弟中断嵌套,需要重新用_EINT()重新开启总中断。之后可以了。但是,最近我又写一个程序,同样用到中断嵌套。结果就大不一样了。下面是我的程序结构。 void main(void) { WDTCTL=WDTPW+WDTHO ...… 查看全部问答> |
|
大家好,我是单片机初学者,刚学汇编程序,用PIC16F876A-A/SP做了块实验板,调A/D模块部分快一个星期了,没调试成功,想借助宝地请各位老师指点下。 下面是相关的实验板原理图 此汇编程序实现A/D转换功能,应用于pic单片机上,A/D采用 ...… 查看全部问答> |
|
#include \"msp430g2231.h\"void main( void ){ // Stop watchdog timer to prevent time out reset WDTCTL = WDTPW + WDTHOLD; TACTL = TASSEL0 + TACLR; CCTL0 = CCIE; CCR0 = 16384; P1DIR |= BIT0; TACTL |=MC0; _EINT(); while(1);}# ...… 查看全部问答> |




