?? adcpu.c
字號:
/*************************************************************
*************************************************************/
/************************文件預(yù)處理***************************/
#include "exp3_2407.h"
/*************************************************************/
/********************全局變量定義與初始化*********************/
unsigned int i=0;
unsigned int point[256]; //每周波完成的采樣次數(shù),意思就是采集的交流電壓是mHZ,則在1/m時(shí)間內(nèi)采集的點(diǎn)數(shù)
unsigned int point1[256];
/*************************************************************/
/*******************函數(shù)、子程序聲明與定義********************/
void sys_ini() //系統(tǒng)初始化子程序
{
/*關(guān)總中斷*/
asm(" setc INTM");
/*抑制符號位擴(kuò)展*/
asm(" clrc SXM");
/*累加器中結(jié)果正常溢出*/
asm(" clrc OVM");
/*禁止看門狗*/
* WDCR=0x00E8;
/*配置時(shí)鐘鎖相為4倍頻CLKOUT=4*10M=40M,使能ADC時(shí)鐘*/
* SCSR1=0x0081;
/*io、ram、program都設(shè)為0等待讀寫*/
WSGR=0x0000;
/*清除所有中斷標(biāo)志,"寫1清0"*/
* IFR=0xFFFF;
/*使能cpu中斷1*/
* IMR=0x0001;
}
void adc_ini() //ADC初始化子程序
{
/*仿真器掛起時(shí),完成最后一次ad,連續(xù)運(yùn)行模式
預(yù)定標(biāo)最長,高優(yōu)先級中斷,雙排序模式,禁用其他模式*/
* ADCTRL1=0x2CC0;
/*立即中斷模式,清中斷標(biāo)志*/
* ADCTRL2=0x0602;
/*啟用排序器1,最大轉(zhuǎn)換數(shù)為2*/
* MAXCONV=0x0001;
/*選擇模擬輸入通道為4、5通道*/
* CHSELSEQ1=0x0054;
asm(" clrc INTM"); //開總中斷
}
/*************************************************************/
/*****************中斷服務(wù)子程序聲明與定義********************/
interrupt void nothing() //啞中斷子程序
{
return;
}
interrupt void ad()
{
point[i]=(* RESULT0>>6); //讀出ad結(jié)果
point1[i]=(* RESULT1>>6);
i++;
if(i==256)
{
i=0;
}
* ADCTRL2|=0x0200; //清除ad中斷標(biāo)志
return;
}
/*************************************************************/
/**************************主程序*****************************/
void main(void)
{
sys_ini();
adc_ini();
* ADCTRL2|=0x2000; //軟件啟動(dòng)ad轉(zhuǎn)換
for(;;)
{
}
}
/***************************結(jié)束******************************/
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -