?? 測(cè)試.c
字號(hào):
#include <ht46r54.h>
#define uchar unsigned char
#define uint unsigned int
//延時(shí)程序;
void delay_us(int t)
{
do
t--;
while(t>1);
}
void delay_ms(unsigned long int t)
{
while(t!=0)
{
delay_us(1000);
t--;
}
}
void F7400() //2輸入四與非門(mén)
{
_pac=0xdb;
_pbc=0xb7;
_pa=0xff;
_pb=0xff;
while(_pb0==0)
{
_pa5=!(_pa6&&_pa7);
_pa2=!(_pa3&&_pa4);
_pb3=!(_pb1&&_pb2);
_pb6=!(_pb4&&_pb5);
}
}
void F7402() //2輸入四或非門(mén)
{
_pac=0x6f;
_pbc=0xed;
_pa=0xff;
_pb=0xff;
while(_pb0==0)
{
_pa7=!(_pa5||_pa6);
_pa4=!(_pa2||_pa3);
_pb1=!(_pb2||_pb3);
_pb4=!(_pb5||_pb6);
}
}
void F7404() //六反相器
{
_pac=0xab;
_pbc=0xab;
_pa=0xff;
_pb=0xff;
while(_pb0==0)
{
_pa6=!_pa7;
_pa4=!_pa5;
_pa2=!_pa3;
_pb2=!_pb1;
_pb4=!_pb3;
_pb6=!_pb5;
}
}
void F7408() //2輸入四與門(mén)
{
_pac=0xdb;
_pbc=0xb7;
_pa=0xff;
_pb=0xff;
while(_pb0==0)
{
_pa5=_pa6&&_pa7;
_pa2=_pa3&&_pa4;
_pb3=_pb1&&_pb2;
_pb6=_pb4&&_pb5;
}
}
void F7410() //3輸入端3與非門(mén)
{
_pac=0xfb;
_pbc=0xbb;
_pa=0xff;
_pb=0xff;
while(_pb0==0)
{
_pa2=!(_pa3&&_pa4&&_pa5);
_pb2=!(_pb1&&_pa6&&_pa7);
_pb6=!(_pb3&&_pb4&&_pb5);
}
}
void F7411() //3輸入端3與門(mén)
{
_pac=0xfb;
_pbc=0xbb;
_pa=0xff;
_pb=0xff;
while(_pb0==0)
{
_pa2=_pa3&&_pa4&&_pa5;
_pb2=_pb1&&_pa6&&_pa7;
_pb6=_pb3&&_pb4&&_pb5;
}
}
void F7420() //4輸入雙與非門(mén)
{
_pac=0xfb;
_pbc=0xbf;
_pa=0xff;
_pb=0xff;
while(_pb0==0)
{
_pa2=!(_pa3&&_pa4&&_pa6&&_pa7);
_pb6=!(_pb1&&_pb2&&_pb4&&_pb5);
}
}
void F7421() //4輸入雙與門(mén)
{
_pac=0xfb;
_pbc=0xbf;
_pa=0xff;
_pb=0xff;
while(_pb0==0)
{
_pa2=_pa3&&_pa4&&_pa6&&_pa7;
_pb6=_pb1&&_pb2&&_pb4&&_pb5;
}
}
void F7427() //3輸入3或非門(mén)
{
_pac=0xfb;
_pbc=0xbb;
_pa=0xff;
_pb=0xff;
while(_pb0==0)
{
_pb2=!(_pb1||_pa6||_pa7);
_pa2=!(_pa3||_pa4||_pa5);
_pb6=!(_pb3||_pb4||_pb5);
}
}
void F7430() //與輸入與非門(mén)
{
_pac=0xff;
_pbc=0xbf;
_pa=0xff;
_pb=0xff;
while(_pb0==0)
{
_pb6=!(_pa2&&_pa3&&_pa4&&_pa5&&_pa6&&_pa7&&_pb2&&_pb3);
}
}
void F7432() //2輸入4或門(mén)
{
_pac=0xdb;
_pbc=0xb7;
_pa=0xff;
_pb=0xff;
while(_pb0==0)
{
_pa5=_pa6||_pa7;
_pa2=_pa3||_pa4;
_pb3=_pb1||_pb2;
_pb6=_pb4||_pb5;
}
}
void F74138()
{
_pac=0x00;
_pbc=0xff;
_pa=0xff;
_pb=0xff;
while(_pb0==0)
{
_pa=~(1<<(_pb>>5));
}
}
void main()
{// I/O口初始化;
uint key,x;
char i,j,y;
i=0;
j=0;
_pac=0xff; //pa為輸入口;
_pbc=0xff;
_pcc=0x00;
_pa=0xff; //pa口置1;
_pb=0xff; //pb口復(fù)初值0;
_pc=0xff;
while(1)
{
while(_pb0!=0)
{
_pc|=0x10;
while(x==key){key=_pb<<8|_pa;if(_pb0==0){break;}}
x=key;
delay_ms(200);
switch(key)
{
case 0xff7f:i--;if(i<0){i=3;}
_pc=0x10|(j*4+i);
break;//上
case 0xffbf:i++;if(i>3){i=0;}
_pc=0x10|(j*4+i);
break;//下
case 0xffdf:j--;if(j<0){j=2;}
_pc=0x10|(j*4+i);
break;//左
case 0xffef:j++;if(j>2){j=0;}
_pc=0x10|(j*4+i);
break;//右
//case 0xfff7:_pc=0x0f&(j*4+i);break;//確定
//case 0xfffb:break;//返回
break;
}
}
_pc&=0x0f;
y=j*4+i;
switch(y)
{
case 0:F7400();break;
case 1:F7402();break;
case 2:F7404();break;
case 3:F7408();break;
case 4:F7410();break;
case 5:F7411();break;
case 6:F7420();break;
case 7:F7421();break;
case 8:F7427();break;
case 9:F7430();break;
case 10:F7432();break;
case 11:F74138();break;
break;
}
_pac=0xff; //pa為輸入口;
_pbc=0xff;
_pa=0xff; //pa口置1;
_pb=0xff; //pb口復(fù)初值0;
}
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -