📄 llg95.c
字号:
#include "2407CD.h"
#include "bianliang.h"
#include "math.h"
int i,k,test1;
void main ()
{
unsigned int i,j,k,t,ch;
int uptr;
initdsp();
asm(" clrc INTM ");
DingzhipingKL();
test1=0;
KouLingPingYX();
test1=0;
KouLingPing();
test1=0;
}
void interrupt nothing()
{
return;
}
void initdsp()
{
asm(" setc INTM "); /* 禁止所有中断 */
asm(" setc SXM " ); //符号位扩展有效
asm(" clrc OVM " ); //累加器中结果正常溢出
asm(" clrc CNF " ); // B0被配置为数据存储空间
SCSR1 = 0x00fd; //0x00cd
WDCR=0x06f; // 使能看门狗
kick_dog(); // 看门狗程序
WSGR=0xfe00; // 三总线速度最快
IMR=0x0016; //INT1,INT2,INT5
IFR=0x0ffff; //清除全部中断标志
/*IO口配置*/
MCRA=0x3FC3;
MCRB=0xfe00;
MCRC=0x0000;
PADATDIR=0xff00;
PBDATDIR=0xff00;
PCDATDIR=0x00ff;
PEDATDIR=0x00ff; //keyboard
PFDATDIR=0xff00; //iopf2,iopf1为输出, 且输出为零
/* 定时器1采样中断(每周波36) 定时器2-2ms周期中断 初始化 */
EVAIFRA = 0xFFFF;
EVAIFRB = 0xFFFF;
T1PR = 0x500;
T2PR = 0x1200;
T1CNT = 0;
T2CNT = 0x480;
T2CON = 0x148c;
T1CON = 0x144c;
EVAIMRA = 0x0080;
EVAIMRB = 0x0001;
/* 液晶初始化 */
wcom(0x30);
wcom(0x30);
wcom(0x30);
wcom(0x08);
wcom(0x01);
wcom(0x06);
wcom(0x0c);
}
void delayms(uint v)
{
uint j;
for(j=v;j>0;j--)
{
asm( " nop " );//while(v!=0)v--;
}
}
void delay(unsigned int n)
{
unsigned int p,j;
for(j=n;j>0;j--)//while(n-->0)
{ for(p=1;p<2;p++)
{
asm( " nop " );
}
}
}
void check_busy()
{
int yjflag=0;
PADATDIR=0x0FF00;//RS=0;
PBDATDIR=0xFF80;//RRW=1;
PCDATDIR=0x00ff;
do
{
PBDATDIR|=0X0040;
yjflag=PCDATDIR&0x80;
PBDATDIR&=0x0FFBF;//P1=0xff;P1=ACC;E=1;delayms(3);E=0;
}
while(yjflag==0x80);//while(BF==1);
}
void wcom(unsigned int C)
{
check_busy();
PADATDIR=0xff00;
PCDATDIR=0xff00|C;
PBDATDIR=0xff40;
PBDATDIR&=0x0FFBF;//RS=0;RRW=0;P1=C;E=1;E=0;
}
void wdata(unsigned int D)
{
check_busy();
PADATDIR=0X0FF04;
PCDATDIR=0xff00|D;
PBDATDIR=0xff40;
PBDATDIR&=0X0FFBF;//RS=1;RRW=0;P1=D;E=1;E=0;
}
void ADSOC()
{
T4CON=T4CON|0x40;
}
void delays(void)
{
while(acc<108);
sampflag=1;
return;
}
void KouLingPing()
{
wcom(0x01);
for(i=0;i<6;i++)
{
wr_cnchar(KLPJ_site1[i],KLPJ_hazi[2*i],KLPJ_hazi[2*i+1]);
}
for(i=0;i<6;i++)
{
wr_cnchar(KLPX_site1[i],KLPX_hazi[2*i],KLPX_hazi[2*i+1]);
}
for(i=3;i>=0;i--)
{
wr_char(KLPX_site2[i],KLPX_data[i]);
}
for(i=3;i>=0;i--)
{
wr_char(KLPJ_site2[i],KLPJ_data[i]);
}
wcom(0x0f);//开游标
cursor_pw=0;
}
void KouLingPingYX()
{
dispzkII(0x1,0xd0,0xc2); /* 新 */
dispzkII(0x2,0xbf,0xda); /* 口 */
dispzkII(0x3,0xc1,0xee); /* 令*/
dispzkII(0x4,0xd3,0xd0); /* 有*/
dispzkII(0x5,0xd0,0xa6); /* 效*/
wr_char(0x96,0x3f); /*?*/
wcom(0x0f); /*开游标*/
}
void DingzhipingKL()
{
wcom(0x01);
for(i=0;i<5;i++)
{
wr_cnchar(DZPKL_site1[i],DZPKL_hazi[2*i],DZPKL_hazi[2*i+1]);
}
for(i=3;i>=0;i--)
{
wr_char(DZPKL_site2[i],DZPKL_data[i]);
}
wcom(0x0f);/*开游标,光标 */
cursor_pw=0;
}
void dispzkII(unsigned int offset,unsigned int m,unsigned int n )
{
unsigned int w;
wcom(0x90+offset);
wdata(m);
wdata(n);
}
void kick_dog(void)
{
WDKEY = 0x5555;
WDKEY = 0xaaaa;
}
void initial()
{
asm(" setc INTM "); /* 禁止所有中断 */
asm(" clrc sxm "); /* 抑制符号位扩展 */
asm(" clrc ovm "); /* 累加器中结果正常溢出 */
asm(" clrc CNF "); /* B0被配置为数据存储空间 */
SCSR1 = 0x00fd; /* CLKOUT=4*CLKIN */
WDCR=0x00E8; /* 不使能看门狗,因为SCSR2中的WDOVERRIDE 即WD保护位复位后的缺省值为
1,故可用软件禁止看门狗 */
IMR=0x0016;
IFR=0x0FFFF;
/* 定时器1采样中断(每周波36) 定时器2-5ms周期中断 初始化 */
EVAIFRA = 0xFFFF;
EVAIFRB = 0xFFFF;
T1PR = 0x500;
T2PR = 0x2d00;
T1CNT = 0;
T2CNT = 0x480;
T2CON = 0x148c;
T1CON = 0x144c;
EVAIMRA = 0x0080;
EVAIMRB = 0x0001;
wcom(0x30);
//delayms(19);
wcom(0x30);
//delayms(19);
wcom(0x30);
//delayms(19);
wcom(0x08);
//delayms(9);
wcom(0x01);
//delay(2);
wcom(0x06);
//delayms(9);
wcom(0x0c);
//delayms(9);
}
void wr_cnchar(unsigned int linerow, unsigned int character1,unsigned int character2)
{
int i;
wcom(linerow);
//wcom(add+offset);
wdata(character1);
wdata(character2);
}
void wr_char(unsigned int linerow,unsigned int character1)
{
int i;
wcom(linerow);
wdata(character1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -