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

📄 int0.c

📁 protues_atmeg8学习之:中断篇源代码
💻 C
字号:
/******************************************/
//文件名:Int0.c
//功能: 外部中断的应用
//作者:  young
//时间: 2006.10.1
//目标MCU:ATmega8   
//晶振:  8MHZ
/******************************************/
#include <iom8v.h>
#include <macros.h>
#include "Delay.h"

unsigned char CountNum;   //全局变量,用来计数

#pragma interrupt_handler int_fun:2
#pragma interrupt_handler int_fun:3
void int_fun(void)
{
    if(++CountNum>=100)
	    CountNum=0;		
}

//主函数,显示数据时先关中断,然后再打开
void main()
{
	unsigned char temp,temp2;
	unsigned char num[10]={0x3F, 0x06, 0x5B, 0x4F, 0x66, 
	                       0x6D, 0x7D, 0x07, 0x7F, 0x6F};
	//初始化端口
	DDRB=0xFF;	  //设置B口为输出模式
	PORTB=0xFF;	  //置高电平
	DDRC=0x03;
	PORTC=0xFF;
	DDRD=0xFF;
	PORTD=0xFF;   
    	
	MCUCR=0x02;   //INT0下降沿触发,INT1低电平有效
	GICR|=0xC0;   //打开INT0,INT1中断
    GIFR=0xC0;    //清除INT0、INT1中断标志位
	
	CountNum=0;   //初始化全局变量
	SEI();        //打开全局中断
	while (1)
	{
	    CLI();    //关闭全局中断
        temp=CountNum/10;
		PORTC&=~(1);			
		PORTB=num[temp];
		delay_ms(1);
		PORTC|=0xFF;
		temp=CountNum%10;
		SEI();
		PORTC&=~(2);		
		PORTB=num[temp];			
		delay_ms(1);
		PORTC|=0xFF; 
		SEI();   //打开全局中断
		delay_ms(1);   	
     }
}

⌨️ 快捷键说明

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