?? int2gisr.c
字號(hào):
#include "F2407REGS_c.h"
/*************************************************************************
文件名: interrupt INT2()
日期: 2007年02月8日
公司(作者):
描述和說明: CPU核級(jí)中斷2(INT2)主服務(wù)程序
*************************************************************************/
ioport unsigned port0002; // 定義I/O口地址變量
// 由于I/O空間只有一個(gè)設(shè)備AD7865
// 所以AD7865地址可任意設(shè),現(xiàn)設(shè)為0x0002
#define AD7865_CS port0002 // 定義字符標(biāo)識(shí)AD7865_CS等于I/O口地址0x0002
unsigned int timer1_number=0; // 全局變量,用于定時(shí)器中斷計(jì)數(shù)
signed int AD7865_U; // 存14位AD轉(zhuǎn)換結(jié)果,后變?yōu)?6位數(shù)
signed int U_data_in[320]; // 10個(gè)周波AD采樣數(shù)據(jù)緩沖區(qū),為16位2的補(bǔ)碼
void interrupt INT2()
{
switch(PIVR) // 由外設(shè)中斷向量寄存器PIVR判斷
{ // 由哪個(gè)片內(nèi)外設(shè)事件引起的中斷
case 0x0027: // 定時(shí)器1的0.625ms周期中斷
// 中斷向量為0x0027
T1CNT=0x00; // 定時(shí)器1的計(jì)數(shù)器重新賦0
EVAIFRA=EVAIFRA&0x0080; // 清除定時(shí)器1周期中斷標(biāo)志,
// 否則以后的中斷將被忽略
AD7865_U=AD7865_CS; // 讀AD轉(zhuǎn)換結(jié)果,14位2的補(bǔ)碼
AD7865_U=AD7865_U<<2; // 14位2的補(bǔ)碼轉(zhuǎn)變?yōu)?6位2的補(bǔ)碼
U_data_in[timer1_number]=AD7865_U; // 存入AD采樣數(shù)據(jù)緩沖區(qū)
timer1_number++; // 定時(shí)器1中斷次數(shù)加1
if(timer1_number==320)
{
timer1_number=0; // 采10個(gè)周波后,計(jì)數(shù)復(fù)位,重新開始
}
PFDATDIR = PFDATDIR&0xFFEF; // IOPF4輸出低電平,為下次再次輸出高電平作準(zhǔn)備
PFDATDIR=PFDATDIR|0x1010; // 為再次啟動(dòng)AD,輸出高電平 (IOPF4) CONVST=1,
// 形成啟動(dòng)AD所需的上升沿
break; // 返回
default: // 其它結(jié)果
break; // 返回
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -