📄 lcd.c
字号:
/*********************************************************************/
//* 说明:
//* 功能: 2407初始化
//* 调用:
//* 输入:
//* 返回值: 无
/*********************************************************************/
void initial()
{
asm(" setc SXM");
asm(" clrc OVM");
asm(" clrc CNF");
*SCSR1=0x81FE;//4倍频
*WDCR=0x0E8;
WSGR=0x0000;
*IMR=0x0005;
*IFR=0xFFFF;
*MCRA=*MCRA&0X0000|0x03; // IOPB端口配置为一般的I/O功能
*MCRC=*MCRA&0X03ff; // IOPF2端口和IOPF3~6配置为一般的I/O功能
*PADATDIR=*PADATDIR|0XFF00;
*PBDATDIR=*PBDATDIR|0XFF00; // IOPB端口设置为输出方式
*PFDATDIR=*PFDATDIR|0x0400; // IOPF2端口为输出端口,IOPF3-IOPF6为输入端口
a=1;
}
/*********************************************************************/
//* 说明:
//* 功能: AD初始化子程序
//* 调用:
//* 输入:
//* 返回值: 无
/*********************************************************************/
void ADINIT()
{
int i;
for (i=0;i<128;i++) /* 缓冲区清0 */
ADRESULT[i]=0;
/**EVBIMRB = 0x01; // 使能T4PINT
*EVBIFRB=0x0FFFF; //清除EVB中断标志,“写1清0”
*GPTCONB=0x0400; //T4周期中断标志触发AD转换
*T4CNT=0x0000; //计数器清零
*T4CON=0x170C; //T4为连续增减计数模式,128分频,且选用内部时钟源
*T4PR=0x0BC; //设置T4的周期寄存器/0.08S
// */
/**ADCTRL1=0X10; //采样时间窗口预定标位ACQ PS3~ACQ PS0 为0
//转换时间预定标位CPS为0,AD为启动/停止模式,排
//序器为级连工作方式,且禁止特殊的两种工作模式 */
/* *ADCTRL1= 0x2040; // 设置连续转换模式
*ADCTRL2=0X8404; //可以用EVB的一个事件信号触发AD转换,且用中断模式1
*MAXCONV=0X02;
*CHSELSEQ1=0X3210; */
/**CHSELSEQ2=0X7654;
*CHSELSEQ3=0X08; */
/**CHSELSEQ4=0X0FEDC; */
*T4CNT=0x0000;
*T4CON=0x170C;
*T4PR=0x05F; //300um
/**T4PR=0x0BC; */
*GPTCONB=0x0400;
*EVBIFRB=0x0FFFF;
*ADCTRL1=0X10;
*ADCTRL2=0X8404;
*MAXCONV=0X0f;
*CHSELSEQ1=0X3210;
*CHSELSEQ2=0X7654;
*CHSELSEQ3=0XBA98;
*CHSELSEQ4=0XFEDC;
}
/*********************************************************************/
//* 说明:
//* 功能: LCD初始化
//* 调用:
//* 输入:
//* 返回值: 无
/*********************************************************************/
void init_lcd()
{
/*rst; */
/*psb;*/
wr_lcd(comm,0x0030);//8位并行接口 基本指令
/*delay(80); //72us */
wr_lcd(comm,0x000f); //开启屏幕 光标 闪烁
/*delay(4800); //4.6ms */
wr_lcd(comm,0x0001); //清屏幕 clear
/*delay(4800); //4.6ms*/
wr_lcd(comm,0x0006);
/*delay(80); //72us */
wr_lcd(comm,0x000C);
/*delay(80); //72us */
}
/*********************************************************************/
//* 说明:
//* 功能: SCI初始化
//* 调用:
//* 输入:
//* 返回值: 无
/*********************************************************************/
void sciint()
{
*SCICCR=0x07;
*SCICTL1=0x12;
*SCICTL2=0x01;
*SCIHBAUD=0x02;
*SCILBAUD=0x08; //9600
*SCICTL1=0x32;
*SCIPRI=0x60;
*SCITXBUF=0x00;
}
/*********************************************************************/
//* 说明:
//* 功能: SCI中断服务子程序
//* 调用:
//* 输入:
//* 返回值: 无
/*********************************************************************/
void interrupt uarttr( )
{
/*int k;
uchar key,bt;
static int i=0;
bt=0;
while (!bt)
{
i=0;
key=GetKey();
if(a==1)
{ cc8=bb[i]>>8;
a=0;}
else if(a==0)
{ cc8=bb[i++];
a=1; }
*SCITXBUF=cc8;
if(i>63) i=0;
*IFR=0x0010;
enable();
delay (50);
if(key==5)bt=1;
}
/*return;*/
int k;
uchar key,bt;
static int i=0;
bt=0;
while (!bt)
{
i=0;
key=GetKey();
if(a==1)
{ cc8=ADRESULT[0]>>8;
a=0;}
else if(a==0)
{ cc8=ADRESULT[0];
a=1; }
*SCITXBUF=cc8;
*IFR=0x0010;
enable();
delay (150);
if(key==5)bt=1;
}
}
/*********************************************************************/
//* 说明:
//* 功能: AD屏蔽中断子程序
//* 调用:
//* 输入:
//* 返回值: 无
/*********************************************************************/
void inline disable()
{
asm(" setc INTM ");
}
/*********************************************************************/
//* 说明:
//* 功能: AD开关中断子程序
//* 调用:
//* 输入:
//* 返回值: 无
/*********************************************************************/
void inline enable()
{
asm(" clrc INTM ");
}
/*********************************************************************/
//* 说明:
//* 功能: AD中断
//* 调用:
//* 输入:
//* 返回值: 无
/*********************************************************************/
/*void interrupt T2INT()
{
int flag;
unsigned int Itest;
flag=*EVAIFRB&0x0001;
if(flag!=0x0001)
{
enable();
return;
}
}*/
/*********************************************************************/
//* 说明: 启动AD转换子程序(通过启动定时器4的方式间接启动)
//* 功能:
//* 调用:
//* 输入:
//* 返回值: 无
/*********************************************************************/
void ADSOC()
{
*T4CON=*T4CON|0X0040;
}
/*********************************************************************/
//* 说明:
//* 功能: AD中断服务子程序
//* 调用:
//* 输入:
//* 返回值: 无
/*********************************************************************/
void interrupt adint()
{
int i;
int max,min,sum;
asm(" clrc SXM");
/* s=RESULT0;
cesi=*s>>6;
ADRESULT[q]=cesi;
q++;
if(q>=127)q=0;
for(q=0;q<=8;q++)
{
ADRESULT[q]=*s>>6;
cesi=ADRESULT[q];
}
*ADCTRL2=*ADCTRL2|0X4200; //复位SEQ1,且清除INT FLAG SEQ1 标志“写1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -