⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 int0+1.c

📁 详细介绍M8两版间通讯
💻 C
字号:
/*INT0、INT1使用中断方式,一个中断处理函数 实现对INT0/INT1按键的处理*/
#include <iom8v.h>
#include <macros.h>
extern void uart_init(void);
void delay_ms(unsigned int ms)
 {
	unsigned char i,loopcount;
	ms=4*ms+1;
	for(loopcount=0;loopcount<ms;loopcount++)//外循环
	 {
		for(i=0;i<=251;i++);
		//内循环
	 }
 }
void int_init(void)
{GICR  = 0xC0;}
//初始化int0,int1中断使能
#pragma interrupt_handler int_isr:iv_INT0 int_isr:iv_INT1
void int_isr(void)
 {
	unsigned char i;
	unsigned char loopcount;
	delay_ms(50);//延时10ms后检测按键是否有效,进行软防抖
	/*for (loopcount=0;loopcount<41;loopcount++)
		{for(i=0;i<251;i++);}
	//不使用延时函数而直接使用循环进行延时*/
	i=PIND&0x0c;//检测键盘是否仍按下
	if(i==0x0c) return;//按键误触发
	else
	 {
		if(i==0x08)//INT0键按下
		 {
			if (OCR1A<3890) OCR1A+=205;//递增
			else OCR1A=0x0fff;
			//12位满幅值,防止出现数据变为负向数值
		 }
		else if(i==0x04)//INT1键按下
		 {
			if (OCR1A>205) OCR1A-=205;//递减
			else OCR1A=0;
		 }
		else if(i==0x00) UCSRB=(1<<RXCIE)|(1<<RXEN)|(1<<TXEN);
		//两键同时按下,重新切换到USART中,允许接收中断、发送和接收
	 }
	GICR  = 0x00;
	//int0,int1禁止使能
	SEI();
	while ((PIND&0x0c)!=0x0c);
	//检查按键释放
	GICR  = 0xC0;
	//int0,int1中断使能
 }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -