📄 中断.c
字号:
//-----------------------函数声明,变量定义--------------------------------------------------------
#include <reg51.h>
#include <intrins.h>
#include<ABSACC.H>
unsigned char CH_data[8];
#define CH0 XBYTE[0xFEF8]
#define CH1 XBYTE[0xFEF9]
#define CH2 XBYTE[0xFEFA]
#define CH3 XBYTE[0xFEFB]
#define CH4 XBYTE[0xFEFC]
#define CH5 XBYTE[0xFEFD]
#define CH6 XBYTE[0xFEFE]
#define CH7 XBYTE[0xFEFF]
//-----------------------定义寻址的基址--------------------------------------------------------
#define base_Adr 0xFEF8
//-----------------------定义地址指针,指向基址--------------------------------------------------------
unsigned char xdata *CH_base_Adr = base_Adr;
//--------------------------------------------------------------------------------------------------
// 函数名称: delay
// 入口参数: N
// 函数功能:延时子程序,实现(16*N+24)us的延时
// 系统采用11.0592MHz的时钟时,延时满足要求,其它情况需要改动
//--------------------------------------------------------------------------------------------------
void delay(unsigned int N)
{
int i;
for(i=0;i<N;i++);
}
//--------------------------------------------------------------------------------------------------
// 函数名称:system_init
// 函数功能:系统初始化,初始化中断设置
//--------------------------------------------------------------------------------------------------
void system_init()
{
IT0=1; //设定INT0为边沿触发
EA=1; //
EX0=1; //开放外部中断
}
//------------------------------------------------------------------------------------------------------
// 函数名称 read_oneCH
// 入口函数 CH_num通道号码(0~7)
// 出口函数 返回AD转换的值
// 函数功能 写外部数据存储区
//------------------------------------------------------------------------------------------------------
unsigned char read_oneCH(unsigned char CH_num)
{
unsigned char ADC_data;
*(CH_base_Adr+ CH_num)=0; //选通通道,写入的值任意
delay(0); //延时24us
ADC_data= *( CH_base_Adr+ CH_num); //读出AD转换的值
return(ADC_data);
}
//--------------------------------------------------------------------------------------------------
// 函数名称: INT0_intrupt
// 函数功能: 外部中断0处理程序:依次采集8个通道的电压信号
//--------------------------------------------------------------------------------------------------
void INT0_intrupt() interrupt 0 using 1
{
unsigned char i;
EA=0; //系统中断禁止
for(i=0;i<8;i++)
{
CH_data[i]=read_oneCH(i);
}
EA=1;
}
//------------------------------------------------------------------------------------------------------
// 函数名称 main
// 函数功能 依次采集8个通道的电压信号
//------------------------------------------------------------------------------------------------------
void main()
{
system_init();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -