⑴ PIC18单片机 外部中断INT0,中断触发只能是上升或者下降吗
PIC18单片机
外部中断
INT0,中断触发只能是选择上升或者下降,当然在编程时是可以变通的,
比如在
下降沿触发中断后,中断处理时马上设置成上升沿触发中断,
上升沿触发中断后,中断处理时又马上设置成下降沿触发中断,
⑵ pic外部中断编程(rb0)怎样初始化
你到底是要给RD口做中断还是做数据口?
做普通输入输出的IO口的话,要修改TRISD寄存器,比如设置D口的高4位做输入,低4位做输出。那么就是把0赋给要做输出的位,把1赋值给做输入的位:
BANKSEL TRISD ;换bank
MOVLW 0XF0 ;先把数据送到W临时寄存器
MOVWF TRISD,F ; TRISD = 0XF0
⑶ pic16f877a的b端口可以用作哪些中断
这种单片机的RB端口有以下两种中断功能,分为
1.RB0/INT:
外部中断
INT
2.
RB4
~7端口电平变化中断
⑷ pic单片机中的外设中断和外部引脚中断有什么区别
你应该说的是PIC16系列单片机吧?
在PIC16系列单片机中,除TMR0,INT和RB电平变化中断外的其他中断,均称为外设中断,如AD转换结束中断,TMR1中断等,都属于外设中断。
你说的外部引脚中断,可能是INT中断?它是特定的RB0/INT引脚上的上升沿或下降沿中断,可以由OPTION寄存器设定。
⑸ 急!!PIC单片机中断问题
请问你的中断信号的频率有多快?
⑹ 用PIC单片机外部中断源TMR1IE写时钟程序,能否用非中断的端口将其暂停(如RC0的引脚电平)
中断产生之后,总中断是会关闭的,你可以在中断子程序里面设定暂停,一直不中断返回就可以了,或者是中断返回的条件是rc0的逻辑值就可以了
⑺ 跪求pic 单片机 外部中断函数解析
你这个是PIC那个芯片啊,各个PIC芯片型号不同,寄存器也不同。
猜想一下,RB0为中断引脚,那可能是PIC16f88x系列的单片机。
那要好好看看这芯片的数据手册了,这个个PORTB0口还对应了一个AD输入端,如果不对ANSELH(模拟选择器高字节寄存器)这个寄存器进行操作,默认是AD输入。所以你读到的数值就不对了。所以,前头配置时候需要ANSELH = 0; (如果不是F88x系列,那看一下对应的单片机的数据手册)
况且,并不需要那样写中断程序,也不能这样写。 因为PIC单片机没有中断向量入口地址选择。所以它一遇到中断信号便进入中断子函数,如果你的程序还有其他中断的话,就可能出错(或者单片机因干扰,产生内部某个外设模块的中断,也会调用你写的外部中断程序)
所以,首先中断子函数开始就需要判断外部中断标志位INTF是否被置位:
if(INTF)
{
//这个大括号内写你的中断操作
}
根据我做的经验,PIC单片机的中断内部最好不要写延时函数,甚至不要调用其他函数,因为在调用中断子函数时候,需要中断的现场保护。在中断里调用其他函数,会影响现场保护时候的堆栈操作,而引起出错甚至程序跑飞。
所以当中断产生的时候,直接给a++即可,既:
void interrupt INT()
{ GIE = 0;
if(INTF)
{
INTF = 0;
a++;
}
GIE = 1;
}
如果是像按键判断的话,可以改一下硬件电路,在RB0输入前串上一个施密特触发器74HC14,这样可以在硬件上进行消抖。如果非要软件消抖,可以把延时放在主程序里,即进入中断后把一个变量置位,然后退出中断程序,在主程序里延时并判断是否还为1.
⑻ 为什么PIC单片机中将TMR0设置为外部脉冲计数中断时,对TMR0写操作使其变为外部上升沿中断
定时器好像只能做外部脉冲宽度测量和脉冲技术吧,外部中断用int0、1之类io口啊!我对汇编不熟,你看看是不是从中断返回立刻把PORTD,1的清零了