📄 pcint.c
字号:
/*****************************************************
CodeWizardAVR
外部PCINT0-PCINT7共享一个中断源PCINT0
外部PCINT8-PCINT14共享一个中断源PCINT1
外部PCINT16-PCINT23共享一个中断源PCINT2
没有使用延时/通信语句,所以使用内部/外部时钟都可以
每按动SW按键一次,PD3的电平就翻转一次
本例子没有考虑太多的按键防抖动功能
******************************************************/
#include <mega48.h>
//外部PCINT16-PCINT23共享一个中断源PCINT2
//请参考M48数据手册的48页/75页
interrupt [PCINT2] void PCINT2_isr(void)
{
PORTD.3=~PORTD.3; //电平取反
PCIFR|=4; //清除PCINT2中断触发标记,防止按键抖动
}
void main(void)
{
PORTD.2=1;
DDRD.2=0; //设置PCINT16-PCINT23端口为输入,上拉电阻有效
PORTD.3=0;
DDRD.3 =1; //设置PB0输出低电平,准备驱动蜂鸣器
PCICR|=4; //使能PCINT16-PCINT23外部电平变化中断
PCMSK2|=4; //使能PCINT18有效
#asm("sei") //插入汇编语句,打开全局中断
while (1) //循环,等待中断
{
#asm("nop") //空操作的汇编代码,等待中断发生
};
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -