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

📄 main.c

📁 51单片机C语言常用模块与综合系统设计实例精讲
💻 C
字号:
#include <stdio.h>
#include <absacc.h>
#include <intrins.h>
#include <./Atmel/at89x52.h>
#include "source.h"
void Enable_Int(unsigned char i);
void Disable_Int(unsigned char i);
main(void){
	unsigned int i;
	IE=0X40;//禁止所有中断
	EX0=1;//使能外部中断0
	IT0=0;//外部中断0,电平触发。
	EA=1;  /* 使能中断 */	
	Enable_Int(0);//使能扩展中断0
	Enable_Int(1);//使能扩展中断1
	Enable_Int(2);//使能扩展中断2
	Enable_Int(3);//使能扩展中断3
	Enable_Int(4);//使能扩展中断4
	Enable_Int(5);//使能扩展中断5
	Enable_Int(6);//使能扩展中断6
	Enable_Int(7);//使能扩展中断7
	while(1){
		i++;
		if(i==0)Enable_Int(7);//使能扩展中断7
		if(i==0x7fff)Disable_Int(7);////禁止扩展中断7
	}
}
void Int_Clr(unsigned char i){//清除扩展中断i
	XBYTE[INT_CLR0+i]=1; //把清除i对应的地址写1
}
void Enable_Int(unsigned char i){//使能扩展中断i
	unsigned char temp;
	temp=XBYTE[INT_ENA]; //读出使能寄存器的状态
	temp |=1<<i;//要对应的要使能比特写1
	XBYTE[INT_ENA]=temp;//把temp值给使能寄存器的
}
void Disable_Int(unsigned char i){//禁止扩展中断i
	unsigned char temp;
	unsigned char mask;
	mask=1<<i;
	mask=~mask; //把要屏幕中断的比特设置0,其他比特为1
	temp=XBYTE[INT_ENA];//读出使能寄存器的状态
	temp &=mask;
	XBYTE[INT_ENA]=temp;//把使能寄存器相应的比特设置为0
}
void int0() interrupt 0 {//C51外部中断0的中断处理函数
	unsigned char stat,i;
	stat=XBYTE[INT_MASKED];//读中断状态
	for(i=0;i<8;i++){
		if(stat&(1<<i)){//如果是扩展中断i发送中断
			Int_Clr(i);//清除i的电平中断
			//扩展中断对应的处理程序
		}
	}
}

⌨️ 快捷键说明

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