#include<regx52.h>
#include<intrins.h>
#include<rtx51tny.h>
#include "string.h"
#define uchar unsigned char
#define uint unsigned int
uchar gs=0,n,houdu=0;
bit flag=0;
uchar keynum;
void delay(uint i){while(i--);}
sbit in0=P1^0;sbit in1=P1^1;sbit in2=P1^2;sbit in3=P1^3;
sbit in4=P1^4;sbit in5=P1^5;sbit in6=P1^6;sbit in7=P1^7;
sbit k1=P2^0; sbit k2=P2^1; sbit k3=P2^2; sbit k4=P2^3;sbit k5=P2^4;
sbit col0=P3^0;sbit col1=P3^1;sbit col2=P3^2;
sbit row0=P3^4;sbit row1=P3^5;sbit col3=P3^3;
#define zuo k1=0;k2=1
#define you k1=1;k2=0
#define stop k2=k2=1
#define shang k5=1
#define xia k5=0
#define jia k3=0;k4=1
#define song k3=1;k4=0
extern uchar display(uchar *buf);
uchar key_get()
{
uchar k=' ';
col0=col1=col2=col3=1;
row0=0;k=col0==0?'+':col1==0?'-':col2==0?'h':col3==0?'m':k;row0=1;
row1=0;k=col0==0?'r':k;row1=1;
return k;
}
void wuliao_task() _task_ 2 //物料搬運部分
{
uchar n=0,i,houdu;
while(1)
{
switch(n)
{
case 0:
if(in2){zuo;}
else stop;
n++;
break;
case 1:
if(in5==0)song;
n++;
case 2:
if(in7==0)
{
while(in0==1)you;
break;
}
n++;
case 3:
if(in4)xia;
break;
n++;
case 4:
if(in5)jia;
break;
n++;
case 5:
if(in3)shang;
break;
n++;
case 6:
for(i=0;i<houdu;i++)
{
if(in2)zuo;
if(in0)you;
}
}
os_switch_task();
}
}
void main1_task() _task_ 0
{
os_create_task(1);
os_create_task(2);
while(1)
{
keynum=key_get();
if(' '!=key_get()&flag==0)
{
delay(150);
if(' '!=key_get())
{
flag=1;
keynum=key_get();
if(keynum=='+'&&gs==1)houdu++;
if(keynum=='-'&&gs==1)houdu--;
if(keynum=='s')
{
if(gs==0)gs=1;
}
if(keynum=='m')
{
if(gs==0||gs==1)gs=2;
}
if(keynum=='r')
{
if(gs==1||gs==2)
{
gs=3;
n=0;
}
}
}
}
}
}
顯示部分
#include<regx52.h>
#include<intrins.h>
#include<rtx51tny.h>
#include<string.h>
#define uchar unsigned char
#define uint unsigned int
#define LED P0
sbit cs1=P2^5;sbit cs2=P2^6;sbit wr=P2^7;
extern delay(uint i);
uchar code tab_index[]="AB0123456789DLE ";
uchar code table[]={0x88,0x83,0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xa1,0xc7,0x86,0xff};
extern uchar gs,n,houdu;
extern bit flag;
uchar buf[8];
void str(uchar c,uchar *s)
{
uchar i;
for(i=0;s[i]!=0&&(c+i)<8;i++)
buf[c+i]=strpos(tab_index,s[i]);
}
void display() //顯示函數
{
uchar i,j=0x7f;
for(i=0;i<8;i++)
{
cs1=0;cs2=1;
LED=table[buf[i]];wr=1;wr=0;
cs1=1;cs2=0;
LED=j;wr=1;wr=0;
j=_cror_(j,1);
delay(100);
cs1=cs2=0;
LED=0xff;wr=1;wr=0;
}
}
void dis_task() _task_ 1
{
while(1)
{
switch(gs)
{
case 0:
str(0," 1DLE");
break;
case 1:
str(0," ");
buf[6]=houdu;
break;
case 2:
str(0," ");
buf[6]=flag;
break;
case 3:
str(0,"rUn ");
buf[6]=houdu;
buf[7]=flag;
break;
}
display();
os_switch_task();
}
}
|