📄 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 + -