📄 main.c
字号:
void chushi(void)
{unsigned x=0;
rest();
whdizhi(0x70);
x=rdata(0xe1);
// wdata(0x81,0x00);//cpu call
wdata(0xe1,x|8);//初始化光源频率为50HZ
x=rdata(0xe2);
wdata(0xe2,x|8);//初始化自动色彩调整功能
whdizhi(0x74);
x=rdata(0x80);
//wdata(0x80,x|3);//初始化分类模式
//wdata(5,0xff);//准许颜色分离
whdizhi(0x75);//初始化方式为手动
wdata(0,0);
whdizhi(0x70);
// wdata(0xe3,00);//初始化自动暴光模式
wdata(0xe0,9);
wdata(0xe8,0x00);//初始化为图形颜色识别方式
}
main()
{
asm("int off");
yejingzhan[0]=0;
*P_IOB_Dir=0x00ff;
*P_IOB_Attrib=0x00ff;
*P_IOB_Data=0x00; //初始化B口低8为为同相输出
*P_IOA_Dir=0x9; //0 4
*P_IOA_Data=0;
*P_IOA_Attrib=9;
*P_INT_Ctrl=16+8+0x4000;//1KHZ 2HZ /1024
*P_SystemClock=0xe0;
asm("irq on");
*P_Watchdog_Clear=0x01;
xianshizhuangtai(12);//设置显示打开和状态
xianshizhuangtai(12);//设置显示打开和状态
chushi();
xianshizhuangtai(12);//设置显示打开和状态
xianshizhuangtai(12);//设置显示打开和状态
for(;;)
{
*P_Watchdog_Clear=0x01;
}
}
//*******************************************************************//
//Interrupt Service Routine For C language
//*******************************************************************//
#include"SPCE061A.h"
void BREAK(void) __attribute__ ((ISR));
void BREAK(void)
{
}
void FIQ(void) __attribute__ ((ISR));
void FIQ(void)
{
}
void IRQ0(void) __attribute__ ((ISR));
void IRQ0(void) //fost/1024
{
//==========================================================================液晶显示的数据发送部分程序
dsf8+=1;
if((kaishi==0)&&(yejingzhan[0]>0)&&(wancheng==1)&&(dsf8>2)) //数据栈操作
{ //asm("int off");//缓冲栈操作的时候禁止中断
data3=yejingzhan[1]; //数据出栈
wancheng=0;
yejingzhan[0]-=1; //栈地址减一
for(dsf8=1;dsf8<69;dsf8++) //栈下落一个单位
yejingzhan[dsf8]=yejingzhan[dsf8+1];
dsf8=0;
//asm("irq on");
}
if (wancheng==0)
{
switch(kaishi) //数据发送操作
{
case 0: {cs(1); sclk(0); std(1); } break; //1
case 1: {cs(1); sclk(1); }break;
case 2: {cs(1); sclk(0); std(1); } break;//2
case 3: {cs(1); sclk(1); } break;
case 4: {cs(1); sclk(0); std(1); } break;//3
case 5:{cs(1); sclk(1); } break;
case 6: {cs(1); sclk(0); std(1); } break;//4
case 7: {cs(1); sclk(1); } break;
case 8: {cs(1); sclk(0); std(1); }break;//5
case 9: {cs(1); sclk(1); }break;
case 10:{cs(1); sclk(0); std(data3>>9);}break;//6 rw
case 11:{cs(1); sclk(1); }break;
case 12:{cs(1); sclk(0); std(data3>>8&1);}break;//7 rs
case 13:{cs(1); sclk(1); }break;
case 14:{cs(1); sclk(0); std(0);}break;//8 0
case 15:{cs(1); sclk(1);}break;
case 16:{cs(1); sclk(0); std(data3>>7&1);}break;//9 bit7
case 17:{cs(1); sclk(1); }break;
case 18:{cs(1); sclk(0); std(data3>>6&1);}break;//10 bit6
case 19:{cs(1); sclk(1); }break;
case 20:{cs(1); sclk(0); std(data3>>5&1);}break;//11 bit5
case 21:{cs(1); sclk(1); }break;
case 22:{cs(1); sclk(0); std(data3>>4&1);}break;//12 bit4
case 23:{cs(1); sclk(1); }break;
case 24:{cs(1); sclk(0); std(0);}break;//13
case 25:{cs(1); sclk(1);}break;
case 26:{cs(1); sclk(0); std(0);}break;//14
case 27:{cs(1); sclk(1); }break;
case 28:{cs(1); sclk(0); std(0);}break;//15
case 29:{cs(1); sclk(1);}break;
case 30:{cs(1); sclk(0); std(0);}break;//16
case 31:{cs(1); sclk(1); }break;
case 32:{cs(1); sclk(0); std(data3>>3&1);}break;//17
case 33:{cs(1); sclk(1);}break;
case 34:{cs(1); sclk(0); std(data3>>2&1);}break;//18
case 35:{cs(1); sclk(1); }break;
case 36:{cs(1); sclk(0); std(data3>>1&1);}break;//19
case 37:{cs(1); sclk(1); }break;
case 38:{cs(1); sclk(0); std(data3&1);}break;//20
case 39:{cs(1); sclk(1); }break;
case 40:{cs(1); sclk(0); std(0);}break;//21
case 41:{cs(1); sclk(1);}break;
case 42:{cs(1); sclk(0); std(0);}break; //22
case 43:{cs(1); sclk(1);}break;
case 44:{cs(1); sclk(0); std(0);}break;//23
case 45:{cs(1); sclk(1); }break;
case 46:{cs(1); sclk(0); std(0);}break;//24
case 47:{cs(1); sclk(1);}break;
case 48:{cs(0); sclk(0); std(0);}break;
case 49:;break;
case 50:;break;
default : kaishi=-1,wancheng=1;
}
kaishi+=1;
}
//==========================================================================液晶显示的数据发送部分程序
*P_INT_Clear|=0x4000;
}
void IRQ1(void) __attribute__ ((ISR));
void IRQ1(void)
{
}
void IRQ2(void) __attribute__ ((ISR));
void IRQ2(void)
{
}
void IRQ3(void) __attribute__ ((ISR));
void IRQ3(void)
{
}
void IRQ4(void) __attribute__ ((ISR));
void IRQ4(void)
{
//1KHZ
if(resttem<100)resttem+=1;//传感器超时信号
*P_INT_Clear|=16;//1KHZ rest
}
void bcd(void)
{
x[0]=zz/100;
zz=zz-x[0]*100;
x[1]=zz/10;
zz=zz-x[1]*10;
x[2]=zz;
}
void IRQ5(void) __attribute__ ((ISR));
void IRQ5(void)
{
// xianshizhuangtai(14);//设置显示打开和状态
whdizhi(0x74);
zz=rdata(0x21);
wddramdz(0x80);
whanzi("物");
whanzi("体");
wzifu('1');
wzifu(0);
whanzi("颜");
whanzi("色");
whanzi("是");
switch(zz&7)//颜色是分离识别
{
case 1: whanzi("蓝"); break;
case 2: whanzi("绿"); break;
case 4: whanzi("红"); break;
case 6: whanzi("黄"); break;
default: whanzi("无");
}
whanzi("色");
wddramdz(0x90);
whanzi("物");
whanzi("体");
wzifu('1');
wzifu(0);
whanzi("形");
whanzi("状");
whanzi("是");
switch(zz&112)//物体形状的分离和识别
{
case 0: {whanzi("没");whanzi("有");} break;
case 16: {whanzi("三");whanzi("角");} break;
case 32: {whanzi("圆"); whanzi("形");}break;
case 48: {whanzi("正");whanzi("方");}break;
case 64: {whanzi("长");whanzi("方");} break;
case 80: {whanzi("五");whanzi("角");} break;
default: whanzi("无");
}
wddramdz(0x8e);
zz=rdata(0x10);
bcd();
wzifu(x[0]+48);
wzifu(x[1]+48);
wzifu(x[2]+48);
wzifu(0);
/*
zz=rdata(0x47);
wddramdz(0x88);
whanzi("物");
whanzi("体");
wzifu('2');
wzifu(0);
whanzi("颜");
whanzi("色");
whanzi("是");
switch(zz&7)//颜色是分离识别
{
case 1: whanzi("蓝"); break;
case 2: whanzi("绿"); break;
case 4: whanzi("红"); break;
case 6: whanzi("黄"); break;
default: whanzi("无");
}
whanzi("色");
wddramdz(0x98);
whanzi("物");
whanzi("体");
wzifu('2');
wzifu(0);
whanzi("形");
whanzi("状");
whanzi("是");
switch(zz&112)//物体形状的分离和识别
{
case 0: {whanzi("没");whanzi("有");} break;
case 16: {whanzi("三");whanzi("角");} break;
case 32: {whanzi("圆"); whanzi("形");}break;
case 48: {whanzi("正");whanzi("方");;}break;
case 64: {whanzi("长");whanzi("方");} break;
case 80: {whanzi("五");whanzi("角");} break;
default: whanzi("无");
}
*/
wddramdz(0x88);
zz=rdata(0x22);
bcd();
wzifu(x[0]+48);
wzifu(x[1]+48);
wzifu(x[2]+48);
wzifu(0);
zz=rdata(0x23);
bcd();
wzifu(x[0]+48);
wzifu(x[1]+48);
wzifu(x[2]+48);
wzifu(0);
zz=rdata(0x24);
bcd();
wzifu(x[0]+48);
wzifu(x[1]+48);
wzifu(x[2]+48);
wzifu(0);
wddramdz(0x98);
zz=rdata(0x25);
bcd();
wzifu(x[0]+48);
wzifu(x[1]+48);
wzifu(x[2]+48);
wzifu(0);
zz=rdata(0x26);
bcd();
wzifu(x[0]+48);
wzifu(x[1]+48);
wzifu(x[2]+48);
wzifu(0);
zz=rdata(0x27);
bcd();
wzifu(x[0]+48);
wzifu(x[1]+48);
wzifu(x[2]+48);
wzifu(0);
*P_INT_Clear|=8;//4HZ rest
}
void IRQ6(void) __attribute__ ((ISR));
void IRQ6(void)
{
}
void IRQ7(void) __attribute__ ((ISR));
void IRQ7(void)
{
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -