?? ad.c
字號:
#include "register.h"
#include "sintab.h"
#include "math.h"
int ADRESULT[1080]; //定義一個數組用于保存AD轉換的結果
float array[1080];
int flag;
volatile unsigned int *tmpj;
int tmpk;
//屏蔽中斷子程序
void inline disable()
{
asm(" setc INTM");
}
//開關中斷子程序
void inline enable()
{
asm(" clrc INTM");
}
//系統初始化子程序
void initial()
{
asm(" setc SXM"); //符號位擴展有效
asm(" clrc OVM"); //累加器中結果正常溢出
asm(" clrc CNF"); //B0被配置為數據存儲空間
*SCSR1=0x82FF; //CLKIN=16 M,CLKOUT=2*CLKIN=32 M
*WDCR=0x0E8; //不使能看門狗
*IMR=0x0011; //INT1,INT5中斷
*IFR=0xFFFF; //清楚全部中斷標志,寫1清0
WSGR=0X00;
}
void scirec()
{
*SCICCR=0X7; //1個停止位,不使能奇偶校驗,空閑線多處理器模式,8位字符
*SCICTL1=0X13; //#0013H 使能接收和發送,SLEEP=0 禁止休眠方式 , 禁止接
//收錯誤中斷,TXWAKE=0 即沒有選定的發送特征
*SCICTL2=0X3; //使能接收中斷
*SCIHBAUD=0X1;
*SCILBAUD=0Xa0; //波特率=9600B/S
*SCICTL1=0X33; //使SCI脫離復位狀態
*SCIPRI=0X60; //SCI中斷(接收和發送中斷)為低優先級中斷
*PADATDIR=0x100;
*MCRA=*MCRA|0X0003;
}
//AD初始化子程序
void ADINIT()
{
*T4CNT=0x0000; //計數器清零
*T4CON=0xc800; //T4為連續增減計數模式,128分頻,且選用內部時鐘源
*T4PR=0x0400; //設置T4的周期寄存器
*GPTCONB=0x400; //T4周期中斷標志觸發AD轉換
*EVBIFRB=0x0FFFF; //清除EVB中斷標志,“寫1清0”
*ADCTRL1=0X10;
*ADCTRL2=0Xc400;
*MAXCONV=0X00;
*CHSELSEQ1=0X3;
}
//AD中斷服務子程序
void interrupt adint()
{
static int adptr=0;
int tmpi;
asm(" clrc SXM");
tmpj=RESULT0;
ADRESULT[adptr]=*tmpj>>6;
adptr++;
if(adptr>=1080) {
adptr=0;
if(flag==0) {
for(tmpi=0;tmpi<1080;tmpi++) {
array[tmpi]=ADRESULT[tmpi];
}
}
}
*ADCTRL2=*ADCTRL2|0X4200;
flag=1;
enable();
// return;
}
void uartrec()
{
static int tmpchar;
int tmpi;
tmpi=*SCIRXBUF;
if (reccommand==1)return;
if(tmpi==0x57) {
tmpchar=0;
}
receive[tmpchar++]=tmpi;
if(tmpi==0x0d) {
reccommand=1;
}
*IFR=0x0010;
enable();
// return;
}
void uartsent()
{
if(flag==1) {
*SCITXBUF=array[tmpk++];
if(tmpk>strlen(array)){tmpk=0;flag=0;}
}
*IFR=0X0010;
enable();
}
void interrupt uarttr()
{
switch(*PIVR)
{
case 6 : uartrec();
case 7 : uartsent();
}
}
//該中斷服務程序主要為了防止干擾,不做任何其他操作
void interrupt nothing()
{
return; //中斷直接返回
}
main()
{
OUTno=0;
OUTno1=0;
fac=0;
*SCITXBUF=array[0];
disable();
initial();
ADINIT();
scirec();
enable();
*T4CON=*T4CON|0X0040;
while(1)
{
;
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -